[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