re PR ipa/63566 (i686 bootstrap fails: ICE RTL flag check: INSN_UID used with unexpec...
authorJan Hubicka <hubicka@ucw.cz>
Mon, 9 Feb 2015 20:45:04 +0000 (21:45 +0100)
committerJan Hubicka <hubicka@gcc.gnu.org>
Mon, 9 Feb 2015 20:45:04 +0000 (20:45 +0000)
PR ipa/63566
* ipa-icf.c (set_local): New function.
(sem_function::merge): Use it.

From-SVN: r220548

gcc/ChangeLog
gcc/ipa-icf.c

index 445e9a93afe320b2b0c457f8b501c7155758a071..5f7c6214a3e928598aead998f36c3eb4ed99e364 100644 (file)
@@ -1,3 +1,9 @@
+2015-02-08  Jan Hubicka  <hubicka@ucw.cz>
+
+       PR ipa/63566 
+       * ipa-icf.c (set_local): New function.
+       (sem_function::merge): Use it.
+
 2015-02-08  Jan Hubicka  <hubicka@ucw.cz>
 
        * ipa-devirt.c (odr_types_equivalent_p): Fix formating.
index d19ddc321e6842b6f0a460a4ce8b3fb0f71316ff..692946ae7b1741b7c72ff647120451946ce56b21 100644 (file)
@@ -584,6 +584,16 @@ sem_function::equals_private (sem_item *item,
   return result;
 }
 
+/* Set LOCAL_P of NODE to true if DATA is non-NULL.
+   Helper for call_for_symbol_thunks_and_aliases.  */
+
+static bool
+set_local (cgraph_node *node, void *data)
+{
+  node->local.local = data != NULL;
+  return false;
+}
+
 /* Merges instance with an ALIAS_ITEM, where alias, thunk or redirection can
    be applied.  */
 bool
@@ -743,10 +753,8 @@ sem_function::merge (sem_item *alias_item)
       cgraph_node::create_alias (alias_func->decl, decl);
       alias->resolve_alias (original);
 
-      /* Workaround for PR63566 that forces equal calling convention
-       to be used.  */
-      alias->local.local = false;
-      original->local.local = false;
+      original->call_for_symbol_thunks_and_aliases
+        (set_local, (void *)(size_t) original->local_p (), true);
 
       if (dump_file)
        fprintf (dump_file, "Callgraph alias has been created.\n\n");