A slight compile time optimization. If the caller knows there isn't a free register getReg() should not call getFreeReg().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63263 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Evan Cheng
2009-01-29 01:13:00 +00:00
parent e8c17335c5
commit 7ddee0ad24

View File

@ -220,10 +220,10 @@ namespace {
/// getReg - Find a physical register to hold the specified virtual /// getReg - Find a physical register to hold the specified virtual
/// register. If all compatible physical registers are used, this method /// register. If all compatible physical registers are used, this method
/// spills the last used virtual register to the stack, and uses that /// spills the last used virtual register to the stack, and uses that
/// register. /// register. If NoFree is true, that means the caller knows there isn't
/// /// a free register, do not call getFreeReg().
unsigned getReg(MachineBasicBlock &MBB, MachineInstr *MI, unsigned getReg(MachineBasicBlock &MBB, MachineInstr *MI,
unsigned VirtReg); unsigned VirtReg, bool NoFree = false);
/// reloadVirtReg - This method transforms the specified specified virtual /// reloadVirtReg - This method transforms the specified specified virtual
/// register use to refer to a physical register. This method may do this /// register use to refer to a physical register. This method may do this
@ -398,11 +398,11 @@ unsigned RALocal::getFreeReg(const TargetRegisterClass *RC) {
/// the last used virtual register to the stack, and uses that register. /// the last used virtual register to the stack, and uses that register.
/// ///
unsigned RALocal::getReg(MachineBasicBlock &MBB, MachineInstr *I, unsigned RALocal::getReg(MachineBasicBlock &MBB, MachineInstr *I,
unsigned VirtReg) { unsigned VirtReg, bool NoFree) {
const TargetRegisterClass *RC = MF->getRegInfo().getRegClass(VirtReg); const TargetRegisterClass *RC = MF->getRegInfo().getRegClass(VirtReg);
// First check to see if we have a free register of the requested type... // First check to see if we have a free register of the requested type...
unsigned PhysReg = getFreeReg(RC); unsigned PhysReg = NoFree ? 0 : getFreeReg(RC);
// If we didn't find an unused register, scavenge one now! // If we didn't find an unused register, scavenge one now!
if (PhysReg == 0) { if (PhysReg == 0) {
@ -498,7 +498,7 @@ MachineInstr *RALocal::reloadVirtReg(MachineBasicBlock &MBB, MachineInstr *MI,
} else { // No registers available. } else { // No registers available.
// Force some poor hapless value out of the register file to // Force some poor hapless value out of the register file to
// make room for the new register, and reload it. // make room for the new register, and reload it.
PhysReg = getReg(MBB, MI, VirtReg); PhysReg = getReg(MBB, MI, VirtReg, true);
} }
markVirtRegModified(VirtReg, false); // Note that this reg was just reloaded markVirtRegModified(VirtReg, false); // Note that this reg was just reloaded