diff options
author | Duncan P. N. Exon Smith <dexonsmith@apple.com> | 2015-07-24 23:59:25 +0000 |
---|---|---|
committer | Duncan P. N. Exon Smith <dexonsmith@apple.com> | 2015-07-24 23:59:25 +0000 |
commit | 56b893b364eba35f4d64fc92251de140ad5178ea (patch) | |
tree | 82fea6f3317b29bbff985580981990c5a14abdb8 /llvm/test/Transforms/Mem2Reg/ConvertDebugInfo2.ll | |
parent | cd3f99b6c534ad0d0e2040c6beea8e82b575123b (diff) | |
download | bcm5719-llvm-56b893b364eba35f4d64fc92251de140ad5178ea.tar.gz bcm5719-llvm-56b893b364eba35f4d64fc92251de140ad5178ea.zip |
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.
llvm-svn: 243183
Diffstat (limited to 'llvm/test/Transforms/Mem2Reg/ConvertDebugInfo2.ll')
-rw-r--r-- | llvm/test/Transforms/Mem2Reg/ConvertDebugInfo2.ll | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/llvm/test/Transforms/Mem2Reg/ConvertDebugInfo2.ll b/llvm/test/Transforms/Mem2Reg/ConvertDebugInfo2.ll index 831221b7f97..aff2e608d90 100644 --- a/llvm/test/Transforms/Mem2Reg/ConvertDebugInfo2.ll +++ b/llvm/test/Transforms/Mem2Reg/ConvertDebugInfo2.ll @@ -32,7 +32,7 @@ return: ; preds = %entry !llvm.dbg.cu = !{!3} !llvm.module.flags = !{!22} -!0 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "a", line: 8, arg: 0, scope: !1, file: !2, type: !6) +!0 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "a", line: 8, arg: 1, scope: !1, file: !2, type: !6) !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) !2 = !DIFile(filename: "bar.c", directory: "/tmp/") !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) @@ -41,15 +41,15 @@ return: ; preds = %entry !6 = !DIBasicType(tag: DW_TAG_base_type, name: "int", size: 32, align: 32, encoding: DW_ATE_signed) !7 = !DILocation(line: 8, scope: !1) !8 = !DILocation(line: 9, scope: !1) -!9 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "x", line: 4, arg: 0, scope: !10, file: !2, type: !6) +!9 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "x", line: 4, arg: 1, scope: !10, file: !2, type: !6) !10 = !DISubprogram(name: "bar", linkageName: "bar", line: 4, isLocal: true, isDefinition: true, virtualIndex: 6, isOptimized: false, scopeLine: 4, file: !20, scope: !2, type: !11) !11 = !DISubroutineType(types: !12) !12 = !{null, !6, !13, !14} !13 = !DIBasicType(tag: DW_TAG_base_type, name: "long int", size: 64, align: 64, encoding: DW_ATE_signed) !14 = !DIDerivedType(tag: DW_TAG_pointer_type, size: 64, align: 64, file: !20, scope: !2, baseType: null) !15 = !DILocation(line: 4, scope: !10, inlinedAt: !8) -!16 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "y", line: 4, arg: 0, scope: !10, file: !2, type: !13) -!17 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "z", line: 4, arg: 0, scope: !10, file: !2, type: !14) +!16 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "y", line: 4, arg: 2, scope: !10, file: !2, type: !13) +!17 = !DILocalVariable(tag: DW_TAG_arg_variable, name: "z", line: 4, arg: 3, scope: !10, file: !2, type: !14) !18 = !DILocation(line: 5, scope: !10, inlinedAt: !8) !19 = !DILocation(line: 10, scope: !1) !20 = !DIFile(filename: "bar.c", directory: "/tmp/") |