[llvm] AMDGPU: Fix using getVRegDef on a physical register in SIFoldOperands (PR #216775)
Matt Arsenault via llvm-commits
llvm-commits at lists.llvm.org
Mon Aug 17 10:03:41 PDT 2026
https://github.com/arsenm created https://github.com/llvm/llvm-project/pull/216775
Co-authored-by: Claude (Claude-Opus-4.8) <noreply at anthropic.com>
>From 6dfe9eecfe8e3cb57f3814243c5d163dabd9f45a Mon Sep 17 00:00:00 2001
From: Matt Arsenault <Matthew.Arsenault at amd.com>
Date: Mon, 17 Aug 2026 16:34:05 +0200
Subject: [PATCH] AMDGPU: Fix using getVRegDef on a physical register in
SIFoldOperands
Co-authored-by: Claude (Claude-Opus-4.8) <noreply at anthropic.com>
---
llvm/lib/Target/AMDGPU/SIFoldOperands.cpp | 3 +++
1 file changed, 3 insertions(+)
diff --git a/llvm/lib/Target/AMDGPU/SIFoldOperands.cpp b/llvm/lib/Target/AMDGPU/SIFoldOperands.cpp
index 7401ff8456cae..efbe5cf281f0f 100644
--- a/llvm/lib/Target/AMDGPU/SIFoldOperands.cpp
+++ b/llvm/lib/Target/AMDGPU/SIFoldOperands.cpp
@@ -391,6 +391,9 @@ bool SIFoldOperandsImpl::frameIndexMayFold(const MachineInstr &UseMI, int OpNo,
/// => %vgpr = V_ADD_U32 x, frameindex
bool SIFoldOperandsImpl::foldCopyToVGPROfScalarAddOfFrameIndex(
Register DstReg, Register SrcReg, MachineInstr &MI) const {
+ if (!SrcReg.isVirtual())
+ return false;
+
if (TRI->isVGPR(*MRI, DstReg) && TRI->isSGPRReg(*MRI, SrcReg) &&
MRI->hasOneNonDBGUse(SrcReg)) {
MachineInstr *Def = MRI->getVRegDef(SrcReg);
More information about the llvm-commits
mailing list