[llvm-commits] CVS: llvm/lib/Target/MRegisterInfo.cpp

Alkis Evlogimenos alkis at cs.uiuc.edu
Thu Aug 26 15:21:14 PDT 2004



Changes in directory llvm/lib/Target:

MRegisterInfo.cpp updated: 1.5 -> 1.6
---
Log message:

Add getAllocatableSet() function.


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

Index: llvm/lib/Target/MRegisterInfo.cpp
diff -u llvm/lib/Target/MRegisterInfo.cpp:1.5 llvm/lib/Target/MRegisterInfo.cpp:1.6
--- llvm/lib/Target/MRegisterInfo.cpp:1.5	Tue Nov 11 16:41:33 2003
+++ llvm/lib/Target/MRegisterInfo.cpp	Thu Aug 26 17:21:04 2004
@@ -28,12 +28,14 @@
 
   // Fill in the PhysRegClasses map
   for (MRegisterInfo::regclass_iterator I = regclass_begin(),
-         E = regclass_end(); I != E; ++I)
-    for (unsigned i = 0, e = (*I)->getNumRegs(); i != e; ++i) {
-      unsigned Reg = (*I)->getRegister(i);
+         E = regclass_end(); I != E; ++I) {
+    const TargetRegisterClass *RC = *I;
+    for (unsigned i = 0, e = RC->getNumRegs(); i != e; ++i) {
+      unsigned Reg = RC->getRegister(i);
       assert(PhysRegClasses[Reg] == 0 && "Register in more than one class?");
-      PhysRegClasses[Reg] = *I;
+      PhysRegClasses[Reg] = RC;
     }
+  }
 
   CallFrameSetupOpcode   = CFSO;
   CallFrameDestroyOpcode = CFDO;
@@ -44,4 +46,16 @@
   delete[] PhysRegClasses;
 }
 
+std::vector<bool> MRegisterInfo::getAllocatableSet(MachineFunction &MF) const {
+  std::vector<bool> Allocatable(NumRegs);
+  for (MRegisterInfo::regclass_iterator I = regclass_begin(),
+         E = regclass_end(); I != E; ++I) {
+    const TargetRegisterClass *RC = *I;
+    for (TargetRegisterClass::iterator I = RC->allocation_order_begin(MF),
+           E = RC->allocation_order_end(MF); I != E; ++I)
+      Allocatable[*I] = true;
+  }
+  return Allocatable;
+}  
+
 } // End llvm namespace






More information about the llvm-commits mailing list