//=======- X86FrameLowering.cpp - X86 Frame Information --------*- C++ -*-====////// The LLVM Compiler Infrastructure//// This file is distributed under the University of Illinois Open Source// License. See LICENSE.TXT for details.////===----------------------------------------------------------------------===////// This file contains the X86 implementation of TargetFrameLowering class.////===----------------------------------------------------------------------===//#include"X86FrameLowering.h"#include"X86InstrBuilder.h"#include"X86InstrInfo.h"#include"X86MachineFunctionInfo.h"#include"X86Subtarget.h"#include"X86TargetMachine.h"#include"llvm/Function.h"#include"llvm/CodeGen/MachineFrameInfo.h"#include"llvm/CodeGen/MachineFunction.h"#include"llvm/CodeGen/MachineInstrBuilder.h"#include"llvm/CodeGen/MachineModuleInfo.h"#include"llvm/CodeGen/MachineRegisterInfo.h"#include"llvm/MC/MCAsmInfo.h"#include"llvm/MC/MCSymbol.h"#include"llvm/Target/TargetData.h"#include"llvm/Target/TargetOptions.h"#include"llvm/Support/CommandLine.h"#include"llvm/ADT/SmallSet.h"usingnamespacellvm;// FIXME: completely move here.externcl::opt<bool>ForceStackAlign;boolX86FrameLowering::hasReservedCallFrame(constMachineFunction&MF)const{return!MF.getFrameInfo()->hasVarSizedObjects();}/// hasFP - Return true if the specified function should have a dedicated frame/// pointer register. This is true if the function has variable sized allocas/// or if frame pointer elimination is disabled.boolX86FrameLowering::hasFP(constMachineFunction&MF)const{constMachineFrameInfo*