X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=lib%2FTarget%2FX86%2FX86FrameInfo.h;h=fbbde923b9798d4b9a6abb51feccf190c020a2d8;hb=228232b2821f8e7f9c0b874ad733414bda183db6;hp=433d965605cf80379ed7288a484619500874ecb8;hpb=d0c38176690e9602a93a20a43f1bd084564a8116;p=oota-llvm.git diff --git a/lib/Target/X86/X86FrameInfo.h b/lib/Target/X86/X86FrameInfo.h index 433d965605c..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, @@ -40,9 +40,24 @@ public: 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