[llvm-commits] CVS: llvm/lib/Target/X86/X86.td X86RegisterInfo.cpp X86RegisterInfo.h

Evan Cheng evan.cheng at apple.com
Wed May 17 17:13:11 PDT 2006



Changes in directory llvm/lib/Target/X86:

X86.td updated: 1.23 -> 1.24
X86RegisterInfo.cpp updated: 1.153 -> 1.154
X86RegisterInfo.h updated: 1.38 -> 1.39
---
Log message:

getCalleeSaveRegs and getCalleeSaveRegClasses are no long TableGen'd.

---
Diffs of the changes:  (+28 -7)

 X86.td              |    3 ---
 X86RegisterInfo.cpp |   16 ++++++++++++++++
 X86RegisterInfo.h   |   16 ++++++++++++----
 3 files changed, 28 insertions(+), 7 deletions(-)


Index: llvm/lib/Target/X86/X86.td
diff -u llvm/lib/Target/X86/X86.td:1.23 llvm/lib/Target/X86/X86.td:1.24
--- llvm/lib/Target/X86/X86.td:1.23	Wed May 17 16:20:27 2006
+++ llvm/lib/Target/X86/X86.td	Wed May 17 19:12:58 2006
@@ -130,9 +130,6 @@
 
 
 def X86 : Target {
-  // Specify the callee saved registers.
-  let CalleeSavedRegisters = [ESI, EDI, EBX, EBP];
-
   // Information about the instructions...
   let InstructionSet = X86InstrInfo;
 


Index: llvm/lib/Target/X86/X86RegisterInfo.cpp
diff -u llvm/lib/Target/X86/X86RegisterInfo.cpp:1.153 llvm/lib/Target/X86/X86RegisterInfo.cpp:1.154
--- llvm/lib/Target/X86/X86RegisterInfo.cpp:1.153	Tue May 16 02:21:53 2006
+++ llvm/lib/Target/X86/X86RegisterInfo.cpp	Wed May 17 19:12:58 2006
@@ -600,6 +600,22 @@
   return NULL;
 }
 
+const unsigned *X86RegisterInfo::getCalleeSaveRegs() const {
+  static const unsigned CalleeSaveRegs[] = {
+    X86::ESI, X86::EDI, X86::EBX, X86::EBP,  0
+  };
+  return CalleeSaveRegs;
+}
+
+const TargetRegisterClass* const*
+X86RegisterInfo::getCalleeSaveRegClasses() const {
+  static const TargetRegisterClass * const CalleeSaveRegClasses[] = {
+    &X86::GR32RegClass, &X86::GR32RegClass,
+    &X86::GR32RegClass, &X86::GR32RegClass,  0
+  };
+  return CalleeSaveRegClasses;
+}
+
 //===----------------------------------------------------------------------===//
 // Stack Frame Processing methods
 //===----------------------------------------------------------------------===//


Index: llvm/lib/Target/X86/X86RegisterInfo.h
diff -u llvm/lib/Target/X86/X86RegisterInfo.h:1.38 llvm/lib/Target/X86/X86RegisterInfo.h:1.39
--- llvm/lib/Target/X86/X86RegisterInfo.h:1.38	Fri May  5 00:40:20 2006
+++ llvm/lib/Target/X86/X86RegisterInfo.h	Wed May 17 19:12:58 2006
@@ -47,10 +47,18 @@
   /// folding and return true, otherwise it should return false.  If it folds
   /// the instruction, it is likely that the MachineInstruction the iterator
   /// references has been changed.
-  virtual MachineInstr* foldMemoryOperand(MachineInstr* MI,
-                                          unsigned OpNum,
-                                          int FrameIndex) const;
-
+  MachineInstr* foldMemoryOperand(MachineInstr* MI,
+                                  unsigned OpNum,
+                                  int FrameIndex) const;
+
+  /// getCalleeSaveRegs - Return a null-terminated list of all of the
+  /// callee-save registers on this target.
+  const unsigned *getCalleeSaveRegs() const;
+
+  /// getCalleeSaveRegClasses - Return a null-terminated list of the preferred
+  /// register classes to spill each callee-saved register with.  The order and
+  /// length of this list match the getCalleeSaveRegs() list.
+  const TargetRegisterClass* const* getCalleeSaveRegClasses() const;
 
   void eliminateCallFramePseudoInstr(MachineFunction &MF,
                                      MachineBasicBlock &MBB,






More information about the llvm-commits mailing list