llvm.org GIT mirror llvm / f589eef
Debug Info Finder|Verifier: handle DbgLoc attached to instructions. Also remove checking of llvm.dbg.sp since it is not used in generating dwarf. Current state of Finder: DebugInfoFinder tries to list all debug info MDNodes used in a module. To list debug info MDNodes used by an instruction, DebugInfoFinder provides processDeclare, processValue and processLocation to handle DbgDeclareInst, DbgValueInst and DbgLoc attached to instructions. processModule will go through all DICompileUnits in llvm.dbg.cu and list debug info MDNodes used by the CUs. TODO: 1> Finder has a list of CUs, SPs, Types, Scopes and global variables. We need to add a list of variables that are used by DbgDeclareInst and DbgValueInst. 2> MDString fields should be null or isa<MDString> and MDNode fields should be null or isa<MDNode>. We currently use empty string or int 0 to represent null. 3> Go though Verify functions and make sure that they check field types. 4> Clean up existing testing cases to remove llvm.dbg.sp and make sure each testing case has a llvm.dbg.cu. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187609 91177308-0d34-0410-b5e6-96231b3b80d8 Manman Ren 6 years ago
17 changed file(s) with 50 addition(s) and 50 deletion(s). Raw diff Collapse all Expand all
716716 /// cleanseInlinedVariable - Remove inlined scope from the variable.
717717 DIVariable cleanseInlinedVariable(MDNode *DV, LLVMContext &VMContext);
718718
719 /// DebugInfoFinder tries to list all debug info MDNodes in a module. To
719 /// DebugInfoFinder tries to list all debug info MDNodes used in a module. To
720720 /// list debug info MDNodes used by an instruction, DebugInfoFinder uses
721 /// processDeclare and processValue. processModule will go through
722 /// all DICompileUnits and list debug info MDNodes used by the CUs.
721 /// processDeclare, processValue and processLocation to handle DbgDeclareInst,
722 /// DbgValueInst and DbgLoc attached to instructions. processModule will go
723 /// through all DICompileUnits in llvm.dbg.cu and list debug info MDNodes
724 /// used by the CUs.
723725 class DebugInfoFinder {
724726 public:
725727 /// processModule - Process entire module and collect debug info
730732 void processDeclare(const DbgDeclareInst *DDI);
731733 /// Process DbgValueInst.
732734 void processValue(const DbgValueInst *DVI);
735 /// processLocation - Process DILocation.
736 void processLocation(DILocation Loc);
733737
734738 /// Clear all lists.
735739 void reset();
742746
743747 /// processSubprogram - Process DISubprogram.
744748 void processSubprogram(DISubprogram SP);
745
746 /// processLocation - Process DILocation.
747 void processLocation(DILocation Loc);
748749
749750 void processScope(DIScope Scope);
750751
907907 return;
908908 }
909909 }
910 if (NamedMDNode *SP_Nodes = M.getNamedMetadata("llvm.dbg.sp")) {
911 for (unsigned i = 0, e = SP_Nodes->getNumOperands(); i != e; ++i)
912 processSubprogram(DISubprogram(SP_Nodes->getOperand(i)));
913 }
914910 }
915911
916912 /// processLocation - Process DILocation.
917913 void DebugInfoFinder::processLocation(DILocation Loc) {
918 if (!Loc.Verify()) return;
919 DIDescriptor S(Loc.getScope());
920 if (S.isCompileUnit())
921 addCompileUnit(DICompileUnit(S));
922 else if (S.isSubprogram())
923 processSubprogram(DISubprogram(S));
924 else if (S.isLexicalBlock())
925 processLexicalBlock(DILexicalBlock(S));
926 else if (S.isLexicalBlockFile()) {
927 DILexicalBlockFile DBF = DILexicalBlockFile(S);
928 processLexicalBlock(DILexicalBlock(DBF.getScope()));
929 }
914 if (!Loc) return;
915 processScope(Loc.getScope());
930916 processLocation(Loc.getOrigLocation());
931917 }
932918
20952095 MDNode *MD = I.getMetadata(LLVMContext::MD_range);
20962096 Assert1(!MD || isa(I), "Ranges are only for loads!", &I);
20972097
2098 if (!DisableDebugInfoVerifier) {
2099 MD = I.getMetadata(LLVMContext::MD_dbg);
2100 Finder.processLocation(DILocation(MD));
2101 }
2102
20982103 InstsInThisBlock.insert(&I);
20992104 }
21002105
44
55 ; Bugpoint should keep the call's metadata attached to the call.
66
7 ; CHECK: call void @foo(), !dbg !0, !attach !2
7 ; CHECK: call void @foo(), !dbg !0, !attach !4
88 ; CHECK: !0 = metadata !{i32 104, i32 105, metadata !1, metadata !1}
9 ; CHECK: !1 = metadata !{i32 0, i32 0, i32 0, metadata !"source.c", metadata !"/dir", metadata !"me", i1 true, i1 false, metadata !"", i32 0}
10 ; CHECK: !2 = metadata !{metadata !"the call to foo"}
9 ; CHECK: !1 = metadata !{i32 458769, metadata !2, i32 0, metadata !"me", i1 true, metadata !"", i32 0, metadata !3, metadata !3, null, null, null, metadata !""}
10 ; CHECK: !2 = metadata !{metadata !"source.c", metadata !"/dir"}
11 ; CHECK: !3 = metadata !{i32 0}
12 ; CHECK: !4 = metadata !{metadata !"the call to foo"}
1113
1214 %rust_task = type {}
1315 define void @test(i32* %a, i8* %b) {
2729 !3 = metadata !{metadata !"noise"}
2830 !4 = metadata !{metadata !"filler"}
2931
30 !9 = metadata !{i32 0, i32 0, i32 0, metadata !"source.c", metadata !"/dir", metadata !"me", i1 true, i1 false, metadata !"", i32 0}
32 !9 = metadata !{i32 458769, metadata !15, i32 0, metadata !"me", i1 true, metadata !"", i32 0, metadata !16, metadata !16, null, null, null, metadata !""}
3133 !10 = metadata !{i32 100, i32 101, metadata !9, metadata !9}
3234 !11 = metadata !{i32 102, i32 103, metadata !9, metadata !9}
3335 !12 = metadata !{i32 104, i32 105, metadata !9, metadata !9}
3436 !13 = metadata !{i32 106, i32 107, metadata !9, metadata !9}
3537 !14 = metadata !{i32 108, i32 109, metadata !9, metadata !9}
38 !15 = metadata !{metadata !"source.c", metadata !"/dir"}
39 !16 = metadata !{i32 0}
1212 declare void @llvm.dbg.value(metadata, i64, metadata) nounwind readnone
1313
1414 !llvm.dbg.cu = !{!3}
15 !0 = metadata !{i32 524545, metadata !1, metadata !"b", metadata !2, i32 93, metadata !6} ; [ DW_TAG_arg_variable ]
15 !0 = metadata !{i32 524545, metadata !1, metadata !"b", metadata !2, i32 93, metadata !6, i32 0, null} ; [ DW_TAG_arg_variable ]
1616 !1 = metadata !{i32 524334, metadata !12, null, metadata !"__addvsi3", metadata !"__addvsi3", metadata !"__addvsi3", i32 94, metadata !4, i1 false, i1 true, i32 0, i32 0, null, i32 0, i32 0, null, null, null, null, i32 0} ; [ DW_TAG_subprogram ]
1717 !2 = metadata !{i32 524329, metadata !12} ; [ DW_TAG_file_type ]
1818 !12 = metadata !{metadata !"libgcc2.c", metadata !"/Users/bwilson/local/nightly/test-2010-04-14/build/llvmgcc.roots/llvmgcc~obj/src/gcc"}
19 !3 = metadata !{i32 524305, metadata !12, i32 1, metadata !"4.2.1 (Based on Apple Inc. build 5658) (LLVM build 00)", i1 true, metadata !"", i32 0, metadata !13, metadata !13, null, null, null, metadata !""} ; [ DW_TAG_compile_unit ]
19 !3 = metadata !{i32 524305, metadata !12, i32 1, metadata !"4.2.1 (Based on Apple Inc. build 5658) (LLVM build 00)", i1 true, metadata !"", i32 0, metadata !13, metadata !13, metadata !14, null, null, metadata !""} ; [ DW_TAG_compile_unit ]
2020 !4 = metadata !{i32 524309, metadata !12, metadata !2, metadata !"", i32 0, i64 0, i64 0, i64 0, i32 0, null, metadata !5, i32 0, null} ; [ DW_TAG_subroutine_type ]
2121 !5 = metadata !{metadata !6, metadata !6, metadata !6}
2222 !6 = metadata !{i32 524310, metadata !12, null, metadata !"SItype", i32 152, i64 0, i64 0, i64 0, i32 0, metadata !8} ; [ DW_TAG_typedef ]
2323 !7 = metadata !{i32 524329, metadata !"libgcc2.h", metadata !"/Users/bwilson/local/nightly/test-2010-04-14/build/llvmgcc.roots/llvmgcc~obj/src/gcc", metadata !3} ; [ DW_TAG_file_type ]
2424 !8 = metadata !{i32 524324, metadata !12, metadata !2, metadata !"int", i32 0, i64 32, i64 32, i64 0, i32 0, i32 5} ; [ DW_TAG_base_type ]
2525 !9 = metadata !{i32 95, i32 0, metadata !10, null}
26 !10 = metadata !{i32 524299, metadata !1, i32 94, i32 0} ; [ DW_TAG_lexical_block ]
26 !10 = metadata !{i32 524299, metadata !12, metadata !1, i32 94, i32 0, i32 0} ; [ DW_TAG_lexical_block ]
2727 !11 = metadata !{i32 100, i32 0, metadata !10, null}
2828 !13 = metadata !{i32 0}
29 !14 = metadata !{metadata !1}
8080 !11 = metadata !{metadata !12}
8181 !12 = metadata !{i32 458785, i64 0, i64 1} ; [ DW_TAG_subrange_type ]
8282 !13 = metadata !{i32 3, i32 0, metadata !14, null}
83 !14 = metadata !{i32 458763, metadata !1, i32 0, i32 0} ; [ DW_TAG_lexical_block ]
83 !14 = metadata !{i32 458763, metadata !17, metadata !1, i32 0, i32 0, i32 0} ; [ DW_TAG_lexical_block ]
8484 !15 = metadata !{i32 4, i32 0, metadata !14, null}
8585 !16 = metadata !{i32 5, i32 0, metadata !14, null}
8686 !17 = metadata !{metadata !"vla.c", metadata !"/tmp/"}
4646 !14 = metadata !{i32 786445, metadata !19, metadata !7, metadata !"P2", i32 8, i64 128, i64 64, i64 128, i32 0, metadata !10} ; [ DW_TAG_member ]
4747 !15 = metadata !{i32 11, i32 0, metadata !1, null}
4848 !16 = metadata !{i32 12, i32 0, metadata !17, null}
49 !17 = metadata !{i32 786443, metadata !1, i32 11, i32 0} ; [ DW_TAG_lexical_block ]
49 !17 = metadata !{i32 786443, metadata !19, metadata !1, i32 11, i32 0, i32 0} ; [ DW_TAG_lexical_block ]
5050 !18 = metadata !{metadata !1}
5151 !19 = metadata !{metadata !"b2.c", metadata !"/tmp/"}
5252 !20 = metadata !{i32 0}
5151 !27 = metadata !{i32 786443, metadata !31, metadata !18, i32 19, i32 0, i32 0} ; [ DW_TAG_lexical_block ]
5252 !28 = metadata !{i32 786688, metadata !26, metadata !"b", metadata !3, i32 21, metadata !7, i32 0, null} ; [ DW_TAG_auto_variable ]
5353 !29 = metadata !{i32 16, i32 0, metadata !30, null}
54 !30 = metadata !{i32 786443, metadata !8, i32 15, i32 0} ; [ DW_TAG_lexical_block ]
54 !30 = metadata !{i32 786443, metadata !31, metadata !8, i32 15, i32 0, i32 0} ; [ DW_TAG_lexical_block ]
5555 !31 = metadata !{metadata !"foo.cp", metadata !"/tmp/"}
5656 !32 = metadata !{i32 0}
57 !33 = metadata !{metadata !18}
57 !33 = metadata !{metadata !1, metadata !8, metadata !18}
1010 !llvm.dbg.cu = !{!3}
1111
1212 !0 = metadata !{i32 571, i32 3, metadata !1, null}
13 !1 = metadata !{i32 458763, metadata !2, i32 1, i32 1}; [DW_TAG_lexical_block ]
13 !1 = metadata !{i32 458763, metadata !11, metadata !2, i32 1, i32 1, i32 0}; [DW_TAG_lexical_block ]
1414 !2 = metadata !{i32 458798, i32 0, metadata !3, metadata !"foo", metadata !"foo", metadata !"foo", i32 561, metadata !4, i1 false, i1 true, i32 0, i32 0, null, i32 0, i32 0, null, null, null, null, i32 0}; [DW_TAG_subprogram ]
1515 !3 = metadata !{i32 458769, metadata !11, i32 12, metadata !"clang 1.1", i1 true, metadata !"", i32 0, metadata !12, metadata !12, metadata !13, null, null, metadata !""}; [DW_TAG_compile_unit ]
1616 !4 = metadata !{i32 458773, null, metadata !3, metadata !"", i32 0, i64 0, i64 0, i64 0, i32 0, null, metadata !5, i32 0}; [DW_TAG_subroutine_type ]
1616 declare void @llvm.dbg.declare(metadata, metadata) nounwind readnone
1717
1818 !llvm.dbg.cu = !{!3}
19 !0 = metadata !{i32 524545, metadata !1, metadata !"userUPP", metadata !2, i32 7, metadata !6} ; [ DW_TAG_arg_variable ]
19 !0 = metadata !{i32 524545, metadata !1, metadata !"userUPP", metadata !2, i32 7, metadata !6, i32 0, null} ; [ DW_TAG_arg_variable ]
2020 !1 = metadata !{i32 524334, metadata !16, null, metadata !"DisposeDMNotificationUPP", metadata !"DisposeDMNotificationUPP", metadata !"DisposeDMNotificationUPP", i32 7, metadata !4, i1 false, i1 true, i32 0, i32 0, null, i1 false, i32 0, null, null, null, null, i32 0} ; [ DW_TAG_subprogram ]
2121 !2 = metadata !{i32 524329, metadata !16} ; [ DW_TAG_file_type ]
22 !3 = metadata !{i32 524305, metadata !16, i32 1, metadata !"4.2.1 (Based on Apple Inc. build 5658) (LLVM build 9999)", i1 true, metadata !"", i32 0, metadata !17, metadata !17, null, null, null, metadata !""} ; [ DW_TAG_compile_unit ]
22 !3 = metadata !{i32 524305, metadata !16, i32 1, metadata !"4.2.1 (Based on Apple Inc. build 5658) (LLVM build 9999)", i1 true, metadata !"", i32 0, metadata !17, metadata !17, metadata !18, null, null, metadata !""} ; [ DW_TAG_compile_unit ]
2323 !4 = metadata !{i32 524309, metadata !16, metadata !2, metadata !"", i32 0, i64 0, i64 0, i64 0, i32 0, null, metadata !5, i32 0, null} ; [ DW_TAG_subroutine_type ]
2424 !5 = metadata !{null, metadata !6}
2525 !6 = metadata !{i32 524310, metadata !16, metadata !2, metadata !"DMNotificationUPP", i32 6, i64 0, i64 0, i64 0, i32 0, metadata !7} ; [ DW_TAG_typedef ]
3131 !12 = metadata !{i32 524307, metadata !16, metadata !2, metadata !"AEDesc", i32 1, i64 0, i64 0, i64 0, i32 4, null, null, i32 0, null} ; [ DW_TAG_structure_type ]
3232 !13 = metadata !{i32 7, i32 0, metadata !1, null}
3333 !14 = metadata !{i32 8, i32 0, metadata !15, null}
34 !15 = metadata !{i32 524299, metadata !1, i32 7, i32 0} ; [ DW_TAG_lexical_block ]
34 !15 = metadata !{i32 524299, metadata !16, metadata !1, i32 7, i32 0, i32 0} ; [ DW_TAG_lexical_block ]
3535 !16 = metadata !{metadata !"t.c", metadata !"/Users/echeng/LLVM/radars/r7937664/"}
3636 !17 = metadata !{i32 0}
37 !18 = metadata !{metadata !1}
3030 !17 = metadata !{metadata !10}
3131
3232 !0 = metadata !{i32 3, i32 0, metadata !1, null}
33 !1 = metadata !{i32 786443, metadata !2, i32 2, i32 0} ; [ DW_TAG_lexical_block ]
33 !1 = metadata !{i32 786443, metadata !18, metadata !2, i32 2, i32 0, i32 0} ; [ DW_TAG_lexical_block ]
3434 !2 = metadata !{i32 786478, metadata !18, metadata !3, metadata !"foo", metadata !"foo", metadata !"foo", i32 2, metadata !5, i1 false, i1 true, i32 0, i32 0, null, i1 false, i1 false, i32 ()* @foo, null, null, null, i32 0} ; [ DW_TAG_subprogram ]
3535 !3 = metadata !{i32 786473, metadata !18} ; [ DW_TAG_file_type ]
3636 !4 = metadata !{i32 786449, metadata !18, i32 1, metadata !"4.2.1 (Based on Apple Inc. build 5658) (LLVM build)", i1 false, metadata !"", i32 0, metadata !19, metadata !19, metadata !16, null, null, metadata !""} ; [ DW_TAG_compile_unit ]
3838 !6 = metadata !{metadata !7}
3939 !7 = metadata !{i32 786468, metadata !18, metadata !3, metadata !"int", i32 0, i64 32, i64 32, i64 0, i32 0, i32 5} ; [ DW_TAG_base_type ]
4040 !8 = metadata !{i32 3, i32 0, metadata !9, null}
41 !9 = metadata !{i32 786443, metadata !10, i32 2, i32 0} ; [ DW_TAG_lexical_block ]
41 !9 = metadata !{i32 786443, metadata !20, metadata !10, i32 2, i32 0, i32 0} ; [ DW_TAG_lexical_block ]
4242 !10 = metadata !{i32 786478, metadata !20, metadata !11, metadata !"bar", metadata !"bar", metadata !"bar", i32 2, metadata !13, i1 false, i1 true, i32 0, i32 0, null, i1 false, i1 false, i32 ()* @bar, null, null, null, i32 0} ; [ DW_TAG_subprogram ]
4343 !11 = metadata !{i32 786473, metadata !20} ; [ DW_TAG_file_type ]
4444 !12 = metadata !{i32 786449, metadata !20, i32 1, metadata !"4.2.1 (Based on Apple Inc. build 5658) (LLVM build)", i1 false, metadata !"", i32 0, metadata !19, metadata !19, metadata !17, null, null, metadata !""} ; [ DW_TAG_compile_unit ]
4545 !13 = metadata !{i32 7, i32 0, metadata !1, null}
4646 !14 = metadata !{i32 786689, metadata !1, metadata !"y", metadata !2, i32 7, metadata !9, i32 0, null} ; [ DW_TAG_arg_variable ]
4747 !15 = metadata !{i32 7, i32 0, metadata !16, null}
48 !16 = metadata !{i32 786443, metadata !1, i32 7, i32 0} ; [ DW_TAG_lexical_block ]
48 !16 = metadata !{i32 786443, metadata !18, metadata !1, i32 7, i32 0, i32 0} ; [ DW_TAG_lexical_block ]
4949 !17 = metadata !{metadata !1}
5050 !18 = metadata !{metadata !"a.c", metadata !"/tmp/"}
5151 !19 = metadata !{i32 0}
1616 declare void @llvm.dbg.region.end(metadata) nounwind readnone
1717
1818 !0 = metadata !{i32 458798, i32 0, metadata !1, metadata !"foo", metadata !"foo", metadata !"foo", metadata !1, i32 1, metadata !2, i1 false, i1 true}
19 !1 = metadata !{i32 458769, i32 0, i32 12, metadata !"foo.c", metadata !"/tmp", metadata !"clang 1.0", i1 true, i1 false, metadata !"", i32 0}
20 !2 = metadata !{i32 458788, metadata !1, metadata !"int", metadata !1, i32 0, i64 32, i64 32, i64 0, i32 0, i32 5}
19 !1 = metadata !{i32 458769, metadata !4, i32 12, metadata !"clang 1.0", i1 true, metadata !"", i32 0, metadata !5, metadata !5, metadata !4, null, null, metadata !""}
20 !2 = metadata !{i32 458788, null, metadata !1, metadata !"int", i32 0, i64 32, i64 32, i64 0, i32 0, i32 5}
2121 !3 = metadata !{i32 1, i32 13, metadata !1, metadata !1}
22 !4 = metadata !{metadata !"foo.c", metadata !"/tmp"}
23 !5 = metadata !{i32 0}
5757 !11 = metadata !{i32 524545, metadata !1, metadata !"hash", metadata !2, i32 10, metadata !9} ; [ DW_TAG_arg_variable ]
5858 !12 = metadata !{i32 524545, metadata !1, metadata !"flags", metadata !2, i32 11, metadata !9} ; [ DW_TAG_arg_variable ]
5959 !13 = metadata !{i32 13, i32 0, metadata !14, null}
60 !14 = metadata !{i32 524299, metadata !1, i32 12, i32 0} ; [ DW_TAG_lexical_block ]
60 !14 = metadata !{i32 524299, metadata !28, metadata !1, i32 12, i32 0, i32 0} ; [ DW_TAG_lexical_block ]
6161 !15 = metadata !{i32 524545, metadata !16, metadata !"name", metadata !2, i32 17, metadata !6} ; [ DW_TAG_arg_variable ]
6262 !16 = metadata !{i32 524334, metadata !28, metadata !2, metadata !"add_name_internal", metadata !"add_name_internal", metadata !"add_name_internal", i32 22, metadata !17, i1 true, i1 true, i32 0, i32 0, null, i1 false, i32 0, null, null, null, null, i32 0} ; [ DW_TAG_subprogram ]
6363 !17 = metadata !{i32 524309, metadata !28, metadata !2, metadata !"", i32 0, i64 0, i64 0, i64 0, i32 0, null, metadata !18, i32 0, null} ; [ DW_TAG_subroutine_type ]
6868 !22 = metadata !{i32 524545, metadata !16, metadata !"extra", metadata !2, i32 20, metadata !19} ; [ DW_TAG_arg_variable ]
6969 !23 = metadata !{i32 524545, metadata !16, metadata !"flags", metadata !2, i32 21, metadata !9} ; [ DW_TAG_arg_variable ]
7070 !24 = metadata !{i32 23, i32 0, metadata !25, null}
71 !25 = metadata !{i32 524299, metadata !16, i32 22, i32 0} ; [ DW_TAG_lexical_block ]
71 !25 = metadata !{i32 524299, metadata !28, metadata !16, i32 22, i32 0, i32 0} ; [ DW_TAG_lexical_block ]
7272 !26 = metadata !{i32 24, i32 0, metadata !25, null}
7373 !27 = metadata !{i32 26, i32 0, metadata !25, null}
7474 !28 = metadata !{metadata !"tail.c", metadata !"/Users/echeng/LLVM/radars/r7927803/"}
6262 !5 = metadata !{i32 458773, metadata !1, metadata !"", metadata !1, i32 0, i64 0, i64 0, i64 0, i32 0, null, metadata !6, i32 0, null} ; [ DW_TAG_subroutine_type ]
6363 !6 = metadata !{metadata !2, metadata !2}
6464 !7 = metadata !{i32 5, i32 0, metadata !8, null}
65 !8 = metadata !{i32 458763, metadata !4, i32 0, i32 0} ; [ DW_TAG_lexical_block ]
65 !8 = metadata !{i32 458763, metadata !20, metadata !4, i32 0, i32 0, i32 0} ; [ DW_TAG_lexical_block ]
6666 !9 = metadata !{i32 6, i32 0, metadata !8, null}
6767 !10 = metadata !{i32 7, i32 0, metadata !8, null}
6868 !11 = metadata !{i32 9, i32 0, metadata !8, null}
6969 !12 = metadata !{i32 11, i32 0, metadata !8, null}
7070 !13 = metadata !{i32 14, i32 0, metadata !14, null}
71 !14 = metadata !{i32 458763, metadata !15, i32 0, i32 0} ; [ DW_TAG_lexical_block ]
71 !14 = metadata !{i32 458763, metadata !20, metadata !15, i32 0, i32 0, i32 0} ; [ DW_TAG_lexical_block ]
7272 !15 = metadata !{i32 458798, i32 0, metadata !1, metadata !"bar", metadata !"bar", metadata !"bar", i32 13, metadata !16, i1 false, i1 true, i32 0, i32 0, null, i32 0, i32 0, null, null, null, null, i32 0} ; [ DW_TAG_subprogram ]
7373 !16 = metadata !{i32 458773, metadata !1, metadata !"", metadata !1, i32 0, i64 0, i64 0, i64 0, i32 0, null, metadata !17, i32 0, null} ; [ DW_TAG_subroutine_type ]
7474 !17 = metadata !{metadata !2}
4444 !8 = metadata !{i32 2, i32 0, metadata !1, null}
4545 !9 = metadata !{i32 786689, metadata !1, metadata !"j", metadata !2, i32 2, metadata !6, i32 0, null} ; [ DW_TAG_arg_variable ]
4646 !10 = metadata !{i32 3, i32 0, metadata !11, null}
47 !11 = metadata !{i32 786443, metadata !1, i32 2, i32 0} ; [ DW_TAG_lexical_block ]
47 !11 = metadata !{i32 786443, metadata !12, metadata !1, i32 2, i32 0, i32 0} ; [ DW_TAG_lexical_block ]
4848 !12 = metadata !{metadata !"testfunc.c", metadata !"/tmp"}
4949 !13 = metadata !{i32 0}
3636 !10 = metadata !{i32 524309, metadata !22, metadata !1, metadata !"", i32 0, i64 0, i64 0, i64 0, i32 0, null, metadata !11, i32 0, null} ; [ DW_TAG_subroutine_type ]
3737 !11 = metadata !{metadata !8, metadata !8}
3838 !12 = metadata !{i32 524544, metadata !13, metadata !"bb", metadata !1, i32 5, metadata !8} ; [ DW_TAG_auto_variable ]
39 !13 = metadata !{i32 524299, metadata !0, i32 5, i32 0} ; [ DW_TAG_lexical_block ]
39 !13 = metadata !{i32 524299, metadata !22, metadata !0, i32 5, i32 0, i32 0} ; [ DW_TAG_lexical_block ]
4040 !14 = metadata !{i32 524545, metadata !9, metadata !"i", metadata !1, i32 7, metadata !8} ; [ DW_TAG_arg_variable ]
4141 !15 = metadata !{i32 524340, i32 0, metadata !1, metadata !"abcd", metadata !"abcd", metadata !"", metadata !1, i32 2, metadata !8, i1 true, i1 true, null} ; [ DW_TAG_variable ]
4242 !16 = metadata !{i32 524340, i32 0, metadata !1, metadata !"xyz", metadata !"xyz", metadata !"", metadata !1, i32 3, metadata !8, i1 false, i1 true, i32* @xyz} ; [ DW_TAG_variable ]
4343 !17 = metadata !{i32 6, i32 0, metadata !18, null}
44 !18 = metadata !{i32 524299, metadata !5, i32 6, i32 0} ; [ DW_TAG_lexical_block ]
44 !18 = metadata !{i32 524299, metadata !22, metadata !5, i32 6, i32 0, i32 0} ; [ DW_TAG_lexical_block ]
4545 !19 = metadata !{i32 7, i32 0, metadata !9, null}
4646 !20 = metadata !{i32 10, i32 0, metadata !21, null}
47 !21 = metadata !{i32 524299, metadata !9, i32 7, i32 0} ; [ DW_TAG_lexical_block ]
47 !21 = metadata !{i32 524299, metadata !22, metadata !9, i32 7, i32 0, i32 0} ; [ DW_TAG_lexical_block ]
4848 !22 = metadata !{metadata !"g.c", metadata !"/tmp/"}