From d9720a4749a437d47bb0f238e839e22d27506b77 Mon Sep 17 00:00:00 2001 From: "Duncan P. N. Exon Smith" Date: Mon, 30 Mar 2015 17:06:38 +0000 Subject: [PATCH] DebugInfo: Simplify logic in DISubprogram::Verify(), NFC Simplify the logic in `DISubprogram::Verify()` by using the new debug info hierarchy directly instead of the `DebugLoc` wrapper. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@233563 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/IR/DebugInfo.cpp | 21 ++++++++------------- 1 file changed, 8 insertions(+), 13 deletions(-) diff --git a/lib/IR/DebugInfo.cpp b/lib/IR/DebugInfo.cpp index 9a6b9536bc1..ec4f95eb71f 100644 --- a/lib/IR/DebugInfo.cpp +++ b/lib/IR/DebugInfo.cpp @@ -343,24 +343,19 @@ bool DISubprogram::Verify() const { if (auto *F = getFunction()) { for (auto &BB : *F) { for (auto &I : BB) { - DebugLoc DL = I.getDebugLoc(); - if (DL.isUnknown()) + MDLocation *DL = + cast_or_null(I.getDebugLoc().getAsMDNode()); + if (!DL) continue; - MDNode *Scope = nullptr; - MDNode *IA = nullptr; // walk the inlined-at scopes - while ((IA = DL.getInlinedAt())) - DL = DebugLoc::getFromDILocation(IA); - DL.getScopeAndInlinedAt(Scope, IA); + while (MDLocation *IA = DL->getInlinedAt()) + DL = IA; + MDScope *Scope = DL->getScope(); if (!Scope) return false; - assert(!IA); - while (!DIDescriptor(Scope).isSubprogram()) { - DILexicalBlockFile D(Scope); - Scope = D.isLexicalBlockFile() - ? D.getScope() - : DebugLoc::getFromDILexicalBlock(Scope).getScope(); + while (!isa(Scope)) { + Scope = cast(Scope)->getScope(); if (!Scope) return false; } -- 2.34.1