mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-06-25 00:24:26 +00:00
Don't try to sink 3-address instruction if convertToThreeAddress created more than one instructions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48336 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@ -291,7 +291,12 @@ bool TwoAddressInstructionPass::runOnMachineFunction(MachineFunction &MF) {
|
|||||||
if (MachineInstr *New=TII->convertToThreeAddress(mbbi, mi, *LV)) {
|
if (MachineInstr *New=TII->convertToThreeAddress(mbbi, mi, *LV)) {
|
||||||
DOUT << "2addr: CONVERTING 2-ADDR: " << *mi;
|
DOUT << "2addr: CONVERTING 2-ADDR: " << *mi;
|
||||||
DOUT << "2addr: TO 3-ADDR: " << *New;
|
DOUT << "2addr: TO 3-ADDR: " << *New;
|
||||||
bool Sunk = Sink3AddrInstruction(mbbi, New, regB, mi);
|
bool Sunk = false;
|
||||||
|
if (New->findRegisterUseOperand(regB, New, TRI))
|
||||||
|
// FIXME: Temporary workaround. If the new instruction doesn't
|
||||||
|
// uses regB, convertToThreeAddress must have created more
|
||||||
|
// then one instruction.
|
||||||
|
Sunk = Sink3AddrInstruction(mbbi, New, regB, mi);
|
||||||
mbbi->erase(mi); // Nuke the old inst.
|
mbbi->erase(mi); // Nuke the old inst.
|
||||||
if (!Sunk) mi = New;
|
if (!Sunk) mi = New;
|
||||||
++NumConvertedTo3Addr;
|
++NumConvertedTo3Addr;
|
||||||
|
Reference in New Issue
Block a user