[llvm] r226588 - Add an assertion and prefer a crash over an infinite loop.
Duncan P. N. Exon Smith
dexonsmith at apple.com
Tue Jan 20 10:53:38 PST 2015
> On 2015 Jan 20, at 10:03, Adrian Prantl <aprantl at apple.com> wrote:
>
> Author: adrian
> Date: Tue Jan 20 12:03:37 2015
> New Revision: 226588
>
> URL: http://llvm.org/viewvc/llvm-project?rev=226588&view=rev
> Log:
> Add an assertion and prefer a crash over an infinite loop.
>
> Modified:
> llvm/trunk/lib/IR/DebugInfo.cpp
>
> Modified: llvm/trunk/lib/IR/DebugInfo.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/IR/DebugInfo.cpp?rev=226588&r1=226587&r2=226588&view=diff
> ==============================================================================
> --- llvm/trunk/lib/IR/DebugInfo.cpp (original)
> +++ llvm/trunk/lib/IR/DebugInfo.cpp Tue Jan 20 12:03:37 2015
> @@ -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");
It's strange that this isn't simply an assertion:
assert(Scope && "lexical block file has no scope");
But I guess that's so that it crashes even when NDEBUG? (Is that
reliable?)
If that's the reason, you should probably add a comment to that
effect since otherwise I'm likely to switch it to an assert next
time I look at it ;).
(Also, do you know when this situation arises?)
> }
> if (!DISubprogram(Scope).describes(F))
> return false;
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
More information about the llvm-commits
mailing list