X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=lib%2FTarget%2FX86%2FX86FrameInfo.h;h=fbbde923b9798d4b9a6abb51feccf190c020a2d8;hb=983839609ffa589cda60efaea847eecede77b524;hp=7828e17a7c9804cd402fc562ba584b7038b3f3b2;hpb=33464912237efaa0ed7060829e66b59055bdd48b;p=oota-llvm.git diff --git a/lib/Target/X86/X86FrameInfo.h b/lib/Target/X86/X86FrameInfo.h index 7828e17a7c9..fbbde923b97 100644 --- a/lib/Target/X86/X86FrameInfo.h +++ b/lib/Target/X86/X86FrameInfo.h @@ -19,17 +19,17 @@ namespace llvm { class MCSymbol; + class X86TargetMachine; class X86FrameInfo : public TargetFrameInfo { -protected: + const X86TargetMachine &TM; const X86Subtarget &STI; - public: - explicit X86FrameInfo(const X86Subtarget &sti) + explicit X86FrameInfo(const X86TargetMachine &tm, const X86Subtarget &sti) : TargetFrameInfo(StackGrowsDown, sti.getStackAlignment(), (sti.isTargetWin64() ? -40 : (sti.is64Bit() ? -8 : -4))), - STI(sti) { + TM(tm), STI(sti) { } void emitCalleeSavedFrameMoves(MachineFunction &MF, MCSymbol *Label, @@ -39,6 +39,25 @@ public: /// the function. void emitPrologue(MachineFunction &MF) const; void emitEpilogue(MachineFunction &MF, MachineBasicBlock &MBB) const; + + void processFunctionBeforeCalleeSavedScan(MachineFunction &MF, + RegScavenger *RS = NULL) const; + + bool spillCalleeSavedRegisters(MachineBasicBlock &MBB, + MachineBasicBlock::iterator MI, + const std::vector &CSI, + const TargetRegisterInfo *TRI) const; + + bool restoreCalleeSavedRegisters(MachineBasicBlock &MBB, + MachineBasicBlock::iterator MI, + const std::vector &CSI, + const TargetRegisterInfo *TRI) const; + + bool hasFP(const MachineFunction &MF) const; + bool hasReservedCallFrame(const MachineFunction &MF) const; + + void getInitialFrameState(std::vector &Moves) const; + int getFrameIndexOffset(const MachineFunction &MF, int FI) const; }; } // End llvm namespace