And dependent commits. Details in D150388. This reverts commit 825b7f0ca5f2211ec3c93139f98d1e24048c225c. This reverts commit 7a98f084c4d121244ef7286bc6503b6a181d446e. This reverts commit b4a62b1fa546312d882fa12dfdcd015177d66826. This reverts commit b7836d856206ec39509d42529f958c920368166b. No conflicts in the code, few tests had conflicts in autogenerated CHECKs: llvm/test/CodeGen/Thumb2/mve-float32regloops.ll llvm/test/CodeGen/AMDGPU/fix-frame-reg-in-custom-csr-spills.ll Reviewed By: alexfh Differential Revision: https://reviews.llvm.org/D156381
59 lines
2.1 KiB
YAML
59 lines
2.1 KiB
YAML
# This test used to crash MIRPrinter::convertStackObjects():
|
|
# MFI can contain some dead stack objects after PEI pass, but objects storage
|
|
# contains not dead objects only. So using objects IDs as offset in the storage
|
|
# caused out of bounds access.
|
|
|
|
# RUN: llc -march=amdgcn -run-pass=si-lower-sgpr-spills,prologepilog -verify-machineinstrs -o - %s | FileCheck %s
|
|
|
|
# CHECK-LABEL: name: foo
|
|
# CHECK: {{^}}fixedStack: []
|
|
# CHECK: stack: []
|
|
|
|
# CHECK-LABEL: name: bar
|
|
# CHECK: fixedStack: []
|
|
# CHECK-NEXT: {{^}}stack:
|
|
# CHECK-NEXT: - { id:
|
|
|
|
|
|
---
|
|
name: foo
|
|
body: |
|
|
bb.0:
|
|
SI_RETURN
|
|
|
|
...
|
|
---
|
|
name: bar
|
|
tracksRegLiveness: true
|
|
liveins:
|
|
- { reg: '$vgpr0', virtual-reg: '' }
|
|
- { reg: '$vgpr1', virtual-reg: '' }
|
|
- { reg: '$vgpr2', virtual-reg: '' }
|
|
stack:
|
|
- { id: 0, name: '', type: spill-slot, offset: 0, size: 8, alignment: 4,
|
|
stack-id: sgpr-spill, callee-saved-register: '', callee-saved-restored: true,
|
|
debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
|
|
machineFunctionInfo:
|
|
scratchRSrcReg: '$sgpr0_sgpr1_sgpr2_sgpr3'
|
|
stackPtrOffsetReg: '$sgpr32'
|
|
body: |
|
|
bb.0:
|
|
liveins: $vgpr0, $vgpr1, $vgpr2
|
|
|
|
renamable $vgpr41 = COPY $vgpr2, implicit $exec
|
|
renamable $vgpr40 = COPY $vgpr1, implicit $exec
|
|
renamable $vcc = V_CMP_NE_U32_e64 42, killed $vgpr0, implicit $exec
|
|
$sgpr4_sgpr5 = S_AND_SAVEEXEC_B64 $vcc, implicit-def $exec, implicit-def $scc, implicit $exec
|
|
renamable $sgpr34_sgpr35 = S_XOR_B64 $exec, killed renamable $sgpr4_sgpr5, implicit-def dead $scc
|
|
|
|
ADJCALLSTACKUP 0, 0, implicit-def dead $scc, implicit-def $sgpr32, implicit $sgpr32
|
|
renamable $sgpr4_sgpr5 = SI_PC_ADD_REL_OFFSET target-flags(amdgpu-gotprel32-lo) @foo + 4, target-flags(amdgpu-gotprel32-hi) @foo + 12, implicit-def dead $scc
|
|
renamable $sgpr4_sgpr5 = S_LOAD_DWORDX2_IMM killed renamable $sgpr4_sgpr5, 0, 0
|
|
dead $sgpr30_sgpr31 = SI_CALL killed renamable $sgpr4_sgpr5, @foo, csr_amdgpu, implicit $sgpr0_sgpr1_sgpr2_sgpr3
|
|
ADJCALLSTACKDOWN 0, 0, implicit-def dead $scc, implicit-def $sgpr32, implicit $sgpr32
|
|
|
|
SI_RETURN
|
|
|
|
...
|
|
|