This patch changes debugify to support debug variable records, and subsequently to no longer convert modules automatically to intrinsics when entering debugify.
60 lines
3.3 KiB
YAML
60 lines
3.3 KiB
YAML
# 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: call{{( addrspace\([0-9]+\))?}} void @llvm.dbg.value(metadata i32 %add, metadata [[add:![0-9]+]], metadata !DIExpression()), !dbg [[L1]]
|
|
%sub = sub i32 %add, %b
|
|
; ALL-NEXT: %sub = sub i32 %add, %b, !dbg [[L2:![0-9]+]]
|
|
; VALUE-NEXT: call{{( addrspace\([0-9]+\))?}} void @llvm.dbg.value(metadata i32 %sub, metadata [[sub:![0-9]+]], metadata !DIExpression()), !dbg [[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
|
|
...
|