This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[PATCH] PR ipa/81185, Improve naming of target_clone cloned function names
- From: Michael Meissner <meissner at linux dot vnet dot ibm dot com>
- To: GCC Patches <gcc-patches at gcc dot gnu dot org>, Jan Hubicka <hubicka at ucw dot cz>, Martin Liska <mliska at suse dot cz>
- Cc: Segher Boessenkool <segher at kernel dot crashing dot org>, David Edelsohn <dje dot gcc at gmail dot com>, Bill Schmidt <wschmidt at linux dot vnet dot ibm dot com>
- Date: Thu, 22 Jun 2017 21:58:04 -0400
- Subject: [PATCH] PR ipa/81185, Improve naming of target_clone cloned function names
- Authentication-results: sourceware.org; auth=none
he June 19th, 2017 change from Martin Liska <mliska@suse.cz>, made the
target_clones support more usable, in that it it changed the external name from
being the default function to being the ifunc handler. This means that calls
from other modules will call the appropriate clone based on what machine it is
running on.
The name generated for each of the clone functions for non-default
architectures has the string ".default.<number>" added to it, while it already
has the various names for the different architectures.
I tracked this down to create_dispatcher_calls getting called for each of the
clone functions, since they have the DECL_FUNCTION_VERISIONED bit set.
I have done bootstrap builds on both x86_64 and PowerPC and this patch builds
the current GCC and has no regressions in the test suite. Can I check it into
the trunk?
2017-06-22 Michael Meissner <meissner@linux.vnet.ibm.com>
PR ipa/81185
* multiple_target.c (create_dispatcher_calls): Only create the
dispatcher call if the function is the default clone of a
versioned function.
Index: gcc/multiple_target.c
===================================================================
--- gcc/multiple_target.c (revision 249569)
+++ gcc/multiple_target.c (working copy)
@@ -64,7 +64,8 @@ create_dispatcher_calls (struct cgraph_n
{
ipa_ref *ref;
- if (!DECL_FUNCTION_VERSIONED (node->decl))
+ if (!DECL_FUNCTION_VERSIONED (node->decl)
+ || !is_function_default_version (node->decl))
return;
auto_vec<cgraph_edge *> edges_to_redirect;
--
Michael Meissner, IBM
IBM, M/S 2506R, 550 King Street, Littleton, MA 01460-6245, USA
email: meissner@linux.vnet.ibm.com, phone: +1 (978) 899-4797