From 0099ae2468c6c7c1e73f4df539d6e3e1ccdfafaa Mon Sep 17 00:00:00 2001 From: Evan Cheng Date: Thu, 13 Mar 2008 07:56:58 +0000 Subject: [PATCH] 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 --- lib/CodeGen/TwoAddressInstructionPass.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/lib/CodeGen/TwoAddressInstructionPass.cpp b/lib/CodeGen/TwoAddressInstructionPass.cpp index 73803279110..30727a6b7d0 100644 --- a/lib/CodeGen/TwoAddressInstructionPass.cpp +++ b/lib/CodeGen/TwoAddressInstructionPass.cpp @@ -291,7 +291,12 @@ bool TwoAddressInstructionPass::runOnMachineFunction(MachineFunction &MF) { if (MachineInstr *New=TII->convertToThreeAddress(mbbi, mi, *LV)) { DOUT << "2addr: CONVERTING 2-ADDR: " << *mi; 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. if (!Sunk) mi = New; ++NumConvertedTo3Addr;