4
4
; All dbg.value with location "!dbg !19" are redundant in the input.
5
5
; FIXME: We do not handle non-overlapping/overlapping fragments perfectly yet.
6
6
7
- define dso_local i16 @main (i16 %a1 , i16 %a2 ) local_unnamed_addr # 0 !dbg !7 {
7
+ define dso_local i16 @main (i16 %a1 , i16 %a2 ) local_unnamed_addr !dbg !7 {
8
8
; CHECK-LABEL: @main(
9
9
; CHECK-NEXT: entry:
10
10
; CHECK-NEXT: br label [[BB0:%.*]]
@@ -23,6 +23,8 @@ define dso_local i16 @main(i16 %a1, i16 %a2) local_unnamed_addr #0 !dbg !7 {
23
23
; CHECK-NEXT: #dbg_value(i16 [[A2]], [[META12]], !DIExpression(DW_OP_constu, 2, DW_OP_shr, DW_OP_stack_value), [[META18]])
24
24
; CHECK-NEXT: br label [[BB2:%.*]]
25
25
; CHECK: bb2:
26
+ ; CHECK-NEXT: #dbg_declare(i16 %a1, !19, !DIExpression(), [[META18]])
27
+ ; CHECK-NEXT: #dbg_label([[META21:![0-9]+]], [[META18]])
26
28
; CHECK-NEXT: #dbg_value(i16 [[A1]], [[META13]], !DIExpression(DW_OP_LLVM_fragment, 0, 8), [[META18]])
27
29
; CHECK-NEXT: #dbg_value(i16 [[A1]], [[META13]], !DIExpression(DW_OP_LLVM_fragment, 8, 8), [[META18]])
28
30
; CHECK-NEXT: [[T2:%.*]] = call i16 @bar(i16 [[T1]])
@@ -40,51 +42,49 @@ entry:
40
42
br label %bb0
41
43
42
44
bb0:
43
- call void @llvm.dbg.value ( metadata i16 999 , metadata !12 , metadata !DIExpression ()) , !dbg !19
44
- call void @llvm.dbg.value ( metadata i16 996 , metadata !13 , metadata !DIExpression ()) , !dbg !19
45
- call void @llvm.dbg.value ( metadata i16 13 , metadata !13 , metadata !DIExpression ()) , !dbg !17
46
- call void @llvm.dbg.value ( metadata i16 998 , metadata !12 , metadata !DIExpression (DW_OP_constu, 2 , DW_OP_shr, DW_OP_stack_value)) , !dbg !19
47
- call void @llvm.dbg.value ( metadata i16 14 , metadata !14 , metadata !DIExpression ()) , !dbg !16
48
- call void @llvm.dbg.value ( metadata i16 997 , metadata !12 , metadata !DIExpression ()) , !dbg !19
49
- call void @llvm.dbg.value ( metadata i16 13 , metadata !13 , metadata !DIExpression ()) , !dbg !16
50
- call void @llvm.dbg.value ( metadata i16 12 , metadata !12 , metadata !DIExpression ()) , !dbg !16
45
+ #dbg_value( i16 999 , !12 , !DIExpression (), !19 )
46
+ #dbg_value( i16 996 , !13 , !DIExpression (), !19 )
47
+ #dbg_value( i16 13 , !13 , !DIExpression (), !17 )
48
+ #dbg_value( i16 998 , !12 , !DIExpression (DW_OP_constu, 2 , DW_OP_shr, DW_OP_stack_value), !19 )
49
+ #dbg_value( i16 14 , !14 , !DIExpression (), !16 )
50
+ #dbg_value( i16 997 , !12 , !DIExpression (), !19 )
51
+ #dbg_value( i16 13 , !13 , !DIExpression (), !16 )
52
+ #dbg_value( i16 12 , !12 , !DIExpression (), !16 )
51
53
br label %bb1
52
54
53
55
bb1:
54
- call void @llvm.dbg.value ( metadata i16 %a1 , metadata !14 , metadata !DIExpression ()) , !dbg !16
55
- call void @llvm.dbg.value ( metadata i16 888 , metadata !13 , metadata !DIExpression ()) , !dbg !16
56
- call void @llvm.dbg.value ( metadata i16 %a2 , metadata !12 , metadata !DIExpression ()) , !dbg !16
56
+ #dbg_value( i16 %a1 , !14 , !DIExpression (), !16 )
57
+ #dbg_value( i16 888 , !13 , !DIExpression (), !16 )
58
+ #dbg_value( i16 %a2 , !12 , !DIExpression (), !16 )
57
59
%t1 = call i16 @bar (i16 0 )
58
- call void @llvm.dbg.value ( metadata i16 %a1 , metadata !14 , metadata !DIExpression ()) , !dbg !19
59
- call void @llvm.dbg.value ( metadata i16 %t1 , metadata !13 , metadata !DIExpression ()) , !dbg !16
60
- call void @llvm.dbg.value ( metadata i16 %a2 , metadata !12 , metadata !DIExpression (DW_OP_constu, 2 , DW_OP_shr, DW_OP_stack_value)) , !dbg !16
60
+ #dbg_value( i16 %a1 , !14 , !DIExpression (), !19 )
61
+ #dbg_value( i16 %t1 , !13 , !DIExpression (), !16 )
62
+ #dbg_value( i16 %a2 , !12 , !DIExpression (DW_OP_constu, 2 , DW_OP_shr, DW_OP_stack_value), !16 )
61
63
br label %bb2
62
64
63
65
bb2:
64
- call void @llvm.dbg.value (metadata i16 %a1 , metadata !13 , metadata !DIExpression (DW_OP_LLVM_fragment, 0 , 8 )), !dbg !19
65
- call void @llvm.dbg.value (metadata i16 %a1 , metadata !13 , metadata !DIExpression (DW_OP_LLVM_fragment, 8 , 8 )), !dbg !19
66
- call void @llvm.dbg.value (metadata i16 %a1 , metadata !13 , metadata !DIExpression (DW_OP_LLVM_fragment, 0 , 8 )), !dbg !16
67
- call void @llvm.dbg.value (metadata i16 %a1 , metadata !13 , metadata !DIExpression (DW_OP_LLVM_fragment, 8 , 8 )), !dbg !16
66
+ #dbg_value(i16 %a1 , !13 , !DIExpression (DW_OP_LLVM_fragment, 0 , 8 ), !19 )
67
+ #dbg_value(i16 %a1 , !13 , !DIExpression (DW_OP_LLVM_fragment, 8 , 8 ), !19 )
68
+ ; Check dbg_declare and dbg_label don't interfere with the backward scan.
69
+ #dbg_declare(i16 %a1 , !21 , !DIExpression (), !16 )
70
+ #dbg_label(!20 , !16 )
71
+ #dbg_value(i16 %a1 , !13 , !DIExpression (DW_OP_LLVM_fragment, 0 , 8 ), !16 )
72
+ #dbg_value(i16 %a1 , !13 , !DIExpression (DW_OP_LLVM_fragment, 8 , 8 ), !16 )
68
73
%t2 = call i16 @bar (i16 %t1 )
69
- call void @llvm.dbg.value ( metadata i16 %t2 , metadata !13 , metadata !DIExpression (DW_OP_LLVM_fragment, 0 , 8 )) , !dbg !16
70
- call void @llvm.dbg.value ( metadata i16 %a1 , metadata !13 , metadata !DIExpression (DW_OP_LLVM_fragment, 8 , 8 )) , !dbg !19
74
+ #dbg_value( i16 %t2 , !13 , !DIExpression (DW_OP_LLVM_fragment, 0 , 8 ), !16 )
75
+ #dbg_value( i16 %a1 , !13 , !DIExpression (DW_OP_LLVM_fragment, 8 , 8 ), !19 )
71
76
br label %bb3
72
77
73
78
bb3:
74
- call void @llvm.dbg.value ( metadata i16 %a1 , metadata !13 , metadata !DIExpression (DW_OP_LLVM_fragment, 0 , 8 )) , !dbg !19
75
- call void @llvm.dbg.value ( metadata i16 %a1 , metadata !13 , metadata !DIExpression ()) , !dbg !16
79
+ #dbg_value( i16 %a1 , !13 , !DIExpression (DW_OP_LLVM_fragment, 0 , 8 ), !19 )
80
+ #dbg_value( i16 %a1 , !13 , !DIExpression (), !16 )
76
81
br label %exit
77
82
78
83
exit:
79
84
ret i16 %t2
80
85
}
81
86
82
- declare void @llvm.dbg.value (metadata , metadata , metadata ) #1
83
- declare i16 @bar (i16 ) #2
84
-
85
- attributes #0 = { noinline nounwind }
86
- attributes #1 = { nounwind readnone speculatable willreturn }
87
- attributes #2 = { noinline nounwind readnone }
87
+ declare i16 @bar (i16 )
88
88
89
89
!llvm.dbg.cu = !{!0 }
90
90
!llvm.module.flags = !{!3 , !4 , !5 }
@@ -110,3 +110,5 @@ attributes #2 = { noinline nounwind readnone }
110
110
!17 = !DILocation (line: 0 , scope: !7 , inlinedAt: !18 )
111
111
!18 = !DILocation (line: 1 , scope: !7 )
112
112
!19 = !DILocation (line: 77 , scope: !7 )
113
+ !20 = !DILabel (scope: !7 , name: "label" , file: !1 , line: 3 )
114
+ !21 = !DILocalVariable (name: "z" , scope: !7 , file: !1 , line: 10 , type: !10 )
0 commit comments