# RUN: llc -o - %s -O0 -regalloc=fast -run-pass=livedebugvalues | \
# RUN:   FileCheck %s -implicit-check-not=DBG_VALUE
--- |
  target triple = "arm64-apple-ios12.1.0"

  declare void @use(i32)

  define void @f1(i32 %x) !dbg !6 {
  entry:
    %var = add i32 %x, 1, !dbg !12
    call void @llvm.dbg.value(metadata i32 %var, metadata !9, metadata !DIExpression()), !dbg !12
    br label %artificial-bb-1, !dbg !13

  artificial-bb-1:
    br label %artificial-bb-2

  artificial-bb-2:
    %invisible = add i32 %var, 1
    br label %return, !dbg !14

  return:
    call void @use(i32 %var)
    ret void, !dbg !15
  }

  declare void @llvm.dbg.value(metadata, metadata, metadata) #0
  declare void @llvm.stackprotector(i8*, i8**) #1

  attributes #0 = { nounwind readnone speculatable }
  attributes #1 = { nounwind }

  !llvm.dbg.cu = !{!0}
  !llvm.debugify = !{!3, !4}
  !llvm.module.flags = !{!5}

  !0 = distinct !DICompileUnit(language: DW_LANG_C, file: !1, producer: "debugify", isOptimized: true, runtimeVersion: 0, emissionKind: FullDebug, enums: !2)
  !1 = !DIFile(filename: "compiler-gen-bbs-livedebugvalues.ll", directory: "/")
  !2 = !{}
  !3 = !{i32 6}
  !4 = !{i32 2}
  !5 = !{i32 2, !"Debug Info Version", i32 3}
  !6 = distinct !DISubprogram(name: "f1", linkageName: "f1", scope: null, file: !1, line: 1, type: !7, isLocal: false, isDefinition: true, scopeLine: 1, isOptimized: true, unit: !0, retainedNodes: !8)
  !7 = !DISubroutineType(types: !2)
  !8 = !{!9, !11}
  !9 = !DILocalVariable(name: "1", scope: !6, file: !1, line: 1, type: !10)
  !10 = !DIBasicType(name: "ty32", size: 32, encoding: DW_ATE_unsigned)
  !11 = !DILocalVariable(name: "2", scope: !6, file: !1, line: 4, type: !10)
  !12 = !DILocation(line: 1, column: 1, scope: !6)
  !13 = !DILocation(line: 2, column: 1, scope: !6)
  !14 = !DILocation(line: 0, column: 1, scope: !6)
  !15 = !DILocation(line: 4, column: 1, scope: !6)

...
---
# CHECK-LABEL: name: f1
name:            f1
alignment:       4
legalized:       true
regBankSelected: true
selected:        true
tracksRegLiveness: true
frameInfo:
  stackSize:       32
  maxAlignment:    8
  adjustsStack:    true
  hasCalls:        true
  maxCallFrameSize: 0
stack:
  - { id: 0, type: spill-slot, offset: -20, size: 4, alignment: 4, stack-id: default }
  - { id: 1, type: spill-slot, offset: -8, size: 8, alignment: 8, stack-id: default,
      callee-saved-register: '$lr' }
  - { id: 2, type: spill-slot, offset: -16, size: 8, alignment: 8, stack-id: default,
      callee-saved-register: '$fp' }
body:             |
  ; CHECK-LABEL: bb.0.entry:
  bb.0.entry:
    liveins: $w0, $lr

    $sp = frame-setup SUBXri $sp, 32, 0
    frame-setup STPXi killed $fp, killed $lr, $sp, 2 :: (store (s64) into %stack.2), (store (s64) into %stack.1)
    frame-setup CFI_INSTRUCTION def_cfa_offset 32
    frame-setup CFI_INSTRUCTION offset $w30, -8, debug-location !12
    frame-setup CFI_INSTRUCTION offset $w29, -16, debug-location !12
    renamable $w0 = ADDWri killed renamable $w0, 1, 0, debug-location !12
    DBG_VALUE renamable $w0, $noreg, !9, !DIExpression(), debug-location !12
    STRWui killed $w0, $sp, 3 :: (store (s32) into %stack.0)
    DBG_VALUE $sp, 0, !9, !DIExpression(DW_OP_plus_uconst, 12), debug-location !12

    ; CHECK: DBG_VALUE renamable $w0, $noreg, !9, !DIExpression(), debug-location !12
    ; CHECK-NEXT: STRWui killed $w0, $sp, 3 :: (store (s32) into %stack.0)
    ; CHECK-NEXT: DBG_VALUE $sp, 0, !9, !DIExpression(DW_OP_plus_uconst, 12)
    ; CHECK-NEXT: DBG_VALUE $sp, 0, !9, !DIExpression(DW_OP_plus_uconst, 12)

  bb.1.artificial-bb-1:
    ; CHECK-LABEL: bb.1.artificial-bb-1:
    ; CHECK: DBG_VALUE $sp, 0, !9, !DIExpression(DW_OP_plus_uconst, 12)

  bb.2.artificial-bb-2:
    ; CHECK-LABEL: bb.2.artificial-bb-2:
    ; CHECK: DBG_VALUE $sp, 0, !9, !DIExpression(DW_OP_plus_uconst, 12)

  bb.3.return:
    ; CHECK-LABEL: bb.3.return:
    ; CHECK: DBG_VALUE $sp, 0, !9, !DIExpression(DW_OP_plus_uconst, 12)

    $w0 = LDRWui $sp, 3 :: (load (s32) from %stack.0)
    BL @use, csr_aarch64_aapcs, implicit-def $lr, implicit $sp, implicit killed $w0
    $fp, $lr = frame-destroy LDPXi $sp, 2, debug-location !15 :: (load (s64) from %stack.2), (load (s64) from %stack.1)
    $sp = frame-destroy ADDXri $sp, 32, 0, debug-location !15
    RET undef $lr, debug-location !15
...
