This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
On 03/17/2015 07:12 PM, Jason Merrill wrote:
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?
SRA is analyzing Object<int>::Method() and noticing that `this' is never used, so it's trying to rewrite the call to avoid passing `this' (by creating a clone).
SRA has no restrictions on whether a function is DECL_EXTERNAL. For that matter, the SRA pass is called on all functions that have a gimple body, irregardless of DECL_EXTERNAL, courtesy of the pass manager:
if (node->has_gimple_body_p ()) callback (DECL_STRUCT_FUNCTION (node->decl), data);...and since Object<int>::Method() has a gimple body even though it is marked DECL_EXTERNAL...we get the call into dwarf2out_abstract_decl.
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?
Good point. I'll add an assert. Aldy
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |