mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-08-05 13:26:55 +00:00
- Remove calls to copyKillDeadInfo which is an N^2 function. Instead, propagate kill / dead markers as new instructions are constructed in foldMemoryOperand, convertToThressAddress, etc.
- Also remove LiveVariables::instructionChanged, etc. Replace all calls with cheaper calls which update VarInfo kill list. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53097 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -412,20 +412,22 @@ SPUInstrInfo::foldMemoryOperand(MachineFunction &MF,
|
||||
&& MI->getOperand(1).getReg() == MI->getOperand(2).getReg()) {
|
||||
if (OpNum == 0) { // move -> store
|
||||
unsigned InReg = MI->getOperand(1).getReg();
|
||||
bool isKill = MI->getOperand(1).isKill();
|
||||
if (FrameIndex < SPUFrameInfo::maxFrameOffset()) {
|
||||
NewMI = addFrameReference(BuildMI(TII.get(SPU::STQDr32)).addReg(InReg),
|
||||
NewMI = addFrameReference(BuildMI(TII.get(SPU::STQDr32))
|
||||
.addReg(InReg, false, false, isKill),
|
||||
FrameIndex);
|
||||
}
|
||||
} else { // move -> load
|
||||
unsigned OutReg = MI->getOperand(0).getReg();
|
||||
Opc = (FrameIndex < SPUFrameInfo::maxFrameOffset()) ? SPU::STQDr32 : SPU::STQXr32;
|
||||
NewMI = addFrameReference(BuildMI(TII.get(Opc), OutReg), FrameIndex);
|
||||
bool isDead = MI->getOperand(0).isDead();
|
||||
Opc = (FrameIndex < SPUFrameInfo::maxFrameOffset())
|
||||
? SPU::STQDr32 : SPU::STQXr32;
|
||||
NewMI = addFrameReference(BuildMI(TII.get(Opc))
|
||||
.addReg(OutReg, true, false, false, isDead), FrameIndex);
|
||||
}
|
||||
}
|
||||
|
||||
if (NewMI)
|
||||
NewMI->copyKillDeadInfo(MI);
|
||||
|
||||
return NewMI;
|
||||
#else
|
||||
return 0;
|
||||
|
Reference in New Issue
Block a user