Add an assertion and prefer a crash over an infinite loop.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@226588 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Adrian Prantl 2015-01-20 18:03:37 +00:00
parent 6dc4d8f0ed
commit 61b4b8088d

View 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;