[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