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]

PR 63566 part 5


Hi,
this patch finally disables the wroarkound in ipa-icf for local functions.

Bootstrapped/regtested x86_64-linux, comitted.

Honza

2015-02-08  Jan Hubicka  <hubicka@ucw.cz>

	PR ipa/63566 
	* ipa-icf.c (set_local): New function.
	(sem_function::merge): Use it.

Index: ipa-icf.c
===================================================================
--- ipa-icf.c	(revision 220509)
+++ ipa-icf.c	(working copy)
@@ -584,6 +584,16 @@ sem_function::equals_private (sem_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_ite
       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");


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]