diff --git a/llvm/lib/Target/X86/X86InstrInfo.cpp b/llvm/lib/Target/X86/X86InstrInfo.cpp --- a/llvm/lib/Target/X86/X86InstrInfo.cpp +++ b/llvm/lib/Target/X86/X86InstrInfo.cpp @@ -1532,13 +1532,6 @@ else Opc = Is64Bit ? X86::LEA64_32r : X86::LEA32r; - bool isKill; - Register SrcReg; - MachineOperand ImplicitOp = MachineOperand::CreateReg(0, false); - if (!classifyLEAReg(MI, Src, Opc, /*AllowSP=*/ true, - SrcReg, isKill, ImplicitOp, LV)) - return nullptr; - const MachineOperand &Src2 = MI.getOperand(2); bool isKill2; Register SrcReg2; @@ -1547,6 +1540,13 @@ SrcReg2, isKill2, ImplicitOp2, LV)) return nullptr; + bool isKill; + Register SrcReg; + MachineOperand ImplicitOp = MachineOperand::CreateReg(0, false); + if (!classifyLEAReg(MI, Src, Opc, /*AllowSP=*/ true, + SrcReg, isKill, ImplicitOp, LV)) + return nullptr; + MachineInstrBuilder MIB = BuildMI(MF, MI.getDebugLoc(), get(Opc)).add(Dest); if (ImplicitOp.getReg() != 0) MIB.add(ImplicitOp);