llvm.org GIT mirror llvm / cbfbb3e
DI/Verifier: Fix argument bitrot in DILocalVariable Add a verifier check that `DILocalVariable`s of tag `DW_TAG_arg_variable` always have a non-zero 'arg:' field, and those of tag `DW_TAG_auto_variable` always have a zero 'arg:' field. These are the only configurations that are properly understood by the backend. (Also, fix the bad examples in LangRef and test/Assembler, and fix the bug in Kaleidoscope Ch8.) A large number of testcases seem to have bitrotted their way forward from some ancient version of the debug info hierarchy that didn't have `arg:` parameters. If you have out-of-tree testcases that start failing in the verifier and you don't care enough to get the `arg:` right, you may have some luck just calling: sed -e 's/, arg: 0/, arg: 1/' or some such, but I hand-updated the ones in tree. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@243183 91177308-0d34-0410-b5e6-96231b3b80d8 Duncan P. N. Exon Smith 5 years ago
45 changed file(s) with 98 addition(s) and 95 deletion(s). Raw diff Collapse all Expand all
39053905
39063906 .. code-block:: llvm
39073907
3908 !0 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "this", arg: 0,
3908 !0 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "this", arg: 1,
39093909 scope: !3, file: !2, line: 7, type: !3,
39103910 flags: DIFlagArtificial)
3911 !1 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "x", arg: 1,
3911 !1 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "x", arg: 2,
39123912 scope: !4, file: !2, line: 7, type: !3)
3913 !1 = !DILocalVariable(tag: DW_TAG_auto_variable, name: "y",
3913 !2 = !DILocalVariable(tag: DW_TAG_auto_variable, name: "y",
39143914 scope: !5, file: !2, line: 7, type: !3)
39153915
39163916 DIExpression
396396 KSDbgInfo.TheCU.getDirectory());
397397 DILocalVariable D = DBuilder->createLocalVariable(
398398 dwarf::DW_TAG_arg_variable, Scope, Args[Idx], Unit, Line,
399 KSDbgInfo.getDoubleTy(), Idx);
399 KSDbgInfo.getDoubleTy(), true, 0, Idx + 1);
400400
401401 Instruction *Call = DBuilder->insertDeclare(
402402 Alloca, D, DBuilder->createExpression(), Builder.GetInsertBlock());
12541254 KSDbgInfo.TheCU->getDirectory());
12551255 DILocalVariable *D = DBuilder->createLocalVariable(
12561256 dwarf::DW_TAG_arg_variable, Scope, Args[Idx], Unit, Line,
1257 KSDbgInfo.getDoubleTy(), Idx);
1257 KSDbgInfo.getDoubleTy(), true, 0, Idx + 1);
12581258
12591259 DBuilder->insertDeclare(Alloca, D, DBuilder->createExpression(),
12601260 DebugLoc::get(Line, 0, Scope),
10621062 "invalid tag", &N);
10631063 Assert(N.getRawScope() && isa(N.getRawScope()),
10641064 "local variable requires a valid scope", &N, N.getRawScope());
1065 Assert(bool(N.getArg()) == (N.getTag() == dwarf::DW_TAG_arg_variable),
1066 "local variable should have arg iff it's a DW_TAG_arg_variable", &N);
10651067 }
10661068
10671069 void Verifier::visitDIExpression(const DIExpression &N) {
1919 !6 = !DILocalVariable(tag: DW_TAG_auto_variable, name: "foo", scope: !0,
2020 file: !2, line: 7, type: !3, flags: DIFlagArtificial)
2121
22 ; CHECK: !7 = !DILocalVariable(tag: DW_TAG_arg_variable, arg: 0, scope: !0)
22 ; CHECK: !7 = !DILocalVariable(tag: DW_TAG_arg_variable, arg: 1, scope: !0)
2323 ; CHECK: !8 = !DILocalVariable(tag: DW_TAG_auto_variable, scope: !0)
24 !7 = !DILocalVariable(tag: DW_TAG_arg_variable, scope: !0)
24 !7 = !DILocalVariable(tag: DW_TAG_arg_variable, scope: !0, arg: 1)
2525 !8 = !DILocalVariable(tag: DW_TAG_auto_variable, scope: !0)
0 ; RUN: not llvm-as < %s 2>&1 | FileCheck %s
11
2 !0 = !DILocalVariable(tag: DW_TAG_arg_variable, scope: !{}, arg: 0)
2 !0 = !DILocalVariable(tag: DW_TAG_arg_variable, scope: !{}, arg: 1)
3 !1 = !DILocalVariable(tag: DW_TAG_auto_variable, scope: !{}, arg: 0)
34
45 ; CHECK: :[[@LINE+1]]:66: error: expected unsigned integer
5 !1 = !DILocalVariable(tag: DW_TAG_arg_variable, scope: !{}, arg: -1)
6 !2 = !DILocalVariable(tag: DW_TAG_arg_variable, scope: !{}, arg: -1)
1313
1414 !llvm.dbg.cu = !{!3}
1515 !llvm.module.flags = !{!15}
16 !0 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "b", line: 93, arg: 0, scope: !1, file: !2, type: !6)
16 !0 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "b", line: 93, arg: 2, scope: !1, file: !2, type: !6)
1717 !1 = !DISubprogram(name: "__addvsi3", linkageName: "__addvsi3", line: 94, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: false, file: !12, scope: null, type: !4)
1818 !2 = !DIFile(filename: "libgcc2.c", directory: "/Users/bwilson/local/nightly/test-2010-04-14/build/llvmgcc.roots/llvmgcc~obj/src/gcc")
1919 !12 = !DIFile(filename: "libgcc2.c", directory: "/Users/bwilson/local/nightly/test-2010-04-14/build/llvmgcc.roots/llvmgcc~obj/src/gcc")
4646 !llvm.dbg.lv.fn = !{!0, !8, !10, !12}
4747 !llvm.dbg.gv = !{!14}
4848
49 !0 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "buf", line: 4, arg: 0, scope: !1, file: !2, type: !6)
49 !0 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "buf", line: 4, arg: 1, scope: !1, file: !2, type: !6)
5050 !1 = !DISubprogram(name: "x0", linkageName: "x0", line: 5, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: false, file: !26, scope: null, type: !4)
5151 !2 = !DIFile(filename: "t.c", directory: "/private/tmp")
5252 !3 = !DICompileUnit(language: DW_LANG_C99, producer: "clang 2.0", isOptimized: true, file: !26)
5454 !5 = !{null}
5555 !6 = !DIDerivedType(tag: DW_TAG_pointer_type, size: 32, align: 32, file: !26, scope: !2, baseType: !7)
5656 !7 = !DIBasicType(tag: DW_TAG_base_type, name: "unsigned char", size: 8, align: 8, encoding: DW_ATE_unsigned_char)
57 !8 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "nbytes", line: 4, arg: 0, scope: !1, file: !2, type: !9)
57 !8 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "nbytes", line: 4, arg: 2, scope: !1, file: !2, type: !9)
5858 !9 = !DIBasicType(tag: DW_TAG_base_type, name: "unsigned long", size: 32, align: 32, encoding: DW_ATE_unsigned)
5959 !10 = !DILocalVariable(tag: DW_TAG_auto_variable, name: "nread", line: 6, scope: !11, file: !2, type: !9)
6060 !11 = distinct !DILexicalBlock(line: 5, column: 1, file: !26, scope: !1)
9999 !20 = !DISubprogram(name: "main", linkageName: "main", line: 23, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: false, file: !48, scope: !2, type: !21, function: i32 ()* @main)
100100 !21 = !DISubroutineType(types: !22)
101101 !22 = !{!13}
102 !23 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "i", line: 16, arg: 0, scope: !17, file: !2, type: !13)
102 !23 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "i", line: 16, arg: 1, scope: !17, file: !2, type: !13)
103103 !24 = !DILocation(line: 16, scope: !17)
104 !25 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "location", line: 16, arg: 0, scope: !17, file: !2, type: !26)
104 !25 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "location", line: 16, arg: 2, scope: !17, file: !2, type: !26)
105105 !26 = !DIDerivedType(tag: DW_TAG_reference_type, name: "SVal", size: 64, align: 64, file: !48, scope: !2, baseType: !1)
106106 !27 = !DILocation(line: 17, scope: !28)
107107 !28 = distinct !DILexicalBlock(line: 16, column: 0, file: !2, scope: !17)
108108 !29 = !DILocation(line: 18, scope: !28)
109109 !30 = !DILocation(line: 20, scope: !28)
110 !31 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "this", line: 11, arg: 0, scope: !16, file: !2, type: !32)
110 !31 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "this", line: 11, arg: 1, scope: !16, file: !2, type: !32)
111111 !32 = !DIDerivedType(tag: DW_TAG_const_type, size: 64, align: 64, flags: DIFlagArtificial, file: !48, scope: !2, baseType: !33)
112112 !33 = !DIDerivedType(tag: DW_TAG_pointer_type, size: 64, align: 64, file: !48, scope: !2, baseType: !1)
113113 !34 = !DILocation(line: 11, scope: !16)
8787 !7 = !DISubprogram(name: "get3", linkageName: "get3", line: 10, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, scopeLine: 10, file: !47, scope: !1, type: !3, function: i8 (i8)* @get3, variables: !44)
8888 !8 = !DISubprogram(name: "get4", linkageName: "get4", line: 13, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, scopeLine: 13, file: !47, scope: !1, type: !3, function: i8 (i8)* @get4, variables: !45)
8989 !9 = !DISubprogram(name: "get5", linkageName: "get5", line: 16, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, scopeLine: 16, file: !47, scope: !1, type: !3, function: i8 (i8)* @get5, variables: !46)
90 !10 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "a", line: 4, arg: 0, scope: !0, file: !1, type: !5)
90 !10 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "a", line: 4, arg: 1, scope: !0, file: !1, type: !5)
9191 !11 = !DILocalVariable(tag: DW_TAG_auto_variable, name: "b", line: 4, scope: !12, file: !1, type: !5)
9292 !12 = distinct !DILexicalBlock(line: 4, column: 0, file: !47, scope: !0)
9393 !13 = !DIGlobalVariable(name: "x1", line: 3, isLocal: true, isDefinition: true, scope: !1, file: !1, type: !5, variable: i8* @x1)
9595 !15 = !DIGlobalVariable(name: "x3", line: 9, isLocal: true, isDefinition: true, scope: !1, file: !1, type: !5, variable: i8* @x3)
9696 !16 = !DIGlobalVariable(name: "x4", line: 12, isLocal: true, isDefinition: true, scope: !1, file: !1, type: !5, variable: i8* @x4)
9797 !17 = !DIGlobalVariable(name: "x5", line: 15, isLocal: false, isDefinition: true, scope: !1, file: !1, type: !5, variable: i8* @x5)
98 !18 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "a", line: 7, arg: 0, scope: !6, file: !1, type: !5)
98 !18 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "a", line: 7, arg: 1, scope: !6, file: !1, type: !5)
9999 !19 = !DILocalVariable(tag: DW_TAG_auto_variable, name: "b", line: 7, scope: !20, file: !1, type: !5)
100100 !20 = distinct !DILexicalBlock(line: 7, column: 0, file: !47, scope: !6)
101 !21 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "a", line: 10, arg: 0, scope: !7, file: !1, type: !5)
101 !21 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "a", line: 10, arg: 1, scope: !7, file: !1, type: !5)
102102 !22 = !DILocalVariable(tag: DW_TAG_auto_variable, name: "b", line: 10, scope: !23, file: !1, type: !5)
103103 !23 = distinct !DILexicalBlock(line: 10, column: 0, file: !47, scope: !7)
104 !24 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "a", line: 13, arg: 0, scope: !8, file: !1, type: !5)
104 !24 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "a", line: 13, arg: 1, scope: !8, file: !1, type: !5)
105105 !25 = !DILocalVariable(tag: DW_TAG_auto_variable, name: "b", line: 13, scope: !26, file: !1, type: !5)
106106 !26 = distinct !DILexicalBlock(line: 13, column: 0, file: !47, scope: !8)
107 !27 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "a", line: 16, arg: 0, scope: !9, file: !1, type: !5)
107 !27 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "a", line: 16, arg: 1, scope: !9, file: !1, type: !5)
108108 !28 = !DILocalVariable(tag: DW_TAG_auto_variable, name: "b", line: 16, scope: !29, file: !1, type: !5)
109109 !29 = distinct !DILexicalBlock(line: 16, column: 0, file: !47, scope: !9)
110110 !30 = !DILocation(line: 4, scope: !0)
8585 !50 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "val", line: 4, arg: 2, scope: !9, file: !1, type: !7)
8686 !51 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "c", line: 4, arg: 2, scope: !9, file: !1, type: !8)
8787
88 !22 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "argc", line: 17, arg: 0, scope: !10, file: !1, type: !5)
89 !23 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "argv", line: 17, arg: 0, scope: !10, file: !1, type: !13)
88 !22 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "argc", line: 17, arg: 1, scope: !10, file: !1, type: !5)
89 !23 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "argv", line: 17, arg: 2, scope: !10, file: !1, type: !13)
9090 !24 = !DILocalVariable(tag: DW_TAG_auto_variable, name: "dval", line: 19, scope: !25, file: !1, type: !7)
9191 !25 = distinct !DILexicalBlock(line: 18, column: 0, file: !46, scope: !10)
9292 !26 = !DILocation(line: 4, scope: !9)
1010 declare void @llvm.dbg.value(metadata, i64, metadata, metadata) nounwind readnone
1111
1212 ; !0 should conform to the format of DIVariable.
13 !0 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "a", arg: 0, scope: !DISubprogram())
13 !0 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "a", arg: 1, scope: !DISubprogram())
7575
7676 declare void @llvm.stackrestore(i8*) nounwind
7777
78 !0 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "s1", line: 2, arg: 0, scope: !1, file: !2, type: !6)
78 !0 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "s1", line: 2, arg: 1, scope: !1, file: !2, type: !6)
7979 !1 = !DISubprogram(name: "foo", linkageName: "foo", line: 2, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: false, scope: !2, type: !3)
8080 !2 = !DICompileUnit(language: DW_LANG_C89, producer: "4.2.1 (Based on Apple Inc. build 5658) (LLVM build)", isOptimized: true, emissionKind: 0, file: !17, enums: !18, retainedTypes: !18)
8181 !3 = !DISubroutineType(types: !4)
3030 !llvm.dbg.cu = !{!3}
3131 !llvm.module.flags = !{!21}
3232
33 !0 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "my_r0", line: 11, arg: 0, scope: !1, file: !2, type: !7)
33 !0 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "my_r0", line: 11, arg: 1, scope: !1, file: !2, type: !7)
3434 !1 = !DISubprogram(name: "foo", linkageName: "foo", line: 11, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: false, scopeLine: 11, file: !19, scope: !2, type: !4, function: double (%struct.Rect*)* @foo)
3535 !2 = !DIFile(filename: "b2.c", directory: "/tmp/")
3636 !3 = !DICompileUnit(language: DW_LANG_C89, producer: "4.2.1 (Based on Apple Inc. build 5658) (LLVM build)", isOptimized: false, emissionKind: 0, file: !19, enums: !20, retainedTypes: !20, subprograms: !18)
198198 !llvm.dbg.cu = !{!3}
199199 !llvm.module.flags = !{!48}
200200
201 !0 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "a", line: 1921, arg: 0, scope: !1, file: !2, type: !9)
201 !0 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "a", line: 1921, arg: 1, scope: !1, file: !2, type: !9)
202202 !1 = !DISubprogram(name: "__divsc3", linkageName: "__divsc3", line: 1922, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: true, scopeLine: 1922, file: !45, scope: !2, type: !4, function: %0 (float, float, float, float)* @__divsc3, variables: !43)
203203 !2 = !DIFile(filename: "libgcc2.c", directory: "/Users/yash/clean/LG.D/gcc/../../llvmgcc/gcc")
204204 !3 = !DICompileUnit(language: DW_LANG_C89, producer: "4.2.1 (Based on Apple Inc. build 5658) (LLVM build)", isOptimized: true, emissionKind: 1, file: !45, enums: !47, retainedTypes: !47, subprograms: !44, imports: null)
209209 !8 = !DIBasicType(tag: DW_TAG_base_type, name: "complex float", size: 64, align: 32, encoding: DW_ATE_complex_float)
210210 !9 = !DIDerivedType(tag: DW_TAG_typedef, name: "SFtype", line: 167, file: !46, scope: !7, baseType: !10)
211211 !10 = !DIBasicType(tag: DW_TAG_base_type, name: "float", size: 32, align: 32, encoding: DW_ATE_float)
212 !11 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "b", line: 1921, arg: 0, scope: !1, file: !2, type: !9)
213 !12 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "c", line: 1921, arg: 0, scope: !1, file: !2, type: !9)
214 !13 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "d", line: 1921, arg: 0, scope: !1, file: !2, type: !9)
212 !11 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "b", line: 1921, arg: 2, scope: !1, file: !2, type: !9)
213 !12 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "c", line: 1921, arg: 3, scope: !1, file: !2, type: !9)
214 !13 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "d", line: 1921, arg: 4, scope: !1, file: !2, type: !9)
215215 !14 = !DILocalVariable(tag: DW_TAG_auto_variable, name: "denom", line: 1923, scope: !15, file: !2, type: !9)
216216 !15 = distinct !DILexicalBlock(line: 1922, column: 0, file: !45, scope: !1)
217217 !16 = !DILocalVariable(tag: DW_TAG_auto_variable, name: "ratio", line: 1923, scope: !15, file: !2, type: !9)
2727 !1 = !DIFile(filename: "foo.c", directory: "/tmp/")
2828 !2 = !DICompileUnit(language: DW_LANG_C89, producer: "4.2.1 (Based on Apple Inc. build 5658) (LLVM build)", isOptimized: true, emissionKind: 1, file: !36, enums: !37, retainedTypes: !37, subprograms: !32, globals: !31, imports: !37)
2929 !3 = !DIBasicType(tag: DW_TAG_base_type, name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
30 !4 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "x", line: 12, arg: 0, scope: !5, file: !1, type: !3)
30 !4 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "x", line: 12, arg: 1, scope: !5, file: !1, type: !3)
3131 !5 = !DISubprogram(name: "foo", linkageName: "foo", line: 13, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: true, scopeLine: 13, file: !36, scope: !1, type: !6, function: void (i32)* @foo, variables: !33)
3232 !6 = !DISubroutineType(types: !7)
3333 !7 = !{null, !3}
34 !8 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "myvar", line: 17, arg: 0, scope: !9, file: !1, type: !13)
34 !8 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "myvar", line: 17, arg: 1, scope: !9, file: !1, type: !13)
3535 !9 = !DISubprogram(name: "bar", linkageName: "bar", line: 17, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: true, scopeLine: 17, file: !36, scope: !1, type: !10, function: i8* (%struct.a*)* @bar, variables: !34)
3636 !10 = !DISubroutineType(types: !11)
3737 !11 = !{!12, !13}
4141 !15 = !{!16, !17}
4242 !16 = !DIDerivedType(tag: DW_TAG_member, name: "c", line: 3, size: 32, align: 32, file: !36, scope: !14, baseType: !3)
4343 !17 = !DIDerivedType(tag: DW_TAG_member, name: "d", line: 4, size: 64, align: 64, offset: 64, file: !36, scope: !14, baseType: !13)
44 !18 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "argc", line: 22, arg: 0, scope: !19, file: !1, type: !3)
44 !18 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "argc", line: 22, arg: 1, scope: !19, file: !1, type: !3)
4545 !19 = !DISubprogram(name: "main", linkageName: "main", line: 22, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: true, scopeLine: 22, file: !36, scope: !1, type: !20, variables: !35)
4646 !20 = !DISubroutineType(types: !21)
4747 !21 = !{!3, !3, !22}
4848 !22 = !DIDerivedType(tag: DW_TAG_pointer_type, size: 64, align: 64, file: !36, scope: !1, baseType: !23)
4949 !23 = !DIDerivedType(tag: DW_TAG_pointer_type, size: 64, align: 64, file: !36, scope: !1, baseType: !24)
5050 !24 = !DIBasicType(tag: DW_TAG_base_type, name: "char", size: 8, align: 8, encoding: DW_ATE_signed_char)
51 !25 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "argv", line: 22, arg: 0, scope: !19, file: !1, type: !22)
51 !25 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "argv", line: 22, arg: 2, scope: !19, file: !1, type: !22)
5252 !26 = !DILocalVariable(tag: DW_TAG_auto_variable, name: "e", line: 23, scope: !27, file: !1, type: !14)
5353 !27 = distinct !DILexicalBlock(line: 22, column: 0, file: !36, scope: !19)
5454 !28 = !DILocation(line: 18, scope: !29)
2424 !llvm.dbg.cu = !{!3}
2525 !llvm.module.flags = !{!20}
2626
27 !0 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "y", line: 2, arg: 0, scope: !1, file: !2, type: !6)
27 !0 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "y", line: 2, arg: 1, scope: !1, file: !2, type: !6)
2828 !1 = !DISubprogram(name: "foo", linkageName: "foo", line: 2, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: true, scopeLine: 2, file: !18, scope: !2, type: !4, function: i32 (i32)* @foo, variables: !15)
2929 !2 = !DIFile(filename: "f.c", directory: "/tmp")
3030 !3 = !DICompileUnit(language: DW_LANG_C89, producer: "4.2.1 (Based on Apple Inc. build 5658) (LLVM build)", isOptimized: true, emissionKind: 1, file: !18, enums: !19, retainedTypes: !19, subprograms: !17, imports: null)
3131 !4 = !DISubroutineType(types: !5)
3232 !5 = !{!6, !6}
3333 !6 = !DIBasicType(tag: DW_TAG_base_type, name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
34 !7 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "x", line: 6, arg: 0, scope: !8, file: !2, type: !6)
34 !7 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "x", line: 6, arg: 1, scope: !8, file: !2, type: !6)
3535 !8 = !DISubprogram(name: "bar", linkageName: "bar", line: 6, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: true, scopeLine: 6, file: !18, scope: !2, type: !4, function: i32 (i32)* @bar, variables: !16)
3636 !9 = !DILocation(line: 3, scope: !10)
3737 !10 = distinct !DILexicalBlock(line: 2, column: 0, file: !18, scope: !1)
2222 !llvm.module.flags = !{!34}
2323 !llvm.dbg.lv = !{!0, !14, !15, !16, !17, !24, !25, !28}
2424
25 !0 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "this", line: 11, arg: 0, scope: !1, file: !3, type: !12)
25 !0 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "this", line: 11, arg: 1, scope: !1, file: !3, type: !12)
2626 !1 = !DISubprogram(name: "bar", linkageName: "_ZN3foo3barEi", line: 11, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: true, scopeLine: 11, file: !31, scope: !2, type: !9, function: i32 (%struct.foo*, i32)* null)
2727 !2 = !DICompositeType(tag: DW_TAG_structure_type, name: "foo", line: 3, size: 32, align: 32, file: !31, scope: !3, elements: !5)
2828 !3 = !DIFile(filename: "foo.cp", directory: "/tmp/")
3636 !11 = !DIDerivedType(tag: DW_TAG_pointer_type, size: 64, align: 64, flags: DIFlagArtificial, file: !31, scope: !3, baseType: !2)
3737 !12 = !DIDerivedType(tag: DW_TAG_const_type, size: 64, align: 64, flags: DIFlagArtificial, file: !31, scope: !3, baseType: !13)
3838 !13 = !DIDerivedType(tag: DW_TAG_pointer_type, size: 64, align: 64, file: !31, scope: !3, baseType: !2)
39 !14 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "x", line: 11, arg: 0, scope: !1, file: !3, type: !7)
40 !15 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "this", line: 15, arg: 0, scope: !8, file: !3, type: !12)
41 !16 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "x", line: 15, arg: 0, scope: !8, file: !3, type: !7)
42 !17 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "argc", line: 19, arg: 0, scope: !18, file: !3, type: !7)
39 !14 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "x", line: 11, arg: 2, scope: !1, file: !3, type: !7)
40 !15 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "this", line: 15, arg: 1, scope: !8, file: !3, type: !12)
41 !16 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "x", line: 15, arg: 2, scope: !8, file: !3, type: !7)
42 !17 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "argc", line: 19, arg: 1, scope: !18, file: !3, type: !7)
4343 !18 = !DISubprogram(name: "main", linkageName: "main", line: 19, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: true, scopeLine: 19, file: !31, scope: !3, type: !19)
4444 !19 = !DISubroutineType(types: !20)
4545 !20 = !{!7, !7, !21}
4646 !21 = !DIDerivedType(tag: DW_TAG_pointer_type, size: 64, align: 64, file: !31, scope: !3, baseType: !22)
4747 !22 = !DIDerivedType(tag: DW_TAG_pointer_type, size: 64, align: 64, file: !31, scope: !3, baseType: !23)
4848 !23 = !DIBasicType(tag: DW_TAG_base_type, name: "char", size: 8, align: 8, encoding: DW_ATE_signed_char)
49 !24 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "argv", line: 19, arg: 0, scope: !18, file: !3, type: !21)
49 !24 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "argv", line: 19, arg: 2, scope: !18, file: !3, type: !21)
5050 !25 = !DILocalVariable(tag: DW_TAG_auto_variable, name: "a", line: 20, scope: !26, file: !3, type: !2)
5151 !26 = distinct !DILexicalBlock(line: 19, column: 0, file: !31, scope: !27)
5252 !27 = distinct !DILexicalBlock(line: 19, column: 0, file: !31, scope: !18)
100100 !20 = !DISubprogram(name: "main", linkageName: "main", line: 23, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: false, scopeLine: 23, file: !47, scope: !2, type: !21, function: i32 ()* @main)
101101 !21 = !DISubroutineType(types: !22)
102102 !22 = !{!13}
103 !23 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "i", line: 16, arg: 0, scope: !17, file: !2, type: !13)
103 !23 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "i", line: 16, arg: 1, scope: !17, file: !2, type: !13)
104104 !24 = !DILocation(line: 16, scope: !17)
105 !25 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "location", line: 16, arg: 0, scope: !17, file: !2, type: !26)
105 !25 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "location", line: 16, arg: 2, scope: !17, file: !2, type: !26)
106106 !26 = !DIDerivedType(tag: DW_TAG_reference_type, name: "SVal", size: 64, align: 64, file: !47, scope: !2, baseType: !1)
107107 !27 = !DILocation(line: 17, scope: !28)
108108 !28 = distinct !DILexicalBlock(line: 16, column: 0, file: !47, scope: !17)
109109 !29 = !DILocation(line: 18, scope: !28)
110110 !30 = !DILocation(line: 20, scope: !28)
111 !31 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "this", line: 11, arg: 0, scope: !16, file: !2, type: !32)
111 !31 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "this", line: 11, arg: 1, scope: !16, file: !2, type: !32)
112112 !32 = !DIDerivedType(tag: DW_TAG_const_type, size: 64, align: 64, flags: DIFlagArtificial, file: !47, scope: !2, baseType: !33)
113113 !33 = !DIDerivedType(tag: DW_TAG_pointer_type, size: 64, align: 64, file: !47, scope: !2, baseType: !1)
114114 !34 = !DILocation(line: 11, scope: !16)
2323 !3 = !DISubroutineType(types: !4)
2424 !4 = !{!5}
2525 !5 = !DIBasicType(tag: DW_TAG_base_type, name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
26 !6 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "i", line: 3, arg: 0, scope: !0, file: !1, type: !7)
26 !6 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "i", line: 3, arg: 1, scope: !0, file: !1, type: !7)
2727 !7 = !DIDerivedType(tag: DW_TAG_pointer_type, size: 32, align: 32, file: !17, scope: !1, baseType: !8)
2828 !8 = !DICompositeType(tag: DW_TAG_structure_type, name: "bar", line: 2, size: 64, align: 32, file: !17, scope: !1, elements: !9)
2929 !9 = !{!10, !11}
8787 !7 = !DISubroutineType(types: !8)
8888 !8 = !{!9}
8989 !9 = !DIBasicType(tag: DW_TAG_base_type, name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
90 !10 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "a", line: 5, arg: 0, scope: !0, file: !1, type: !5)
91 !11 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "b", line: 5, arg: 0, scope: !0, file: !1, type: !5)
90 !10 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "a", line: 5, arg: 1, scope: !0, file: !1, type: !5)
91 !11 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "b", line: 5, arg: 2, scope: !0, file: !1, type: !5)
9292 !12 = !DILocalVariable(tag: DW_TAG_auto_variable, name: "c", line: 6, scope: !13, file: !1, type: !5)
9393 !13 = distinct !DILexicalBlock(line: 5, column: 52, file: !31, scope: !0)
9494 !14 = !DILocalVariable(tag: DW_TAG_auto_variable, name: "m", line: 26, scope: !15, file: !1, type: !16)
2020 !llvm.dbg.cu = !{!3}
2121 !llvm.module.flags = !{!12}
2222
23 !0 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "x", line: 1, arg: 0, scope: !1, file: !2, type: !6)
23 !0 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "x", line: 1, arg: 2, scope: !1, file: !2, type: !6)
2424 !1 = !DISubprogram(name: "foo", linkageName: "foo", line: 1, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: false, scopeLine: 1, file: !10, scope: !2, type: !4, function: i32 (i32, i32, i32, i32)* @foo)
2525 !2 = !DIFile(filename: "test.c", directory: "/dir")
2626 !3 = !DICompileUnit(language: DW_LANG_C99, producer: "producer", isOptimized: false, emissionKind: 0, file: !10, enums: !11, retainedTypes: !11, subprograms: !9)
0 ; RUN: llc -O0 < %s -o /dev/null
1 ; llc should not crash on this invalid input.
1 ; llc should not crash on this optimized out debug info.
22 ; PR6588
33 declare void @llvm.dbg.declare(metadata, metadata, metadata) nounwind readnone
44
88 ret void
99 }
1010
11 !0 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "sy", line: 890, arg: 0, scope: !1, file: !2, type: !7)
11 !0 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "sy", line: 890, arg: 1, scope: !1, file: !2, type: !7)
1212 !1 = !DISubprogram(name: "foo", linkageName: "foo", line: 892, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: false, file: !8, scope: !3, type: !4)
1313 !2 = !DIFile(filename: "qpainter.h", directory: "QtGui")
1414 !3 = !DICompileUnit(language: DW_LANG_C_plus_plus, producer: "clang 1.1", isOptimized: true, emissionKind: 0, file: !9, enums: !10, retainedTypes: !10)
5656 !15 = !DIDerivedType(tag: DW_TAG_pointer_type, size: 64, align: 64, flags: DIFlagArtificial, file: !25, scope: !4, baseType: !9)
5757 !16 = !DILocation(line: 3, scope: !1)
5858 !17 = !DILocation(line: 3, scope: !3)
59 !18 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "this", line: 3, arg: 0, scope: !12, file: !10, type: !19)
59 !18 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "this", line: 3, arg: 1, scope: !12, file: !10, type: !19)
6060 !19 = !DIDerivedType(tag: DW_TAG_const_type, size: 64, align: 64, flags: DIFlagArtificial, file: !25, scope: !4, baseType: !20)
6161 !20 = !DIDerivedType(tag: DW_TAG_pointer_type, size: 64, align: 64, file: !25, scope: !4, baseType: !9)
6262 !21 = !DILocation(line: 3, scope: !12)
8686 !14 = !DILocation(line: 16, column: 5, scope: !1)
8787 !15 = !DILocation(line: 17, column: 3, scope: !1)
8888 !16 = !DILocation(line: 18, column: 1, scope: !2)
89 !17 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "this", line: 4, arg: 0, scope: !10, file: !3, type: !13)
89 !17 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "this", line: 4, arg: 1, scope: !10, file: !3, type: !13)
9090 !18 = !DILocation(line: 4, column: 7, scope: !10)
9191 !19 = !DILocalVariable(tag: DW_TAG_auto_variable, name: "a", line: 9, scope: !20, file: !3, type: !21)
9292 !20 = distinct !DILexicalBlock(line: 4, column: 12, file: !38, scope: !10)
102102 !30 = !DILocation(line: 10, column: 5, scope: !20)
103103 !31 = !DILocation(line: 11, column: 5, scope: !20)
104104 !32 = !DILocation(line: 12, column: 3, scope: !10)
105 !33 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "this", line: 7, arg: 0, scope: !23, file: !3, type: !26)
105 !33 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "this", line: 7, arg: 1, scope: !23, file: !3, type: !26)
106106 !34 = !DILocation(line: 7, column: 11, scope: !23)
107107 !35 = !DILocation(line: 7, column: 19, scope: !36)
108108 !36 = distinct !DILexicalBlock(line: 7, column: 17, file: !38, scope: !23)
1717
1818 !llvm.dbg.cu = !{!3}
1919 !llvm.module.flags = !{!19}
20 !0 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "userUPP", line: 7, arg: 0, scope: !1, file: !2, type: !6)
20 !0 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "userUPP", line: 7, arg: 1, scope: !1, file: !2, type: !6)
2121 !1 = !DISubprogram(name: "DisposeDMNotificationUPP", linkageName: "DisposeDMNotificationUPP", line: 7, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: false, file: !16, scope: null, type: !4)
2222 !2 = !DIFile(filename: "t.c", directory: "/Users/echeng/LLVM/radars/r7937664/")
2323 !3 = !DICompileUnit(language: DW_LANG_C89, producer: "4.2.1 (Based on Apple Inc. build 5658) (LLVM build 9999)", isOptimized: true, emissionKind: 0, file: !16, enums: !17, retainedTypes: !17, subprograms: !18)
5757 !5 = !DISubroutineType(types: !6)
5858 !6 = !{null}
5959 !7 = !DILocation(line: 810, scope: !1)
60 !8 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "data", line: 201, arg: 0, scope: !9, file: !10, type: !11)
60 !8 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "data", line: 201, arg: 1, scope: !9, file: !10, type: !11)
6161 !9 = !DISubprogram(name: "_OSSwapInt64", linkageName: "_OSSwapInt64", line: 202, isLocal: true, isDefinition: true, virtualIndex: 6, isOptimized: false, file: !10, scope: null, type: !5)
6262 !10 = !DIFile(filename: "OSByteOrder.h", directory: "/usr/include/libkern/ppc")
6363 !11 = !DIDerivedType(tag: DW_TAG_typedef, name: "uint64_t", line: 59, file: !36, scope: !3, baseType: !13)
6464 !12 = !DIFile(filename: "stdint.h", directory: "/usr/4.2.1/include")
6565 !13 = !DIBasicType(tag: DW_TAG_base_type, name: "long long unsigned int", size: 64, align: 64, encoding: DW_ATE_unsigned)
6666 !14 = !DILocation(line: 202, scope: !9, inlinedAt: !7)
67 !15 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "base", line: 92, arg: 0, scope: !16, file: !10, type: !17)
67 !15 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "base", line: 92, arg: 2, scope: !16, file: !10, type: !17)
6868 !16 = !DISubprogram(name: "OSReadSwapInt64", linkageName: "OSReadSwapInt64", line: 95, isLocal: true, isDefinition: true, virtualIndex: 6, isOptimized: false, file: !38, scope: null, type: !5)
6969 !17 = !DIDerivedType(tag: DW_TAG_pointer_type, size: 32, align: 32, file: !39, scope: !3, baseType: null)
7070 !18 = !{}
71 !19 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "byteOffset", line: 94, arg: 0, scope: !16, file: !10, type: !20)
71 !19 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "byteOffset", line: 94, arg: 3, scope: !16, file: !10, type: !20)
7272 !20 = !DIDerivedType(tag: DW_TAG_typedef, name: "uintptr_t", line: 114, file: !37, scope: !3, baseType: !22)
7373 !21 = !DIFile(filename: "types.h", directory: "/usr/include/ppc")
7474 !22 = !DIBasicType(tag: DW_TAG_base_type, name: "long unsigned int", size: 32, align: 32, encoding: DW_ATE_unsigned)
3333 !6 = !DISubprogram(name: "bar", linkageName: "bar", line: 14, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: true, file: !27, scope: !1, type: !7, function: i32 ()* @bar)
3434 !7 = !DISubroutineType(types: !8)
3535 !8 = !{!5}
36 !9 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "j", line: 9, arg: 0, scope: !0, file: !1, type: !5)
36 !9 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "j", line: 9, arg: 1, scope: !0, file: !1, type: !5)
3737 !10 = !DILocalVariable(tag: DW_TAG_auto_variable, name: "xyz", line: 10, scope: !11, file: !1, type: !12)
3838
39 !59 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "j", line: 9, arg: 0, scope: !0, file: !1, type: !5)
39 !59 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "j", line: 9, arg: 1, scope: !0, file: !1, type: !5)
4040 !60 = !DILocalVariable(tag: DW_TAG_auto_variable, name: "xyz", line: 10, scope: !11, file: !1, type: !12)
4141
4242 !11 = distinct !DILexicalBlock(line: 9, column: 0, file: !1, scope: !0)
1616 !1 = !DIFile(filename: "GSFusedSilica.m", directory: "/Volumes/Data/Users/sabre/Desktop")
1717 !2 = !DICompileUnit(language: DW_LANG_ObjC, producer: "clang version 2.9 (trunk 115292)", isOptimized: true, runtimeVersion: 1, emissionKind: 0, file: !25, enums: !26, retainedTypes: !26)
1818 !5 = !DIDerivedType(tag: DW_TAG_typedef, name: "CGRect", line: 49, file: !25, baseType: null)
19 !23 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "rect", line: 53, arg: 0, scope: !0, file: !1, type: !5)
19 !23 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "rect", line: 53, arg: 2, scope: !0, file: !1, type: !5)
2020 !24 = !DILocation(line: 53, column: 33, scope: !0)
2121 !25 = !DIFile(filename: "GSFusedSilica.m", directory: "/Volumes/Data/Users/sabre/Desktop")
2222 !26 = !{}
3333 !6 = !DISubprogram(name: "bar", linkageName: "bar", line: 14, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: true, file: !27, scope: !1, type: !7, function: i32 ()* @bar)
3434 !7 = !DISubroutineType(types: !8)
3535 !8 = !{!5}
36 !9 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "j", line: 9, arg: 0, scope: !0, file: !1, type: !5)
36 !9 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "j", line: 9, arg: 1, scope: !0, file: !1, type: !5)
3737 !10 = !DILocalVariable(tag: DW_TAG_auto_variable, name: "xyz", line: 10, scope: !11, file: !1, type: !12)
3838
39 !59 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "j", line: 9, arg: 0, scope: !0, file: !1, type: !5)
39 !59 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "j", line: 9, arg: 1, scope: !0, file: !1, type: !5)
4040 !60 = !DILocalVariable(tag: DW_TAG_auto_variable, name: "xyz", line: 10, scope: !11, file: !1, type: !12)
4141
4242 !11 = distinct !DILexicalBlock(line: 9, column: 0, file: !1, scope: !0)
3030 !llvm.dbg.cu = !{!3}
3131 !llvm.module.flags = !{!20}
3232
33 !0 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "x", line: 7, arg: 0, scope: !1, file: !2, type: !7)
33 !0 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "x", line: 7, arg: 1, scope: !1, file: !2, type: !7)
3434 !1 = !DISubprogram(name: "foo", linkageName: "foo", line: 7, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: false, scopeLine: 7, file: !18, scope: !2, type: !4, function: i32 (%struct.X*, %struct.Y*)* @foo)
3535 !2 = !DIFile(filename: "a.c", directory: "/tmp/")
3636 !3 = !DICompileUnit(language: DW_LANG_C89, producer: "4.2.1 (Based on Apple Inc. build 5658) (LLVM build)", isOptimized: false, emissionKind: 0, file: !18, enums: !19, retainedTypes: !19, subprograms: !17, imports: null)
4444 !11 = !{!12}
4545 !12 = !DIDerivedType(tag: DW_TAG_member, name: "x", line: 5, size: 32, align: 32, file: !18, scope: !10, baseType: !6)
4646 !13 = !DILocation(line: 7, scope: !1)
47 !14 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "y", line: 7, arg: 0, scope: !1, file: !2, type: !9)
47 !14 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "y", line: 7, arg: 2, scope: !1, file: !2, type: !9)
4848 !15 = !DILocation(line: 7, scope: !16)
4949 !16 = distinct !DILexicalBlock(line: 7, column: 0, file: !18, scope: !1)
5050 !17 = !{!1}
3333 !6 = !DISubprogram(name: "bar", linkageName: "bar", line: 14, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: true, file: !27, scope: !1, type: !7, function: i32 ()* @bar)
3434 !7 = !DISubroutineType(types: !8)
3535 !8 = !{!5}
36 !9 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "j", line: 9, arg: 0, scope: !0, file: !1, type: !5)
36 !9 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "j", line: 9, arg: 1, scope: !0, file: !1, type: !5)
3737 !10 = !DILocalVariable(tag: DW_TAG_auto_variable, name: "xyz", line: 10, scope: !11, file: !1, type: !12)
3838
39 !109 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "j", line: 9, arg: 0, scope: !0, file: !1, type: !5)
39 !109 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "j", line: 9, arg: 1, scope: !0, file: !1, type: !5)
4040 !110 = !DILocalVariable(tag: DW_TAG_auto_variable, name: "xyz", line: 10, scope: !11, file: !1, type: !12)
4141
4242 !11 = distinct !DILexicalBlock(line: 9, column: 0, file: !1, scope: !0)
2727 !llvm.dbg.cu = !{!3}
2828 !llvm.module.flags = !{!21}
2929
30 !0 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "my_r0", line: 11, arg: 0, scope: !1, file: !2, type: !7)
30 !0 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "my_r0", line: 11, arg: 1, scope: !1, file: !2, type: !7)
3131 !1 = !DISubprogram(name: "foo", linkageName: "foo", line: 11, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: false, file: !19, scope: !2, type: !4, function: double (%struct.Rect*)* @foo)
3232 !2 = !DIFile(filename: "b2.c", directory: "/tmp/")
3333 !3 = !DICompileUnit(language: DW_LANG_C89, producer: "4.2.1 (Based on Apple Inc. build 5658) (LLVM build)", isOptimized: false, emissionKind: 0, file: !19, enums: !20, retainedTypes: !20, subprograms: !18, imports: null)
5353 !11 = !{!12, !12, !12}
5454 !12 = !DIDerivedType(tag: DW_TAG_typedef, name: "TItype", line: 160, file: !30, scope: !6, baseType: !13)
5555 !13 = !DIBasicType(tag: DW_TAG_base_type, size: 128, align: 128, encoding: DW_ATE_signed)
56 !14 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "u", line: 1093, arg: 0, scope: !9, file: !1, type: !12)
56 !14 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "u", line: 1093, arg: 1, scope: !9, file: !1, type: !12)
5757 !15 = !DILocation(line: 1093, scope: !9)
5858 !16 = !{i64 0}
5959 !17 = !DILocalVariable(tag: DW_TAG_auto_variable, name: "c", line: 1095, scope: !18, file: !1, type: !19)
3030 !4 = !{null, !5}
3131 !5 = !DIDerivedType(tag: DW_TAG_pointer_type, size: 32, align: 32, scope: !2, baseType: !6)
3232 !6 = !DIBasicType(tag: DW_TAG_base_type, name: "unsigned int", size: 32, align: 32, encoding: DW_ATE_unsigned)
33 !7 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "ip", line: 1, arg: 0, scope: !0, file: !1, type: !5)
33 !7 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "ip", line: 1, arg: 1, scope: !0, file: !1, type: !5)
3434 !8 = !DILocation(line: 1, column: 42, scope: !0)
3535 !9 = !DILocalVariable(tag: DW_TAG_auto_variable, name: "gid", line: 3, scope: !10, file: !1, type: !6)
3636 !10 = distinct !DILexicalBlock(line: 2, column: 1, file: !19, scope: !0)
8888 !5 = !DIDerivedType(tag: DW_TAG_pointer_type, size: 32, align: 32, scope: !2, baseType: !6)
8989 !6 = !DIDerivedType(tag: DW_TAG_typedef, name: "uint", file: !20, scope: !2, baseType: !7)
9090 !7 = !DIBasicType(tag: DW_TAG_base_type, name: "unsigned int", size: 32, align: 32, encoding: DW_ATE_unsigned)
91 !8 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "ip", line: 1, arg: 0, scope: !0, file: !1, type: !5)
91 !8 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "ip", line: 1, arg: 1, scope: !0, file: !1, type: !5)
9292 !9 = !DILocation(line: 1, column: 32, scope: !0)
9393 !10 = !DILocalVariable(tag: DW_TAG_auto_variable, name: "tid", line: 3, scope: !11, file: !1, type: !6)
9494 !11 = distinct !DILexicalBlock(line: 2, column: 1, file: !1, scope: !0)
6161 !9 = !DISubroutineType(types: !10)
6262 !10 = !{!11}
6363 !11 = !DIBasicType(tag: DW_TAG_base_type, name: "unsigned char", size: 8, align: 8, encoding: DW_ATE_unsigned_char)
64 !12 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "var", line: 19509, arg: 0, scope: !0, file: !1, type: !5)
64 !12 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "var", line: 19509, arg: 1, scope: !0, file: !1, type: !5)
6565 !13 = !DILocation(line: 19509, column: 20, scope: !0)
6666 !14 = !DILocation(line: 18091, column: 2, scope: !15, inlinedAt: !17)
6767 !15 = distinct !DILexicalBlock(line: 18086, column: 1, file: !26, scope: !16)
2525 !3 = !DISubroutineType(types: !4)
2626 !4 = !{!5}
2727 !5 = !DIBasicType(tag: DW_TAG_base_type, name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
28 !6 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "b", line: 5, arg: 0, scope: !0, file: !1, type: !7)
28 !6 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "b", line: 5, arg: 1, scope: !0, file: !1, type: !7)
2929 !7 = !DIDerivedType(tag: DW_TAG_pointer_type, size: 64, align: 64, scope: !2, baseType: !8)
3030 !8 = !DICompositeType(tag: DW_TAG_structure_type, name: "a", line: 1, size: 32, align: 32, file: !22, scope: !2, elements: !9)
3131 !9 = !{!10}
128128 !21 = !DILocation(line: 11, scope: !1)
129129 !22 = !DILocation(line: 13, scope: !1)
130130 !23 = !DILocation(line: 14, scope: !1)
131 !24 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "this", line: 13, arg: 0, scope: !25, file: !4, type: !26)
131 !24 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "this", line: 13, arg: 1, scope: !25, file: !4, type: !26)
132132 !25 = !DISubprogram(name: "test1", linkageName: "_ZN5test1C1Ev", line: 1, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: false, scope: !4, type: !15)
133133 !26 = !DIDerivedType(tag: DW_TAG_const_type, size: 64, align: 64, flags: DIFlagArtificial, file: !4, baseType: !27)
134134 !27 = !DIDerivedType(tag: DW_TAG_pointer_type, size: 64, align: 64, file: !4, baseType: !8)
136136 !29 = !DILocation(line: 1, scope: !30)
137137 !30 = distinct !DILexicalBlock(line: 0, column: 0, file: !44, scope: !31)
138138 !31 = distinct !DILexicalBlock(line: 0, column: 0, file: !44, scope: !25)
139 !32 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "this", line: 4, arg: 0, scope: !33, file: !4, type: !26)
139 !32 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "this", line: 4, arg: 1, scope: !33, file: !4, type: !26)
140140 !33 = !DISubprogram(name: "~test1", linkageName: "_ZN5test1D1Ev", line: 4, isLocal: false, isDefinition: true, virtuality: DW_VIRTUALITY_virtual, virtualIndex: 6, isOptimized: false, scope: !8, type: !15, containingType: !8)
141141 !34 = !DILocation(line: 4, scope: !33)
142142 !35 = !DILocation(line: 5, scope: !36)
143143 !36 = distinct !DILexicalBlock(line: 0, column: 0, file: !44, scope: !33)
144144 !37 = !DILocation(line: 6, scope: !36)
145 !38 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "this", line: 4, arg: 0, scope: !39, file: !4, type: !26)
145 !38 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "this", line: 4, arg: 1, scope: !39, file: !4, type: !26)
146146 !39 = !DISubprogram(name: "~test1", linkageName: "_ZN5test1D0Ev", line: 4, isLocal: false, isDefinition: true, virtuality: DW_VIRTUALITY_virtual, virtualIndex: 6, isOptimized: false, scope: !8, type: !15, containingType: !8)
147147 !40 = !DILocation(line: 4, scope: !39)
148148 !41 = !DILocation(line: 5, scope: !42)
4444
4545 !llvm.dbg.cu = !{!3}
4646 !llvm.module.flags = !{!30}
47 !0 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "name", line: 8, arg: 0, scope: !1, file: !2, type: !6)
47 !0 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "name", line: 8, arg: 1, scope: !1, file: !2, type: !6)
4848 !1 = !DISubprogram(name: "vfs_addname", linkageName: "vfs_addname", line: 12, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: false, file: !28, scope: !2, type: !4)
4949 !2 = !DIFile(filename: "tail.c", directory: "/Users/echeng/LLVM/radars/r7927803/")
5050 !3 = !DICompileUnit(language: DW_LANG_C89, producer: "4.2.1 (Based on Apple Inc. build 5658) (LLVM build 9999)", isOptimized: true, emissionKind: 0, file: !28, enums: !29, retainedTypes: !29)
5454 !7 = !DIDerivedType(tag: DW_TAG_const_type, size: 8, align: 8, file: !28, scope: !2, baseType: !8)
5555 !8 = !DIBasicType(tag: DW_TAG_base_type, name: "char", size: 8, align: 8, encoding: DW_ATE_signed_char)
5656 !9 = !DIBasicType(tag: DW_TAG_base_type, name: "unsigned int", size: 32, align: 32, encoding: DW_ATE_unsigned)
57 !10 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "len", line: 9, arg: 0, scope: !1, file: !2, type: !9)
58 !11 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "hash", line: 10, arg: 0, scope: !1, file: !2, type: !9)
59 !12 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "flags", line: 11, arg: 0, scope: !1, file: !2, type: !9)
57 !10 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "len", line: 9, arg: 2, scope: !1, file: !2, type: !9)
58 !11 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "hash", line: 10, arg: 3, scope: !1, file: !2, type: !9)
59 !12 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "flags", line: 11, arg: 4, scope: !1, file: !2, type: !9)
6060 !13 = !DILocation(line: 13, scope: !14)
6161 !14 = distinct !DILexicalBlock(line: 12, column: 0, file: !28, scope: !1)
62 !15 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "name", line: 17, arg: 0, scope: !16, file: !2, type: !6)
62 !15 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "name", line: 17, arg: 1, scope: !16, file: !2, type: !6)
6363 !16 = !DISubprogram(name: "add_name_internal", linkageName: "add_name_internal", line: 22, isLocal: true, isDefinition: true, virtualIndex: 6, isOptimized: false, file: !28, scope: !2, type: !17)
6464 !17 = !DISubroutineType(types: !18)
6565 !18 = !{!6, !6, !9, !9, !19, !9}
6666 !19 = !DIBasicType(tag: DW_TAG_base_type, name: "unsigned char", size: 8, align: 8, encoding: DW_ATE_unsigned_char)
67 !20 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "len", line: 18, arg: 0, scope: !16, file: !2, type: !9)
68 !21 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "hash", line: 19, arg: 0, scope: !16, file: !2, type: !9)
69 !22 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "extra", line: 20, arg: 0, scope: !16, file: !2, type: !19)
70 !23 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "flags", line: 21, arg: 0, scope: !16, file: !2, type: !9)
67 !20 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "len", line: 18, arg: 2, scope: !16, file: !2, type: !9)
68 !21 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "hash", line: 19, arg: 3, scope: !16, file: !2, type: !9)
69 !22 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "extra", line: 20, arg: 4, scope: !16, file: !2, type: !19)
70 !23 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "flags", line: 21, arg: 5, scope: !16, file: !2, type: !9)
7171 !24 = !DILocation(line: 23, scope: !25)
7272 !25 = distinct !DILexicalBlock(line: 22, column: 0, file: !28, scope: !16)
7373 !26 = !DILocation(line: 24, scope: !25)
5757 !0 = !DIGlobalVariable(name: "Stop", line: 2, isLocal: true, isDefinition: true, scope: !1, file: !1, type: !2, variable: i32* @Stop)
5858 !1 = !DICompileUnit(language: DW_LANG_C89, producer: "4.2.1 (Based on Apple Inc. build 5658) (LLVM build)", isOptimized: true, emissionKind: 0, file: !20, enums: !21, retainedTypes: !21)
5959 !2 = !DIBasicType(tag: DW_TAG_base_type, name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
60 !3 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "i", line: 4, arg: 0, scope: !4, file: !1, type: !2)
60 !3 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "i", line: 4, arg: 1, scope: !4, file: !1, type: !2)
6161 !4 = !DISubprogram(name: "foo", linkageName: "foo", line: 4, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: false, scope: !1, type: !5)
6262 !5 = !DISubroutineType(types: !6)
6363 !6 = !{!2, !2}
8989 !3 = !DISubroutineType(types: !4)
9090 !4 = !{!5}
9191 !5 = !DIBasicType(tag: DW_TAG_base_type, name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
92 !6 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "x", line: 32, arg: 0, scope: !0, file: !1, type: !5)
92 !6 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "x", line: 32, arg: 1, scope: !0, file: !1, type: !5)
9393 !7 = !DILocation(line: 32, column: 13, scope: !0)
94 !8 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "y", line: 32, arg: 0, scope: !0, file: !1, type: !5)
94 !8 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "y", line: 32, arg: 2, scope: !0, file: !1, type: !5)
9595 !9 = !DILocation(line: 32, column: 20, scope: !0)
96 !10 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "z", line: 32, arg: 0, scope: !0, file: !1, type: !5)
96 !10 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "z", line: 32, arg: 3, scope: !0, file: !1, type: !5)
9797 !11 = !DILocation(line: 32, column: 27, scope: !0)
9898 !12 = !DILocation(line: 33, column: 3, scope: !13)
9999 !13 = distinct !DILexicalBlock(line: 32, column: 30, file: !18, scope: !0)
3434 !llvm.dbg.cu = !{!3}
3535 !llvm.module.flags = !{!14}
3636
37 !0 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "i", line: 2, arg: 0, scope: !1, file: !2, type: !7)
37 !0 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "i", line: 2, arg: 1, scope: !1, file: !2, type: !7)
3838 !1 = !DISubprogram(name: "testfunc", linkageName: "testfunc", line: 2, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: false, scopeLine: 2, file: !12, scope: !2, type: !4, function: double (i32, double)* @testfunc)
3939 !2 = !DIFile(filename: "testfunc.c", directory: "/tmp")
4040 !3 = !DICompileUnit(language: DW_LANG_C89, producer: "4.2.1 (Based on Apple Inc. build 5658) (LLVM build)", isOptimized: true, emissionKind: 0, file: !12, enums: !13, retainedTypes: !13)
4343 !6 = !DIBasicType(tag: DW_TAG_base_type, name: "double", size: 64, align: 64, encoding: DW_ATE_float)
4444 !7 = !DIBasicType(tag: DW_TAG_base_type, name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
4545 !8 = !DILocation(line: 2, scope: !1)
46 !9 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "j", line: 2, arg: 0, scope: !1, file: !2, type: !6)
46 !9 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "j", line: 2, arg: 2, scope: !1, file: !2, type: !6)
4747 !10 = !DILocation(line: 3, scope: !11)
4848 !11 = distinct !DILexicalBlock(line: 2, column: 0, file: !12, scope: !1)
4949 !12 = !DIFile(filename: "testfunc.c", directory: "/tmp")
3131
3232 !llvm.dbg.cu = !{!3}
3333 !llvm.module.flags = !{!22}
34 !0 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "a", line: 8, arg: 0, scope: !1, file: !2, type: !6)
34 !0 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "a", line: 8, arg: 1, scope: !1, file: !2, type: !6)
3535 !1 = !DISubprogram(name: "baz", linkageName: "baz", line: 8, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: false, scopeLine: 8, file: !20, scope: !2, type: !4, function: void (i32)* @baz)
3636 !2 = !DIFile(filename: "bar.c", directory: "/tmp/")
3737 !3 = !DICompileUnit(language: DW_LANG_C89, producer: "4.2.1 (Based on Apple Inc. build 5658) (LLVM build)", isOptimized: true, emissionKind: 0, file: !20, enums: !21, retainedTypes: !21)
4040 !6 = !DIBasicType(tag: DW_TAG_base_type, name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
4141 !7 = !DILocation(line: 8, scope: !1)
4242 !8 = !DILocation(line: 9, scope: !1)
43 !9 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "x", line: 4, arg: 0, scope: !10, file: !2, type: !6)
43 !9 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "x", line: 4, arg: 1, scope: !10, file: !2, type: !6)
4444 !10 = !DISubprogram(name: "bar", linkageName: "bar", line: 4, isLocal: true, isDefinition: true, virtualIndex: 6, isOptimized: false, scopeLine: 4, file: !20, scope: !2, type: !11)
4545 !11 = !DISubroutineType(types: !12)
4646 !12 = !{null, !6, !13, !14}
4747 !13 = !DIBasicType(tag: DW_TAG_base_type, name: "long int", size: 64, align: 64, encoding: DW_ATE_signed)
4848 !14 = !DIDerivedType(tag: DW_TAG_pointer_type, size: 64, align: 64, file: !20, scope: !2, baseType: null)
4949 !15 = !DILocation(line: 4, scope: !10, inlinedAt: !8)
50 !16 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "y", line: 4, arg: 0, scope: !10, file: !2, type: !13)
51 !17 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "z", line: 4, arg: 0, scope: !10, file: !2, type: !14)
50 !16 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "y", line: 4, arg: 2, scope: !10, file: !2, type: !13)
51 !17 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "z", line: 4, arg: 3, scope: !10, file: !2, type: !14)
5252 !18 = !DILocation(line: 5, scope: !10, inlinedAt: !8)
5353 !19 = !DILocation(line: 10, scope: !1)
5454 !20 = !DIFile(filename: "bar.c", directory: "/tmp/")
4444 !12 = !{!9, !9}
4545 !13 = !DILocalVariable(tag: DW_TAG_auto_variable, name: "bb", line: 5, scope: !14, file: !5, type: !9)
4646 !14 = distinct !DILexicalBlock(line: 5, column: 0, file: !1, scope: !3)
47 !15 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "i", line: 7, arg: 0, scope: !10, file: !5, type: !9)
47 !15 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "i", line: 7, arg: 1, scope: !10, file: !5, type: !9)
4848 !16 = !DIGlobalVariable(name: "abcd", line: 2, isLocal: true, isDefinition: true, scope: !5, file: !5, type: !9)
4949 !17 = !DIGlobalVariable(name: "xyz", line: 3, isLocal: false, isDefinition: true, scope: !5, file: !5, type: !9, variable: i32* @xyz)
5050 !18 = !DILocation(line: 6, scope: !19)