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

--- Comment #4 from Richard Biener <rguenth at gcc dot gnu.org> ---
Patch doesn't help.

Note IPA PTA is a simple IPA pass running after inlining decisions are
committed to the IL so there shouldn't be any inlining clones around?  Oh, and
it does try to handle them:

  /* Build the constraints.  */
  FOR_EACH_DEFINED_FUNCTION (node)
    {
      varinfo_t vi;
      /* Nodes without a body are not interesting.  Especially do not
         visit clones at this point for now - we get duplicate decls
         there for inline clones at least.  */
      if (!node->has_gimple_body_p () || node->global.inlined_to)
        continue;

obviously it doesn't work...

One way would be to, in this loop, only walk over ultimate_alias_target ()
nodes
(hopefully those will be the ones with body...).

@@ -7785,6 +7793,10 @@ ipa_pta_execute (void)
         there for inline clones at least.  */
       if (!node->has_gimple_body_p () || node->global.inlined_to)
        continue;
+
+      if (node->ultimate_alias_target () != node)
+       continue;
+
       node->get_body ();

       gcc_assert (!node->clone_of);

doesn't work either.

So we have the same decl in multiple alias chains?!  And multiple times in the
symbol table?

Sth is fishy with cgraph here.

Reply via email to