[llvm-branch-commits] [llvm] PeepholeOpt: Fix losing subregister indexes on full copies (PR #161310)

Jay Foad via llvm-branch-commits llvm-branch-commits at lists.llvm.org
Tue Sep 30 03:10:28 PDT 2025


================
@@ -1905,7 +1905,28 @@ ValueTrackerResult ValueTracker::getNextSourceFromCopy() {
   const MachineOperand &Src = Def->getOperand(1);
   if (Src.isUndef())
     return ValueTrackerResult();
-  return ValueTrackerResult(Src.getReg(), Src.getSubReg());
+
+  Register SrcReg = Src.getReg();
+  unsigned SubReg = Src.getSubReg();
+  if (DefSubReg) {
+    const TargetRegisterInfo *TRI = MRI.getTargetRegisterInfo();
+    SubReg = TRI->composeSubRegIndices(SubReg, DefSubReg);
+    if (SubReg) {
----------------
jayfoad wrote:

I don't think SubReg can ever be 0 here, since you previously checked that DefSubReg is not 0.

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


More information about the llvm-branch-commits mailing list