On Mon, Mar 28, 2016 at 11:26 PM, Jason Merrill <ja...@redhat.com> wrote:
> The constexpr evaluation code uses the inlining code to remap the constexpr
> function body for evaluation so that recursion works properly.  In this
> testcase __func__ is declared as a static local variable, so rather than
> remap it, remap_decls tries to add it to the local_decls list for the
> function we're inlining into.  But there is no such function in this case,
> so we crash.
>
> Avoid the add_local_decl call when cfun is null avoids the ICE (thanks
> Jakub), but results in an undefined symbol.  Calling
> varpool_node::finalize_decl instead allows cgraph to handle the reference
> from 'c' properly.
>
> OK if testing passes?

So ce will never be instantiated?

And 'c' will have a DECL_INITIAL of __func__ so I wonder why the cgraph
code when finalizing 'c' does not end up seeing __func__ and finalizing it?
Ah, it only creates a varpool-node it seems but never finalizes it itself.
Honza?

Richard.

Reply via email to