https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66295

--- Comment #5 from Richard Biener <rguenth at gcc dot gnu.org> ---
for example g++.dg/ext/mvc1.C ICEs with LTO because the simple IPA pass
target_clone which runs in the IPA pipeline ICEs during WPA:

lto1: internal compiler error: Segmentation fault^M
0xd66336 crash_signal^M
        /space/rguenther/src/svn/early-lto-debug/gcc/toplev.c:335^M
0xe0940d copy_forbidden(function*)^M
        /space/rguenther/src/svn/early-lto-debug/gcc/tree-inline.c:3524^M

this is because DECL_STRUCT_FUNCTION is NULL as ipa_target_clone does

static unsigned int
ipa_target_clone (void)
{
  struct cgraph_node *node;

  target_clone_pass = false;
  FOR_EACH_FUNCTION (node)
    if (node->definition)
      target_clone_pass |= expand_target_clones (node, true);
  return 0;

but it seems to expect bodies to be available.  It looks like the pass wants
to create clones that are materialized only in one of the ltrans units instead
and thus this IPA pass is really not LTO aware properly.

Reply via email to