mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-02-01 17:32:36 +00:00
Don't use getNextOperandForReg() in RAFast.
That particular optimization was probably premature anyway. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161541 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
12864689d1
commit
4e6966266a
@ -201,20 +201,16 @@ int RAFast::getStackSpaceFor(unsigned VirtReg, const TargetRegisterClass *RC) {
|
||||
/// its virtual register, and it is guaranteed to be a block-local register.
|
||||
///
|
||||
bool RAFast::isLastUseOfLocalReg(MachineOperand &MO) {
|
||||
// Check for non-debug uses or defs following MO.
|
||||
// This is the most likely way to fail - fast path it.
|
||||
MachineOperand *Next = &MO;
|
||||
while ((Next = Next->getNextOperandForReg()))
|
||||
if (!Next->isDebug())
|
||||
return false;
|
||||
|
||||
// If the register has ever been spilled or reloaded, we conservatively assume
|
||||
// it is a global register used in multiple blocks.
|
||||
if (StackSlotForVirtReg[MO.getReg()] != -1)
|
||||
return false;
|
||||
|
||||
// Check that the use/def chain has exactly one operand - MO.
|
||||
return &MRI->reg_nodbg_begin(MO.getReg()).getOperand() == &MO;
|
||||
MachineRegisterInfo::reg_nodbg_iterator I = MRI->reg_nodbg_begin(MO.getReg());
|
||||
if (&I.getOperand() != &MO)
|
||||
return false;
|
||||
return ++I == MRI->reg_nodbg_end();
|
||||
}
|
||||
|
||||
/// addKillFlag - Set kill flags on last use of a virtual register.
|
||||
|
Loading…
x
Reference in New Issue
Block a user