Changes in directory llvm/include/llvm/Target:

MRegisterInfo.h updated: 1.84 -> 1.85
---
Log message:

Add virtual method spillCalleeSaveRegisters() and restoreCalleeSaveRegisters()
to MRegisterInfo. These allow the target to issue instructions to spill and
restore callee saved registers in case where individual stores / loads aren't
the correct / profitable choice.

---
Diffs of the changes:  (+21 -0)

 MRegisterInfo.h |   21 +++++++++++++++++++++
 1 files changed, 21 insertions(+)


Index: llvm/include/llvm/Target/MRegisterInfo.h
diff -u llvm/include/llvm/Target/MRegisterInfo.h:1.84 
llvm/include/llvm/Target/MRegisterInfo.h:1.85
--- llvm/include/llvm/Target/MRegisterInfo.h:1.84       Wed Sep 27 19:07:19 2006
+++ llvm/include/llvm/Target/MRegisterInfo.h    Tue Jan  2 14:55:17 2007
@@ -29,6 +29,7 @@
 class MachineLocation;
 class MachineMove;
 class TargetRegisterClass;
+class CalleeSavedInfo;
 
 /// TargetRegisterDesc - This record contains all of the information known 
about
 /// a particular register.  The AliasSet field (if not null) contains a pointer
@@ -319,6 +320,26 @@
   // immediates and memory.  FIXME: Move these to TargetInstrInfo.h.
   //
 
+  /// spillCalleeSaveRegisters - Issues instruction(s) to spill all callee 
saved
+  /// registers and returns true if it isn't possible / profitable to do so by
+  /// issuing a series of store instructions via storeRegToStackSlot(). Returns
+  /// false otherwise.
+  virtual bool spillCalleeSaveRegisters(MachineBasicBlock &MBB,
+                                        MachineBasicBlock::iterator MI,
+                                const std::vector<CalleeSavedInfo> &CSI) const 
{
+    return false;
+  }
+
+  /// restoreCalleeSaveRegisters - Issues instruction(s) to restore all callee
+  /// saved registers and returns true if it isn't possible / profitable to do
+  /// so by issuing a series of load instructions via loadRegToStackSlot().
+  /// Returns false otherwise.
+  virtual bool restoreCalleeSaveRegisters(MachineBasicBlock &MBB,
+                                          MachineBasicBlock::iterator MI,
+                                const std::vector<CalleeSavedInfo> &CSI) const 
{
+    return false;
+  }
+
   virtual void storeRegToStackSlot(MachineBasicBlock &MBB,
                                    MachineBasicBlock::iterator MI,
                                    unsigned SrcReg, int FrameIndex,



_______________________________________________
llvm-commits mailing list
llvm-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits

Reply via email to