[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