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); _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits