[llvm-commits] CVS: llvm/lib/CodeGen/RegisterScavenging.cpp
Evan Cheng
evan.cheng at apple.com
Thu Mar 1 00:56:46 PST 2007
Changes in directory llvm/lib/CodeGen:
RegisterScavenging.cpp updated: 1.8 -> 1.9
---
Log message:
Add a version of FindUnusedReg that restrict search to a specific set of registers.
---
Diffs of the changes: (+15 -0)
RegisterScavenging.cpp | 15 +++++++++++++++
1 files changed, 15 insertions(+)
Index: llvm/lib/CodeGen/RegisterScavenging.cpp
diff -u llvm/lib/CodeGen/RegisterScavenging.cpp:1.8 llvm/lib/CodeGen/RegisterScavenging.cpp:1.9
--- llvm/lib/CodeGen/RegisterScavenging.cpp:1.8 Wed Feb 28 20:19:39 2007
+++ llvm/lib/CodeGen/RegisterScavenging.cpp Thu Mar 1 02:56:24 2007
@@ -157,6 +157,21 @@
}
unsigned RegScavenger::FindUnusedReg(const TargetRegisterClass *RegClass,
+ const BitVector &Candidates) const {
+ // Mask off the registers which are not in the TargetRegisterClass.
+ BitVector RegStatesCopy(NumPhysRegs, false);
+ CreateRegClassMask(RegClass, RegStatesCopy);
+ RegStatesCopy &= RegStates;
+
+ // Restrict the search to candidates.
+ RegStatesCopy &= Candidates;
+
+ // Returns the first unused (bit is set) register, or 0 is none is found.
+ int Reg = RegStatesCopy.find_first();
+ return (Reg == -1) ? 0 : Reg;
+}
+
+unsigned RegScavenger::FindUnusedReg(const TargetRegisterClass *RegClass,
bool ExCalleeSaved) const {
// Mask off the registers which are not in the TargetRegisterClass.
BitVector RegStatesCopy(NumPhysRegs, false);
More information about the llvm-commits
mailing list