# 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
liveins:
  - { reg: '$sgpr30_sgpr31', virtual-reg: '' }
body:             |
  bb.0:
    S_SETPC_B64_return killed renamable $sgpr30_sgpr31

...
---
name:            bar
tracksRegLiveness: true
liveins:
  - { reg: '$vgpr0', virtual-reg: '' }
  - { reg: '$vgpr1', virtual-reg: '' }
  - { reg: '$vgpr2', virtual-reg: '' }
  - { reg: '$sgpr30_sgpr31', 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, $sgpr30_sgpr31

    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
    SI_SPILL_S64_SAVE killed renamable $sgpr30_sgpr31, %stack.0, implicit $exec, implicit $sgpr0_sgpr1_sgpr2_sgpr3, implicit $sgpr32
    dead $sgpr30_sgpr31 = SI_CALL killed renamable $sgpr4_sgpr5, @foo, csr_amdgpu_highregs, implicit $sgpr0_sgpr1_sgpr2_sgpr3
    renamable $sgpr30_sgpr31 = SI_SPILL_S64_RESTORE %stack.0, implicit $exec, implicit $sgpr0_sgpr1_sgpr2_sgpr3, implicit $sgpr32
    ADJCALLSTACKDOWN 0, 0, implicit-def dead $scc, implicit-def $sgpr32, implicit $sgpr32

    S_SETPC_B64_return killed renamable $sgpr30_sgpr31

...

