X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=include%2Fllvm%2FCodeGen%2FRegisterScavenging.h;h=01db6a231ed9a07c996b45b09d26eb6e20cf7a67;hb=a727d5502c8e23c090da658bf14c5ebc1169a070;hp=f66cf156e6cc88bda495567a691952bd212f0c8e;hpb=69cb9b78f11d505f4351a269fc90e7b77fcda437;p=oota-llvm.git diff --git a/include/llvm/CodeGen/RegisterScavenging.h b/include/llvm/CodeGen/RegisterScavenging.h index f66cf156e6c..01db6a231ed 100644 --- a/include/llvm/CodeGen/RegisterScavenging.h +++ b/include/llvm/CodeGen/RegisterScavenging.h @@ -47,10 +47,10 @@ class RegScavenger { /// const TargetRegisterClass *ScavengedRC; - /// RegStates - The current state of all the physical registers immediately + /// RegsAvailable - The current state of all the physical registers immediately /// before MBBI. One bit per physical register. If bit is set that means it's /// available, unset means the register is currently being used. - BitVector RegStates; + BitVector RegsAvailable; public: RegScavenger() @@ -88,18 +88,18 @@ public: /// isUsed / isUsed - Test if a register is currently being used. /// - bool isUsed(unsigned Reg) const { return !RegStates[Reg]; } - bool isUnused(unsigned Reg) const { return RegStates[Reg]; } + bool isUsed(unsigned Reg) const { return !RegsAvailable[Reg]; } + bool isUnused(unsigned Reg) const { return RegsAvailable[Reg]; } /// getRegsUsed - return all registers currently in use in used. void getRegsUsed(BitVector &used, bool includeReserved); /// setUsed / setUnused - Mark the state of one or a number of registers. /// - void setUsed(unsigned Reg) { RegStates.reset(Reg); } - void setUsed(BitVector Regs) { RegStates &= ~Regs; } - void setUnused(unsigned Reg) { RegStates.set(Reg); } - void setUnused(BitVector Regs) { RegStates |= Regs; } + void setUsed(unsigned Reg) { RegsAvailable.reset(Reg); } + void setUsed(BitVector Regs) { RegsAvailable &= ~Regs; } + void setUnused(unsigned Reg) { RegsAvailable.set(Reg); } + void setUnused(BitVector Regs) { RegsAvailable |= Regs; } /// FindUnusedReg - Find a unused register of the specified register class /// from the specified set of registers. It return 0 is none is found. @@ -117,12 +117,13 @@ public: int getScavengingFrameIndex() const { return ScavengingFrameIndex; } /// scavengeRegister - Make a register of the specific register class - /// available and do the appropriate bookkeeping. Returns the scavenged - /// register. + /// available and do the appropriate bookkeeping. SPAdj is the stack + /// adjustment due to call frame, it's passed along to eliminateFrameIndex(). + /// Returns the scavenged register. unsigned scavengeRegister(const TargetRegisterClass *RegClass, - MachineBasicBlock::iterator I); - unsigned scavengeRegister(const TargetRegisterClass *RegClass) { - return scavengeRegister(RegClass, MBBI); + MachineBasicBlock::iterator I, int SPAdj); + unsigned scavengeRegister(const TargetRegisterClass *RegClass, int SPAdj) { + return scavengeRegister(RegClass, MBBI, SPAdj); } private: