summaryrefslogtreecommitdiffstats
path: root/llvm/test/DebugInfo/X86/inline-member-function.ll
diff options
context:
space:
mode:
authorDuncan P. N. Exon Smith <dexonsmith@apple.com>2015-04-03 16:54:30 +0000
committerDuncan P. N. Exon Smith <dexonsmith@apple.com>2015-04-03 16:54:30 +0000
commit81f522a62e885ef1e947a2d5c4c202df3d1b3f70 (patch)
tree19ae0575f3d18f617622b065632e9e4d39e0cacf /llvm/test/DebugInfo/X86/inline-member-function.ll
parent7b0c62e6858d7764bf72d9e6f0f1fdf0157283d7 (diff)
downloadbcm5719-llvm-81f522a62e885ef1e947a2d5c4c202df3d1b3f70.tar.gz
bcm5719-llvm-81f522a62e885ef1e947a2d5c4c202df3d1b3f70.zip
Verifier: Check that inlined-at locations agree
Check that the `MDLocalVariable::getInlinedAt()` in a debug info intrinsic's variable always matches the `MDLocation::getInlinedAt()` of its `!dbg` attachment. The goal here is to get rid of `MDLocalVariable::getInlinedAt()` entirely (PR22778), since it's expensive and unnecessary, but I'll let this verifier check bake for a while (a week maybe?) first. I've updated the testcases that had the wrong value for `inlinedAt:`. This checks that things are sane in the IR, but currently things go out of whack in a few places in the backend. I'll follow shortly with assertions in the backend (with code fixes). If you have out-of-tree testcases that just started failing, here's how I updated these ones: 1. The verifier check gives you the basic block, function, instruction, and relevant metadata arguments (metadata numbering doesn't necessarily match the source file, unfortunately). 2. Look at the `@llvm.dbg.*()` instruction, and compare the `inlinedAt:` fields of the variable argument (second `metadata` argument) and the `!dbg` attachment. 3. Figure out based on the variable `scope:` chain and the functions in the file whether the variable has been inlined (and into what), so you can determine which `inlinedAt:` is actually correct. In all of the in-tree testcases, the `!MDLocation()` was correct and the `!MDLocalVariable()` was wrong, but YMMV. 4. Duplicate the metadata that you're going to change, and add/drop the `inlinedAt:` field from one of them. Be careful that the other references to the same metadata node point at the correct one. llvm-svn: 234021
Diffstat (limited to 'llvm/test/DebugInfo/X86/inline-member-function.ll')
-rw-r--r--llvm/test/DebugInfo/X86/inline-member-function.ll4
1 files changed, 2 insertions, 2 deletions
diff --git a/llvm/test/DebugInfo/X86/inline-member-function.ll b/llvm/test/DebugInfo/X86/inline-member-function.ll
index c1a367e7e0f..c0b4ab28fb8 100644
--- a/llvm/test/DebugInfo/X86/inline-member-function.ll
+++ b/llvm/test/DebugInfo/X86/inline-member-function.ll
@@ -88,8 +88,8 @@ attributes #1 = { nounwind readnone }
!21 = !{i32 1, !"Debug Info Version", i32 3}
!22 = !{!"clang version 3.5.0 "}
!23 = !MDLocation(line: 8, scope: !13)
-!24 = !MDLocalVariable(tag: DW_TAG_arg_variable, name: "this", arg: 1, flags: DIFlagArtificial | DIFlagObjectPointer, scope: !17, type: !25)
+!24 = !MDLocalVariable(tag: DW_TAG_arg_variable, name: "this", arg: 1, flags: DIFlagArtificial | DIFlagObjectPointer, scope: !17, type: !25, inlinedAt: !23)
!25 = !MDDerivedType(tag: DW_TAG_pointer_type, size: 64, align: 64, baseType: !"_ZTS3foo")
!26 = !MDLocation(line: 0, scope: !17, inlinedAt: !23)
-!27 = !MDLocalVariable(tag: DW_TAG_arg_variable, name: "x", line: 2, arg: 2, scope: !17, file: !14, type: !9)
+!27 = !MDLocalVariable(tag: DW_TAG_arg_variable, name: "x", line: 2, arg: 2, scope: !17, file: !14, type: !9, inlinedAt: !23)
!28 = !MDLocation(line: 2, scope: !17, inlinedAt: !23)
OpenPOWER on IntegriCloud