From 15a873a6e202d238d5019a314b81e689dec03495 Mon Sep 17 00:00:00 2001 From: "Duncan P. N. Exon Smith" Date: Tue, 24 Mar 2015 17:32:19 +0000 Subject: [PATCH] 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 --- lib/IR/Verifier.cpp | 6 ++---- test/Verifier/dbg.ll | 10 ++++++++-- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/lib/IR/Verifier.cpp b/lib/IR/Verifier.cpp index d5a5afa0c40..5f25891f2b1 100644 --- a/lib/IR/Verifier.cpp +++ b/lib/IR/Verifier.cpp @@ -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(N), - "invalid !dbg metadata attachment", &I, N); + Assert(isa(N), "invalid !dbg metadata attachment", &I, N); + visitMDNode(*N); } InstsInThisBlock.insert(&I); diff --git a/test/Verifier/dbg.ll b/test/Verifier/dbg.ll index 20b80ff2efe..3cff1e05157 100644 --- a/test/Verifier/dbg.ll +++ b/test/Verifier/dbg.ll @@ -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} -- 2.34.1