[llvm] Fix assert in SlotIndexes::getInstructionIndex in debug builds (PR #189370)
via llvm-commits
llvm-commits at lists.llvm.org
Mon Mar 30 05:55:25 PDT 2026
https://github.com/MarcoCastorina created https://github.com/llvm/llvm-project/pull/189370
In some cases, when debug info is enabled, the assertion in SlotIndexes::getInstructionIndex fires as the interval contains only debug instructions. This change ensures only valid instructions are taken into account.
>From 14a3f05692e51257b2f4b0a464aeb4c5e9464d60 Mon Sep 17 00:00:00 2001
From: "Castorina, Marco" <marco.castorina at amd.com>
Date: Mon, 30 Mar 2026 12:32:13 +0100
Subject: [PATCH] Fix assert in SlotIndexes::getInstructionIndex in debug
builds
In some cases, when debug info is enabled, the assertion in
SlotIndexes::getInstructionIndex fires as the interval contains only debug
instructions. This change ensures only valid instructions are taken into
account.
---
llvm/lib/Target/AMDGPU/SIWholeQuadMode.cpp | 11 +++++++----
1 file changed, 7 insertions(+), 4 deletions(-)
diff --git a/llvm/lib/Target/AMDGPU/SIWholeQuadMode.cpp b/llvm/lib/Target/AMDGPU/SIWholeQuadMode.cpp
index 5fd0c1e1064cb..f67b5cd65ec92 100644
--- a/llvm/lib/Target/AMDGPU/SIWholeQuadMode.cpp
+++ b/llvm/lib/Target/AMDGPU/SIWholeQuadMode.cpp
@@ -1174,12 +1174,15 @@ void SIWholeQuadMode::toExact(MachineBasicBlock &MBB,
Register SaveWQM) {
assert(LiveMaskReg.isVirtual());
- bool IsTerminator = Before == MBB.end();
+ auto MBBE = MBB.end();
+ bool IsTerminator = Before == MBBE;
if (!IsTerminator) {
auto FirstTerm = MBB.getFirstTerminator();
- if (FirstTerm != MBB.end()) {
- SlotIndex FirstTermIdx = LIS->getInstructionIndex(*FirstTerm);
- SlotIndex BeforeIdx = LIS->getInstructionIndex(*Before);
+ auto FirstNonDbg = skipDebugInstructionsForward(FirstTerm, MBBE);
+ if (FirstNonDbg != MBBE) {
+ auto BeforeNonDbg = skipDebugInstructionsForward(Before, MBBE);
+ SlotIndex FirstTermIdx = LIS->getInstructionIndex(*FirstNonDbg);
+ SlotIndex BeforeIdx = LIS->getInstructionIndex(*BeforeNonDbg);
IsTerminator = BeforeIdx > FirstTermIdx;
}
}
More information about the llvm-commits
mailing list