# 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:       2
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: 0 }
  - { id: 1, type: spill-slot, offset: -8, size: 8, alignment: 8, stack-id: 0, 
      callee-saved-register: '$lr' }
  - { id: 2, type: spill-slot, offset: -16, size: 8, alignment: 8, stack-id: 0, 
      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 8 into %stack.2), (store 8 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 4 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 4 into %stack.0)
    ; 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 4 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 8 from %stack.2), (load 8 from %stack.1)
    $sp = frame-destroy ADDXri $sp, 32, 0, debug-location !15
    RET undef $lr, debug-location !15
...
