[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