# RUN: llc -march=x86-64 -run-pass none -o - %s | FileCheck %s
# This test ensures that the MIR parser parses the stack object's debug info
# correctly.
--- |
  declare void @llvm.dbg.declare(metadata, metadata, metadata) #0

  define void @foo() #1 {
  entry:
    %x.i = alloca i8, align 1
    %y.i = alloca [256 x i8], align 16
    %0 = bitcast [256 x i8]* %y.i to i8*
    br label %for.body

  for.body:
    %1 = bitcast [256 x i8]* %y.i to i8*
    call void @llvm.lifetime.end(i64 -1, i8* %1) #3
    call void @llvm.lifetime.start(i64 -1, i8* %0) #3
    call void @llvm.dbg.declare(metadata i8* %0, metadata !4, metadata !7) #3, !dbg !8
    br label %for.body
  }

  declare void @llvm.lifetime.start(i64, i8* nocapture) #2

  declare void @llvm.lifetime.end(i64, i8* nocapture) #2

  attributes #0 = { nounwind readnone }
  attributes #1 = { nounwind ssp uwtable }
  attributes #2 = { nounwind argmemonly }
  attributes #3 = { nounwind }

  !llvm.dbg.cu = !{!0}
  !llvm.module.flags = !{!3}

  !0 = distinct !DICompileUnit(language: DW_LANG_C89, file: !1, producer: "clang", isOptimized: true, runtimeVersion: 0, emissionKind: FullDebug, enums: !2, retainedTypes: !2)
  !1 = !DIFile(filename: "t.c", directory: "")
  !2 = !{}
  !3 = !{i32 1, !"Debug Info Version", i32 3}
  !4 = !DILocalVariable(name: "x", scope: !5, file: !1, line: 16, type: !9)
  !5 = distinct !DISubprogram(scope: null, isLocal: false, isDefinition: true, isOptimized: false, unit: !0)
  !6 = !DIBasicType(name: "char", size: 8, align: 8, encoding: DW_ATE_signed_char)
  !7 = !DIExpression()
  !8 = !DILocation(line: 0, scope: !5)
  !9 = !DICompositeType(tag: DW_TAG_array_type, baseType: !6, size: 2048, align: 8, elements: !10)
  !10 = !{!11}
  !11 = !DISubrange(count: 256)
...
---
name:            foo
isSSA:           true
tracksRegLiveness: true
frameInfo:
  maxAlignment:    16
# CHECK-LABEL: foo
# CHECK: stack:
# CHECK:  - { id: 0, name: y.i, offset: 0, size: 256, alignment: 16, di-variable: '!4',
# CHECK-NEXT: di-expression: '!10', di-location: '!11' }
stack:
  - { id: 0, name: y.i, offset: 0, size: 256, alignment: 16, di-variable: '!4',
      di-expression: '!7', di-location: '!8' }
body: |
  bb.0.entry:
    successors: %bb.1.for.body
  bb.1.for.body:
    successors: %bb.1.for.body

    DBG_VALUE %stack.0.y.i, 0, !4, !7, debug-location !8
    JMP_1 %bb.1.for.body
...
