diff --git a/llvm/lib/CodeGen/GlobalISel/InstructionSelector.cpp b/llvm/lib/CodeGen/GlobalISel/InstructionSelector.cpp --- a/llvm/lib/CodeGen/GlobalISel/InstructionSelector.cpp +++ b/llvm/lib/CodeGen/GlobalISel/InstructionSelector.cpp @@ -41,8 +41,12 @@ MachineFunction &MF = *MBB.getParent(); MachineRegisterInfo &MRI = MF.getRegInfo(); - return constrainOperandRegClass(MF, TRI, MRI, TII, RBI, I, RC, - I.getOperand(OpIdx)); + MachineOperand &MO = I.getOperand(OpIdx); + Register NewReg = constrainOperandRegClass(MF, TRI, MRI, TII, RBI, I, RC, MO); + if (NewReg != MO.getReg()) { + MO.setReg(NewReg); + } + return true; } bool InstructionSelector::isOperandImmEqual(