http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57602

--- Comment #13 from Jan Hubicka <hubicka at ucw dot cz> ---
> Please, let me know if more info is needed.
Actually I got the same ICE in meantime.  Here is improved patch (it is still
testing for me)

Index: cgraph.c
===================================================================
*** cgraph.c    (revision 201483)
--- cgraph.c    (working copy)
*************** verify_cgraph_node (struct cgraph_node *
*** 2363,2369 ****
        error ("inline clone in same comdat group list");
        error_found = true;
      }
!   if (!node->symbol.definition && node->local.local)
      {
        error ("local symbols must be defined");
        error_found = true;
--- 2363,2369 ----
        error ("inline clone in same comdat group list");
        error_found = true;
      }
!   if (!node->symbol.definition && !node->symbol.in_other_partition &&
node->local.local)
      {
        error ("local symbols must be defined");
        error_found = true;
Index: ipa.c
===================================================================
*** ipa.c    (revision 201483)
--- ipa.c    (working copy)
*************** symtab_remove_unreachable_nodes (bool be
*** 376,382 ****
          {
            if (file)
          fprintf (file, " %s", cgraph_node_name (node));
!           cgraph_reset_node (node);
            changed = true;
          }
      }
--- 376,390 ----
          {
            if (file)
          fprintf (file, " %s", cgraph_node_name (node));
!           node->symbol.analyzed = false;
!           node->symbol.definition = false;
!           node->symbol.cpp_implicit_alias = false;
!           node->symbol.alias = false;
!           node->symbol.weakref = false;
!           if (!node->symbol.in_other_partition)
!         node->local.local = false;
!           cgraph_node_remove_callees (node);
!           ipa_remove_all_references (&node->symbol.ref_list);
            changed = true;
          }
      }
*************** function_and_variable_visibility (bool w
*** 888,894 ****
      }
    FOR_EACH_DEFINED_FUNCTION (node)
      {
!       node->local.local = cgraph_local_node_p (node);

        /* If we know that function can not be overwritten by a different
semantics
       and moreover its section can not be discarded, replace all direct calls
--- 896,902 ----
      }
    FOR_EACH_DEFINED_FUNCTION (node)
      {
!       node->local.local |= cgraph_local_node_p (node);

        /* If we know that function can not be overwritten by a different
semantics
       and moreover its section can not be discarded, replace all direct calls

Reply via email to