# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
# RUN: llc -start-after=livedebugvalues -filetype=obj -o - %s | \
# RUN:    llvm-dwarfdump - | FileCheck %s
#
# This tests the edge-case where a complex fragment has exactly
# the size of a subregister of the register the DBG_VALUE points to.
#

# CHECK: DW_TAG_compile_unit
# CHECK: DW_AT_producer	("")
# CHECK: DW_AT_language	(DW_LANG_C_plus_plus_14)
# CHECK: DW_AT_name	("t.cpp")
# CHECK: DW_AT_stmt_list	(0x00000000)
# CHECK: DW_AT_comp_dir	("/")
# CHECK: DW_AT_APPLE_optimized	(true)
# CHECK: DW_AT_low_pc	(0x00000000)
# CHECK: DW_AT_high_pc	(0x00000008)

# CHECK: DW_TAG_subprogram
# CHECK: DW_AT_low_pc	(0x00000000)
# CHECK: DW_AT_high_pc	(0x00000008)
# CHECK: DW_AT_APPLE_omit_frame_ptr	(true)
# CHECK: DW_AT_frame_base	(DW_OP_reg13 SP)
# CHECK: DW_AT_name	("f")
# CHECK: DW_AT_decl_file	("/t.cpp")
# CHECK: DW_AT_decl_line	(1)
# CHECK: DW_AT_external	(true)
# CHECK: DW_AT_APPLE_isa	(0x01)

# CHECK: DW_TAG_variable
# CHECK: DW_AT_location	(DW_OP_regx D16, DW_OP_piece 0x8)
# CHECK: DW_AT_name	("q8")
# CHECK: DW_AT_decl_file	("/t.cpp")
# CHECK: DW_AT_decl_line	(1)
# CHECK: DW_AT_type	(0x0000005b "uint8x8x2_t")

# CHECK: DW_TAG_variable
# CHECK: DW_AT_location	(DW_OP_regx D18, DW_OP_piece 0x7)
# CHECK: DW_AT_name	("q9")
# CHECK: DW_AT_decl_file	("/t.cpp")
# CHECK: DW_AT_decl_line	(1)
# CHECK: DW_AT_type	(0x0000005b "uint8x8x2_t")

# CHECK: DW_TAG_structure_type
# CHECK: DW_AT_calling_convention	(DW_CC_pass_by_value)
# CHECK: DW_AT_name	("uint8x8x2_t")
# CHECK: DW_AT_byte_size	(0x10)
# CHECK: DW_AT_decl_file	("/t.cpp")
# CHECK: DW_AT_decl_line	(113)


--- |
  target triple = "thumbv7s-apple-ios"
  define hidden void @f() !dbg !5 {
  for.body:
  ret void, !dbg !20
  }
  !llvm.module.flags = !{!1, !2}
  !llvm.dbg.cu = !{!3}
  !1 = !{i32 7, !"Dwarf Version", i32 4}
  !2 = !{i32 2, !"Debug Info Version", i32 3}
  !3 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus_14, file: !4, isOptimized: true, runtimeVersion: 0, emissionKind: FullDebug)
  !4 = !DIFile(filename: "t.cpp", directory: "/")
  !5 = distinct !DISubprogram(name: "f",scope: !4, file: !4, line: 1, type: !6, scopeLine: 1, unit: !3)
  !6 = !DISubroutineType(types: !{})
  !7 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "uint8x8x2_t", file: !4, line: 113, size: 128, flags: DIFlagTypePassByValue, elements: !{})
  !8 = !DILocalVariable(name: "q8", scope: !5, file: !4, line: 1, type: !7)
  !9 = !DILocalVariable(name: "q9", scope: !5, file: !4, line: 1, type: !7)
  !20 = !DILocation(line: 0, scope: !5)
name:            f
tracksRegLiveness: true
body:             |
  bb.2.for.body:
    liveins: $r2

    t2CMPri killed renamable $r2, 5, 14, $noreg, implicit-def $cpsr
    DBG_VALUE $q8, $noreg, !8, !DIExpression(DW_OP_LLVM_fragment, 0, 64), debug-location !20
    DBG_VALUE $q9, $noreg, !9, !DIExpression(DW_OP_LLVM_fragment, 0, 56), debug-location !20
    t2Bcc %bb.2.for.body, 0, killed $cpsr, debug-location !20
    tB %bb.2.for.body, 14, $noreg
