[llvm-commits] CVS: llvm/include/llvm/CodeGen/RegisterScavenging.h

Evan Cheng evan.cheng at apple.com
Tue Feb 27 13:09:28 PST 2007



Changes in directory llvm/include/llvm/CodeGen:

RegisterScavenging.h updated: 1.2 -> 1.3
---
Log message:

RegScavenger interface change to make it more flexible.

---
Diffs of the changes:  (+32 -4)

 RegisterScavenging.h |   36 ++++++++++++++++++++++++++++++++----
 1 files changed, 32 insertions(+), 4 deletions(-)


Index: llvm/include/llvm/CodeGen/RegisterScavenging.h
diff -u llvm/include/llvm/CodeGen/RegisterScavenging.h:1.2 llvm/include/llvm/CodeGen/RegisterScavenging.h:1.3
--- llvm/include/llvm/CodeGen/RegisterScavenging.h:1.2	Mon Feb 26 19:58:48 2007
+++ llvm/include/llvm/CodeGen/RegisterScavenging.h	Tue Feb 27 15:09:11 2007
@@ -27,16 +27,34 @@
 class RegScavenger {
   MachineBasicBlock *MBB;
   MachineBasicBlock::iterator MBBI;
-  bool MBBIInited;
   unsigned NumPhysRegs;
 
+  /// Initialized - All states are initialized and ready to go!
+  bool Initialized;
+
   /// RegStates - The current state of all the physical registers immediately
   /// before MBBI. One bit per physical register. If bit is set that means it's
   /// available, unset means the register is currently being used.
   BitVector RegStates;
 
 public:
-  RegScavenger(MachineBasicBlock *mbb);
+  RegScavenger()
+    : MBB(NULL), Initialized(false) {};
+
+  RegScavenger(MachineBasicBlock *mbb)
+    : MBB(mbb), Initialized(false) {};
+
+  /// Init - Initialize the states.
+  ///
+  void init();
+
+  /// Reset - Discard previous states and re-initialize the states given for
+  /// the specific basic block.
+  void reset(MachineBasicBlock *mbb) {
+    MBB = mbb;
+    clear();
+    init();
+  }
 
   /// forward / backward - Move the internal MBB iterator and update register
   /// states.
@@ -45,8 +63,12 @@
 
   /// forward / backward - Move the internal MBB iterator and update register
   /// states until it has reached but not processed the specific iterator.
-  void forward(MachineBasicBlock::iterator I);
-  void backward(MachineBasicBlock::iterator I);
+  void forward(MachineBasicBlock::iterator I) {
+    while (MBBI != I) forward();
+  }
+  void backward(MachineBasicBlock::iterator I) {
+    while (MBBI != I) backward();
+  }
 
   /// isReserved - Returns true if a register is reserved. It is never "unused".
   bool isReserved(unsigned Reg) const { return ReservedRegs[Reg]; }
@@ -69,10 +91,16 @@
                          bool ExCalleeSaved = false) const;
 
 private:
+  /// clear - Clear states.
+  ///
+  void clear();
+
   /// CalleeSavedrRegs - A bitvector of callee saved registers for the target.
+  ///
   BitVector CalleeSavedRegs;
 
   /// ReservedRegs - A bitvector of reserved registers.
+  ///
   BitVector ReservedRegs;
 };
  






More information about the llvm-commits mailing list