Verifier: Start recursing into !dbg attachments

The main verifier already recurses through the other entry points, so we
might as well descend here too.

This temporarily duplicates some work already done in
`verifyDebugInfo()`, but eventually I'll be removing the other side.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@233095 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Duncan P. N. Exon Smith 2015-03-24 17:32:19 +00:00
parent eeb2ba6d46
commit 15a873a6e2
2 changed files with 10 additions and 6 deletions

View File

@ -2567,11 +2567,9 @@ void Verifier::visitInstruction(Instruction &I) {
&I);
}
// Don't recurse into !dbg attachments (leave that for verifyDebugInfo()),
// but at least check that it's a legal type.
if (MDNode *N = I.getDebugLoc().getAsMDNode()) {
Assert(isa<MDLocation>(N),
"invalid !dbg metadata attachment", &I, N);
Assert(isa<MDLocation>(N), "invalid !dbg metadata attachment", &I, N);
visitMDNode(*N);
}
InstsInThisBlock.insert(&I);

View File

@ -1,12 +1,18 @@
; RUN: not llvm-as -disable-output <%s 2>&1 | FileCheck %s
define void @foo() {
ret void, !dbg !{}
}
entry:
br label %exit, !dbg !MDLocation(scope: !MDSubprogram(), inlinedAt: !{})
; CHECK: inlined-at should be a location
; CHECK-NEXT: !{{[0-9]+}} = !MDLocation(line: 0, scope: !{{[0-9]+}}, inlinedAt: ![[IA:[0-9]+]])
; CHECK-NEXT: ![[IA]] = !{}
exit:
ret void, !dbg !{}
; CHECK: invalid !dbg metadata attachment
; CHECK-NEXT: ret void, !dbg ![[LOC:[0-9]+]]
; CHECK-NEXT: ![[LOC]] = !{}
}
!llvm.module.flags = !{!0}
!0 = !{i32 2, !"Debug Info Version", i32 3}