[llvm] [GISel] Fix #77762: extend correct source registers in combiner helper rule extend_through_phis (PR #77765)

Emil J via llvm-commits llvm-commits at lists.llvm.org
Thu Jan 11 05:29:41 PST 2024


https://github.com/ekliptik created https://github.com/llvm/llvm-project/pull/77765

Since we already know which register we want to extend, we don't have to ask its defining MI about it

>From b65b2466b61d26f76d84f928067e72231d7f417d Mon Sep 17 00:00:00 2001
From: Emil Tywoniak <Emil.Tywoniak at hightec-rt.com>
Date: Thu, 11 Jan 2024 13:01:42 +0000
Subject: [PATCH] Fix combiner helper rule extend_through_phis #77762

---
 llvm/lib/CodeGen/GlobalISel/CombinerHelper.cpp | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/llvm/lib/CodeGen/GlobalISel/CombinerHelper.cpp b/llvm/lib/CodeGen/GlobalISel/CombinerHelper.cpp
index fc2793bd7a133d..866774bda3fb14 100644
--- a/llvm/lib/CodeGen/GlobalISel/CombinerHelper.cpp
+++ b/llvm/lib/CodeGen/GlobalISel/CombinerHelper.cpp
@@ -3939,7 +3939,8 @@ void CombinerHelper::applyExtendThroughPhis(MachineInstr &MI,
   SmallSetVector<MachineInstr *, 8> SrcMIs;
   SmallDenseMap<MachineInstr *, MachineInstr *, 8> OldToNewSrcMap;
   for (unsigned SrcIdx = 1; SrcIdx < MI.getNumOperands(); SrcIdx += 2) {
-    auto *SrcMI = MRI.getVRegDef(MI.getOperand(SrcIdx).getReg());
+    auto SrcReg = MI.getOperand(SrcIdx).getReg();
+    auto *SrcMI = MRI.getVRegDef(SrcReg);
     if (!SrcMIs.insert(SrcMI))
       continue;
 
@@ -3952,7 +3953,7 @@ void CombinerHelper::applyExtendThroughPhis(MachineInstr &MI,
     Builder.setInsertPt(*SrcMI->getParent(), InsertPt);
     Builder.setDebugLoc(MI.getDebugLoc());
     auto NewExt = Builder.buildExtOrTrunc(ExtMI->getOpcode(), ExtTy,
-                                          SrcMI->getOperand(0).getReg());
+                                          SrcReg);
     OldToNewSrcMap[SrcMI] = NewExt;
   }
 



More information about the llvm-commits mailing list