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

Evan Cheng evan.cheng at apple.com
Wed Apr 25 15:10:34 PDT 2007



Changes in directory llvm/include/llvm/CodeGen:

MachineFunction.h updated: 1.65 -> 1.66
---
Log message:

Change UsedPhysRegs from array bool to BitVector to save some space. Setting / getting its states now go through MachineFunction.

---
Diffs of the changes:  (+12 -20)

 MachineFunction.h |   32 ++++++++++++--------------------
 1 files changed, 12 insertions(+), 20 deletions(-)


Index: llvm/include/llvm/CodeGen/MachineFunction.h
diff -u llvm/include/llvm/CodeGen/MachineFunction.h:1.65 llvm/include/llvm/CodeGen/MachineFunction.h:1.66
--- llvm/include/llvm/CodeGen/MachineFunction.h:1.65	Wed Feb 14 20:55:51 2007
+++ llvm/include/llvm/CodeGen/MachineFunction.h	Wed Apr 25 17:10:09 2007
@@ -21,6 +21,7 @@
 #include "llvm/CodeGen/MachineModuleInfo.h"
 #include "llvm/CodeGen/MachineBasicBlock.h"
 #include "llvm/Support/Annotation.h"
+#include "llvm/ADT/BitVector.h"
 
 namespace llvm {
 
@@ -103,12 +104,12 @@
   // numbered and this vector keeps track of the mapping from ID's to MBB's.
   std::vector<MachineBasicBlock*> MBBNumbering;
 
-  /// UsedPhysRegs - This is a new[]'d array of bools that is computed and set
-  /// by the register allocator, and must be kept up to date by passes that run
-  /// after register allocation (though most don't modify this).  This is used
+  /// UsedPhysRegs - This is a bit vector that is computed and set by the
+  /// register allocator, and must be kept up to date by passes that run after
+  /// register allocation (though most don't modify this).  This is used
   /// so that the code generator knows which callee save registers to save and
   /// for other target specific uses.
-  bool *UsedPhysRegs;
+  BitVector UsedPhysRegs;
 
   /// LiveIns/LiveOuts - Keep track of the physical registers that are
   /// livein/liveout of the function.  Live in values are typically arguments in
@@ -170,26 +171,17 @@
      return const_cast<MachineFunction*>(this)->getInfo<Ty>();
   }
 
-  /// setUsedPhysRegs - The register allocator should call this to initialized
-  /// the UsedPhysRegs set.  This should be passed a new[]'d array with entries
-  /// for all of the physical registers that the target supports.  Each array
-  /// entry should be set to true iff the physical register is used within the
-  /// function.
-  void setUsedPhysRegs(bool *UPR) { UsedPhysRegs = UPR; }
-
-  /// getUsedPhysregs - This returns the UsedPhysRegs array.  This returns null
-  /// before register allocation.
-  bool *getUsedPhysregs() { return UsedPhysRegs; }
-  const bool *getUsedPhysregs() const { return UsedPhysRegs; }
-
   /// isPhysRegUsed - Return true if the specified register is used in this
   /// function.  This only works after register allocation.
   bool isPhysRegUsed(unsigned Reg) const { return UsedPhysRegs[Reg]; }
 
-  /// changePhyRegUsed - This method allows code that runs after register
-  /// allocation to keep the PhysRegsUsed array up-to-date.
-  void changePhyRegUsed(unsigned Reg, bool State) { UsedPhysRegs[Reg] = State; }
-
+  /// setPhysRegUsed - Mark the specified register used in this function.
+  /// This should only be called during and after register allocation.
+  void setPhysRegUsed(unsigned Reg) { UsedPhysRegs[Reg] = true; }
+
+  /// setPhysRegUnused - Mark the specified register unused in this function.
+  /// This should only be called during and after register allocation.
+  void setPhysRegUnused(unsigned Reg) { UsedPhysRegs[Reg] = false; }
 
   // LiveIn/LiveOut management methods.
 






More information about the llvm-commits mailing list