Skip to content

Commit 505b5df

Browse files
committed
[AMDGPU] Fix a crash by skipping DBG instrs at start of sched region
Fixes SWDEV-514946
1 parent a274ea1 commit 505b5df

File tree

2 files changed

+32
-0
lines changed

2 files changed

+32
-0
lines changed

llvm/lib/Target/AMDGPU/GCNSchedStrategy.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -873,6 +873,8 @@ void GCNScheduleDAGMILive::computeBlockPressure(unsigned RegionIdx,
873873
Pressure[CurRegion] = RPTracker.moveMaxPressure();
874874
if (CurRegion-- == RegionIdx)
875875
break;
876+
auto &Rgn = Regions[CurRegion];
877+
NonDbgMI = &*skipDebugInstructionsForward(Rgn.first, Rgn.second);
876878
}
877879
RPTracker.advanceToNext();
878880
RPTracker.advanceBeforeNext();
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 5
2+
# RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx942 -verify-machineinstrs -run-pass=machine-scheduler -o - %s | FileCheck %s
3+
4+
# Verify we maintain live-ins even if the first instruction in sched region is
5+
# DBG_.
6+
7+
---
8+
name: sched
9+
tracksRegLiveness: true
10+
registers:
11+
- { id: 1, class: sgpr_32, preferred-register: '', flags: [ ] }
12+
- { id: 2, class: sgpr_32, preferred-register: '', flags: [ ] }
13+
body: |
14+
bb.0.entry:
15+
; CHECK-LABEL: name: sched
16+
; CHECK: [[DEF:%[0-9]+]]:sgpr_32 = IMPLICIT_DEF
17+
; CHECK-NEXT: S_NOP 0
18+
; CHECK-NEXT: SCHED_BARRIER 0
19+
; CHECK-NEXT: DBG_VALUE
20+
; CHECK-NEXT: dead [[COPY:%[0-9]+]]:sgpr_32 = COPY [[DEF]]
21+
; CHECK-NEXT: S_NOP 0
22+
; CHECK-NEXT: S_ENDPGM 0
23+
%1:sgpr_32 = IMPLICIT_DEF
24+
S_NOP 0
25+
SCHED_BARRIER 0
26+
DBG_VALUE
27+
dead %2:sgpr_32 = COPY %1
28+
S_NOP 0
29+
S_ENDPGM 0
30+
...

0 commit comments

Comments
 (0)