Add an assertion and prefer a crash over an infinite loop.
authorAdrian Prantl <aprantl@apple.com>
Tue, 20 Jan 2015 18:03:37 +0000 (18:03 +0000)
committerAdrian Prantl <aprantl@apple.com>
Tue, 20 Jan 2015 18:03:37 +0000 (18:03 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@226588 91177308-0d34-0410-b5e6-96231b3b80d8

lib/IR/DebugInfo.cpp

index c5c1115797173dcd36117ba49d27220829c3d652..0dd46b7619c33acadc9f86d683f3021dcac9b22e 100644 (file)
@@ -527,12 +527,15 @@ bool DISubprogram::Verify() const {
         while ((IA = DL.getInlinedAt()))
           DL = DebugLoc::getFromDILocation(IA);
         DL.getScopeAndInlinedAt(Scope, IA);
+        assert(Scope && "debug location has no scope");
         assert(!IA);
         while (!DIDescriptor(Scope).isSubprogram()) {
           DILexicalBlockFile D(Scope);
           Scope = D.isLexicalBlockFile()
                       ? D.getScope()
                       : DebugLoc::getFromDILexicalBlock(Scope).getScope();
+          if (!Scope)
+            llvm_unreachable("lexical block file has no scope");
         }
         if (!DISubprogram(Scope).describes(F))
           return false;