1
1
;; Roundtrip tests.
2
- ; RUN: llvm-as --write-experimental-debuginfo-iterators-to-bitcode=true %s -o - | llvm-dis | FileCheck %s
2
+
3
+ ;; Load RemoveDIs mode in llvm-dis but write out debug intrinsics.
4
+ ; RUN: llvm-as --write-experimental-debuginfo-iterators-to-bitcode=true %s -o - \
5
+ ; RUN: | llvm-dis --load-bitcode-into-experimental-debuginfo-iterators=true --write-experimental-debuginfo=false \
6
+ ; RUN: | FileCheck %s
7
+
8
+ ;; Load and write RemoveDIs mode in llvm-dis.
9
+ ; RUN: llvm-as --write-experimental-debuginfo-iterators-to-bitcode=true %s -o - \
10
+ ; RUN: | llvm-dis --load-bitcode-into-experimental-debuginfo-iterators=true --write-experimental-debuginfo=true \
11
+ ; RUN: | FileCheck %s --check-prefixes=RECORDS
12
+
3
13
;; Check that verify-uselistorder passes regardless of input format.
4
14
; RUN: llvm-as %s --write-experimental-debuginfo-iterators-to-bitcode=true -o - | verify-uselistorder
5
15
; RUN: verify-uselistorder %s
@@ -39,16 +49,24 @@ entry:
39
49
; CHECK-NEXT: dbg.value(metadata ![[empty:[0-9]+]], metadata ![[e]], metadata !DIExpression()), !dbg ![[dbg]]
40
50
; CHECK-NEXT: dbg.value(metadata i32 poison, metadata ![[e]], metadata !DIExpression()), !dbg ![[dbg]]
41
51
; CHECK-NEXT: dbg.value(metadata i32 1, metadata ![[f:[0-9]+]], metadata !DIExpression()), !dbg ![[dbg]]
52
+ ; RECORDS: entry:
53
+ ; RECORDS-NEXT: dbg_value(i32 %p, ![[e:[0-9]+]], !DIExpression(), ![[dbg:[0-9]+]])
54
+ ; RECORDS-NEXT: dbg_value(![[empty:[0-9]+]], ![[e]], !DIExpression(), ![[dbg]])
55
+ ; RECORDS-NEXT: dbg_value(i32 poison, ![[e]], !DIExpression(), ![[dbg]])
56
+ ; RECORDS-NEXT: dbg_value(i32 1, ![[f:[0-9]+]], !DIExpression(), ![[dbg]])
42
57
tail call void @llvm.dbg.value (metadata i32 %p , metadata !32 , metadata !DIExpression ()), !dbg !19
43
58
tail call void @llvm.dbg.value (metadata !29 , metadata !32 , metadata !DIExpression ()), !dbg !19
44
59
tail call void @llvm.dbg.value (metadata i32 poison, metadata !32 , metadata !DIExpression ()), !dbg !19
45
60
tail call void @llvm.dbg.value (metadata i32 1 , metadata !33 , metadata !DIExpression ()), !dbg !19
46
61
;; Arglist with an argument, constant, local use before def, poison.
47
62
; CHECK-NEXT: dbg.value(metadata !DIArgList(i32 %p, i32 0, i32 %0, i32 poison), metadata ![[f]], metadata !DIExpression(DW_OP_LLVM_arg, 0, DW_OP_LLVM_arg, 1, DW_OP_plus, DW_OP_LLVM_arg, 2, DW_OP_LLVM_arg, 3, DW_OP_plus, DW_OP_minus)), !dbg ![[dbg]]
63
+ ; RECORDS-NEXT: dbg_value(!DIArgList(i32 %p, i32 0, i32 %0, i32 poison), ![[f]], !DIExpression(DW_OP_LLVM_arg, 0, DW_OP_LLVM_arg, 1, DW_OP_plus, DW_OP_LLVM_arg, 2, DW_OP_LLVM_arg, 3, DW_OP_plus, DW_OP_minus), ![[dbg]])
48
64
tail call void @llvm.dbg.value (metadata !DIArgList (i32 %p , i32 0 , i32 %0 , i32 poison), metadata !33 , metadata !DIExpression (DW_OP_LLVM_arg, 0 , DW_OP_LLVM_arg, 1 , DW_OP_plus, DW_OP_LLVM_arg, 2 , DW_OP_LLVM_arg, 3 , DW_OP_plus, DW_OP_minus)), !dbg !19
49
65
;; Check dbg.assign use before def (value, addr and ID). Check expression order too.
50
66
; CHECK: dbg.assign(metadata i32 %0, metadata ![[i:[0-9]+]], metadata !DIExpression(DW_OP_plus_uconst, 0),
51
67
; CHECK-SAME: metadata ![[ID:[0-9]+]], metadata ptr %a, metadata !DIExpression(DW_OP_plus_uconst, 1)), !dbg ![[dbg]]
68
+ ; RECORDS: dbg_assign(i32 %0, ![[i:[0-9]+]], !DIExpression(DW_OP_plus_uconst, 0),
69
+ ; RECORDS-SAME: ![[ID:[0-9]+]], ptr %a, !DIExpression(DW_OP_plus_uconst, 1), ![[dbg]])
52
70
tail call void @llvm.dbg.assign (metadata i32 %0 , metadata !36 , metadata !DIExpression (DW_OP_plus_uconst, 0 ), metadata !37 , metadata ptr %a , metadata !DIExpression (DW_OP_plus_uconst, 1 )), !dbg !19
53
71
%a = alloca i32 , align 4 , !DIAssignID !37
54
72
; CHECK: %a = alloca i32, align 4, !DIAssignID ![[ID]]
@@ -58,24 +76,35 @@ entry:
58
76
; CHECK-NEXT: dbg.declare(metadata ptr poison, metadata ![[c:[0-9]+]], metadata !DIExpression()), !dbg ![[dbg]]
59
77
; CHECK-NEXT: dbg.declare(metadata ptr null, metadata ![[d:[0-9]+]], metadata !DIExpression()), !dbg ![[dbg]]
60
78
; CHECK-NEXT: dbg.declare(metadata ptr @g, metadata ![[h:[0-9]+]], metadata !DIExpression()), !dbg ![[dbg]]
79
+ ; RECORDS: %a = alloca i32, align 4, !DIAssignID ![[ID]]
80
+ ;; Check dbg.declare configurations.
81
+ ; RECORDS-NEXT: dbg_declare(ptr %a, ![[a:[0-9]+]], !DIExpression(), ![[dbg]])
82
+ ; RECORDS-NEXT: dbg_declare(![[empty:[0-9]+]], ![[b:[0-9]+]], !DIExpression(), ![[dbg]])
83
+ ; RECORDS-NEXT: dbg_declare(ptr poison, ![[c:[0-9]+]], !DIExpression(), ![[dbg]])
84
+ ; RECORDS-NEXT: dbg_declare(ptr null, ![[d:[0-9]+]], !DIExpression(), ![[dbg]])
85
+ ; RECORDS-NEXT: dbg_declare(ptr @g, ![[h:[0-9]+]], !DIExpression(), ![[dbg]])
61
86
tail call void @llvm.dbg.declare (metadata ptr %a , metadata !17 , metadata !DIExpression ()), !dbg !19
62
87
tail call void @llvm.dbg.declare (metadata !29 , metadata !28 , metadata !DIExpression ()), !dbg !19
63
88
tail call void @llvm.dbg.declare (metadata ptr poison, metadata !30 , metadata !DIExpression ()), !dbg !19
64
89
tail call void @llvm.dbg.declare (metadata ptr null , metadata !31 , metadata !DIExpression ()), !dbg !19
65
90
tail call void @llvm.dbg.declare (metadata ptr @g , metadata !35 , metadata !DIExpression ()), !dbg !19
66
91
;; Argument value dbg.declare.
67
92
; CHECK: dbg.declare(metadata ptr %storage, metadata ![[g:[0-9]+]], metadata !DIExpression()), !dbg ![[dbg]]
93
+ ; RECORDS: dbg_declare(ptr %storage, ![[g:[0-9]+]], !DIExpression(), ![[dbg]])
68
94
tail call void @llvm.dbg.declare (metadata ptr %storage , metadata !34 , metadata !DIExpression ()), !dbg !19
69
95
;; Use before def dbg.value.
70
96
; CHECK: dbg.value(metadata i32 %0, metadata ![[e]], metadata !DIExpression()), !dbg ![[dbg]]
97
+ ; RECORDS: dbg_value(i32 %0, ![[e]], !DIExpression(), ![[dbg]])
71
98
tail call void @llvm.dbg.value (metadata i32 %0 , metadata !32 , metadata !DIExpression ()), !dbg !19
72
99
%0 = load i32 , ptr @g , align 4 , !dbg !20
73
100
;; Non-argument local value dbg.value.
74
101
; CHECK: dbg.value(metadata i32 %0, metadata ![[e]], metadata !DIExpression()), !dbg ![[dbg]]
102
+ ; RECORDS: dbg_value(i32 %0, ![[e]], !DIExpression(), ![[dbg]])
75
103
tail call void @llvm.dbg.value (metadata i32 %0 , metadata !32 , metadata !DIExpression ()), !dbg !19
76
104
store i32 %0 , ptr %a , align 4 , !dbg !19
77
105
%1 = load i32 , ptr %a , align 4 , !dbg !25
78
106
; CHECK: dbg.label(metadata ![[label:[0-9]+]]), !dbg ![[dbg]]
107
+ ; RECORDS: dbg_label(![[label:[0-9]+]], ![[dbg]])
79
108
tail call void @llvm.dbg.label (metadata !38 ), !dbg !19
80
109
ret i32 %1 , !dbg !27
81
110
}
0 commit comments