[debug-early] equate new DIE with DW_AT_specificationto a previous declaration

Jason Merrill jason@redhat.com
Wed Mar 18 02:12:00 GMT 2015


On 03/17/2015 03:58 PM, Aldy Hernandez wrote:
> The problem is that, for -fno-implicit-templates, the decl is now
> DECL_EXTERNAL, which means we never equate this new "DIE with
> DW_AT_specification" to the DECL.  That is, we never fall through here:
>
>    else if (!DECL_EXTERNAL (decl))
>      {
>        HOST_WIDE_INT cfa_fb_offset;
>
>        struct function *fun = DECL_STRUCT_FUNCTION (decl);
>
>        if (!old_die || !get_AT (old_die, DW_AT_inline))
>      equate_decl_number_to_die (decl, subr_die);
>
> However, when we call gen_subprogram_die() the third time through the
> outlining_inline_function hook (late debug), we again try to add a
> DW_AT_specification to the DIE cached from the first time around, but
> this time we ICE because we're not supposed to have multiple
> DW_AT_specification's pointing to the same DIE (the old original DIE).

Why are we outlining a DECL_EXTERNAL function?

Incidentally,

>           /* If we have no location information, this must be a
>              partially generated DIE from early dwarf generation.
>              Fall through and generate it.  */

Why aren't we checking dumped_early here?

Jason



More information about the Gcc-patches mailing list