| # RUN: llc -run-pass=mir-debugify -o - %s | FileCheck --check-prefixes=ALL,VALUE %s | 
 | # RUN: llc -run-pass=mir-debugify -debugify-level=locations -o - %s | FileCheck --check-prefixes=ALL --implicit-check-not=dbg.value %s | 
 | # RUN: llc -run-pass=mir-debugify,mir-strip-debug,mir-debugify -o - %s | FileCheck --check-prefixes=ALL,VALUE %s | 
 | # RUN: llc -run-pass=mir-debugify,mir-strip-debug -o - %s | FileCheck --check-prefix=STRIP %s | 
 | # RUN: llc --experimental-debuginfo-iterators=false -run-pass=mir-debugify -o - %s | FileCheck --check-prefixes=ALL,VALUE %s | 
 | # RUN: llc --experimental-debuginfo-iterators=false -run-pass=mir-debugify -debugify-level=locations -o - %s | FileCheck --check-prefixes=ALL --implicit-check-not=dbg.value %s | 
 | # RUN: llc --experimental-debuginfo-iterators=false -run-pass=mir-debugify,mir-strip-debug,mir-debugify -o - %s | FileCheck --check-prefixes=ALL,VALUE %s | 
 | # RUN: llc --experimental-debuginfo-iterators=false -run-pass=mir-debugify,mir-strip-debug -o - %s | FileCheck --check-prefix=STRIP %s | 
 |  | 
 | --- | | 
 |   ; ModuleID = 'loc-only.ll' | 
 |   source_filename = "loc-only.ll" | 
 |  | 
 |   ; ALL-LABEL: @test | 
 |   define i32 @test(i32 %a, i32 %b) { | 
 |     %add = add i32 %a, 2 | 
 |   ; ALL-NEXT:  %add = add i32 %a, 2, !dbg [[L1:![0-9]+]] | 
 |   ; VALUE-NEXT: #dbg_value(i32 %add, [[add:![0-9]+]], !DIExpression(), [[L1]] | 
 |     %sub = sub i32 %add, %b | 
 |   ; ALL-NEXT: %sub = sub i32 %add, %b, !dbg [[L2:![0-9]+]] | 
 |   ; VALUE-NEXT: #dbg_value(i32 %sub, [[sub:![0-9]+]], !DIExpression(), [[L2]] | 
 |   ; ALL-NEXT: ret i32 %sub, !dbg [[L3:![0-9]+]] | 
 |     ret i32 %sub | 
 |   } | 
 |  | 
 |   ; ALL: !llvm.dbg.cu = !{![[CU:[0-9]+]]} | 
 |   ; ALL: !llvm.debugify = | 
 |   ; ALL: !llvm.module.flags = !{![[VERSION:[0-9]+]]} | 
 |   ; ALL: ![[CU]] = distinct !DICompileUnit( | 
 |   ; ALL: ![[VERSION]] = !{i32 2, !"Debug Info Version", i32 3} | 
 |   ; VALUE: [[VAR1:![0-9]+]] = !DILocalVariable(name: "1" | 
 |   ; VALUE: [[VAR2:![0-9]+]] = !DILocalVariable(name: "2" | 
 |   ; STRIP-NOT: !llvm.debugify | 
 |   ; STRIP-NOT: !llvm.mir.debugify | 
 |  | 
 | ... | 
 | --- | 
 | name:            test | 
 | body:             | | 
 |   bb.1 (%ir-block.0): | 
 |     %0:_(s32) = IMPLICIT_DEF | 
 |     %1:_(s32) = IMPLICIT_DEF | 
 |     %2:_(s32) = G_CONSTANT i32 2 | 
 |     %3:_(s32) = G_ADD %0, %2 | 
 |     %4:_(s32) = G_SUB %3, %1 | 
 |     ; There's no attempt to have the locations make sense as it's an imaginary | 
 |     ; source file anyway. These first three coincide with IR-level information | 
 |     ; and therefore use metadata references. | 
 |     ; ALL: %0:_(s32) = IMPLICIT_DEF debug-location [[L1]] | 
 |     ; VALUE: DBG_VALUE %0(s32), $noreg, [[VAR1]], !DIExpression(), debug-location [[L1]] | 
 |     ; ALL: %1:_(s32) = IMPLICIT_DEF debug-location [[L2]] | 
 |     ; VALUE: DBG_VALUE %1(s32), $noreg, [[VAR2]], !DIExpression(), debug-location [[L2]] | 
 |     ; ALL: %2:_(s32) = G_CONSTANT i32 2, debug-location [[L3]] | 
 |     ; VALUE: DBG_VALUE %2(s32), $noreg, [[VAR1]], !DIExpression(), debug-location [[L3]] | 
 |     ; ALL: %3:_(s32) = G_ADD %0, %2, debug-location !DILocation(line: 4, column: 1, scope: [[SP:![0-9]+]]) | 
 |     ; VALUE: DBG_VALUE %3(s32), $noreg, [[VAR1]], !DIExpression(), debug-location !DILocation(line: 4 | 
 |     ; ALL: %4:_(s32) = G_SUB %3, %1, debug-location !DILocation(line: 5, column: 1, scope: [[SP]]) | 
 |     ; VALUE: DBG_VALUE %4(s32), $noreg, [[VAR1]], !DIExpression(), debug-location !DILocation(line: 5 | 
 | ... |