44; All dbg.value with location "!dbg !19" are redundant in the input.
55; FIXME: We do not handle non-overlapping/overlapping fragments perfectly yet.
66
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 {
88; CHECK-LABEL: @main(
99; CHECK-NEXT: entry:
1010; CHECK-NEXT: br label [[BB0:%.*]]
@@ -23,6 +23,8 @@ define dso_local i16 @main(i16 %a1, i16 %a2) local_unnamed_addr #0 !dbg !7 {
2323; CHECK-NEXT: #dbg_value(i16 [[A2]], [[META12]], !DIExpression(DW_OP_constu, 2, DW_OP_shr, DW_OP_stack_value), [[META18]])
2424; CHECK-NEXT: br label [[BB2:%.*]]
2525; CHECK: bb2:
26+ ; CHECK-NEXT: #dbg_declare(i16 %a1, !19, !DIExpression(), [[META18]])
27+ ; CHECK-NEXT: #dbg_label([[META21:![0-9]+]], [[META18]])
2628; CHECK-NEXT: #dbg_value(i16 [[A1]], [[META13]], !DIExpression(DW_OP_LLVM_fragment, 0, 8), [[META18]])
2729; CHECK-NEXT: #dbg_value(i16 [[A1]], [[META13]], !DIExpression(DW_OP_LLVM_fragment, 8, 8), [[META18]])
2830; CHECK-NEXT: [[T2:%.*]] = call i16 @bar(i16 [[T1]])
@@ -40,51 +42,49 @@ entry:
4042 br label %bb0
4143
4244bb0:
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 )
5153 br label %bb1
5254
5355bb1:
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 )
5759 %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 )
6163 br label %bb2
6264
6365bb2:
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 )
6873 %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 )
7176 br label %bb3
7277
7378bb3:
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 )
7681 br label %exit
7782
7883exit:
7984 ret i16 %t2
8085}
8186
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 )
8888
8989!llvm.dbg.cu = !{!0 }
9090!llvm.module.flags = !{!3 , !4 , !5 }
@@ -110,3 +110,5 @@ attributes #2 = { noinline nounwind readnone }
110110!17 = !DILocation (line: 0 , scope: !7 , inlinedAt: !18 )
111111!18 = !DILocation (line: 1 , scope: !7 )
112112!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