diff options
author | Evan Cheng <evan.cheng@apple.com> | 2006-09-28 00:07:19 +0000 |
---|---|---|
committer | Evan Cheng <evan.cheng@apple.com> | 2006-09-28 00:07:19 +0000 |
commit | 02569d7355b03155b32c1c0d0e46f6aa957f4802 (patch) | |
tree | 0ea667903ec20054a8c50662776072dbcec2849c | |
parent | 31cefb99431a10ced8660b14c61fc2ad6b172f75 (diff) |
- Added a hook processFunctionBeforeCalleeSaveScn(). This is called by PEI just
before it determines which callee-save registers are to be spilled. This allows
the target to make changes such as forcing certain physical registers to be
spilled.
- Modified comments. It's important to note the order of registers in the array
returns by getCalleeSaveRegs() determines the order of callee save spill code.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30635 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | include/llvm/Target/MRegisterInfo.h | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/include/llvm/Target/MRegisterInfo.h b/include/llvm/Target/MRegisterInfo.h index 6091c46937..a45d53aa3c 100644 --- a/include/llvm/Target/MRegisterInfo.h +++ b/include/llvm/Target/MRegisterInfo.h @@ -283,7 +283,9 @@ public: } /// getCalleeSaveRegs - Return a null-terminated list of all of the - /// callee-save registers on this target. + /// callee-save registers on this target. The register should be in the + /// order of desired callee-save stack frame offset. The first register is + /// closed to the incoming stack pointer if stack grows down, and vice versa. virtual const unsigned* getCalleeSaveRegs() const = 0; /// getCalleeSaveRegClasses - Return a null-terminated list of the preferred @@ -371,12 +373,16 @@ public: assert(0 && "Call Frame Pseudo Instructions do not exist on this target!"); } + /// processFunctionBeforeCalleeSaveScan - This method is called immediately + /// before PrologEpilogInserter scans the physical registers used to determine + /// what callee-save registers should be spilled. This method is optional. + virtual void processFunctionBeforeCalleeSaveScan(MachineFunction &MF) const { + } + /// processFunctionBeforeFrameFinalized - This method is called immediately /// before the specified functions frame layout (MF.getFrameInfo()) is /// finalized. Once the frame is finalized, MO_FrameIndex operands are - /// replaced with direct constants. This method is optional. The return value - /// is the number of instructions added to (negative if removed from) the - /// basic block + /// replaced with direct constants. This method is optional. /// virtual void processFunctionBeforeFrameFinalized(MachineFunction &MF) const { } |