[llvm] [CodeGen] commuteInstruction should update implicit-def (PR #131361)

Matt Arsenault via llvm-commits llvm-commits at lists.llvm.org
Thu Jul 10 03:48:16 PDT 2025


================
@@ -238,7 +238,14 @@ MachineInstr *TargetInstrInfo::commuteInstructionImpl(MachineInstr &MI,
   }
 
   if (HasDef) {
-    CommutedMI->getOperand(0).setReg(Reg0);
+    // Use `substituteRegister` so that for a case like this:
+    //   %0.sub = INST %0.sub(tied), %1.sub, implicit-def %0
+    // the implicit-def is also updated, to result in:
+    //   %1.sub = INST %1.sub(tied), %0.sub, implicit-def %1
+    const TargetRegisterInfo &TRI =
+        *MI.getMF()->getSubtarget().getRegisterInfo();
+    Register FromReg = CommutedMI->getOperand(0).getReg();
+    CommutedMI->substituteRegister(FromReg, Reg0, /*SubRegIdx*/ 0, TRI);
----------------
arsenm wrote:

```suggestion
    CommutedMI->substituteRegister(FromReg, Reg0, /*SubRegIdx=*/ 0, TRI);
```

https://github.com/llvm/llvm-project/pull/131361


More information about the llvm-commits mailing list