]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
ipa: do not make localaliases for target_clones [PR101261]
authorMartin Liska <mliska@suse.cz>
Fri, 13 Aug 2021 09:10:56 +0000 (11:10 +0200)
committerMartin Liska <mliska@suse.cz>
Fri, 13 Aug 2021 13:44:11 +0000 (15:44 +0200)
PR ipa/101261

gcc/ChangeLog:

* symtab.c (symtab_node::noninterposable_alias): Do not create
  local aliases for target_clone functions as the clonning pass
  rejects aliases.

gcc/testsuite/ChangeLog:

* gcc.target/i386/pr101261.c: New test.

gcc/symtab.c
gcc/testsuite/gcc.target/i386/pr101261.c [new file with mode: 0644]

index 8c4cb70b015469633971f25d8cf5d81711eee264..c7ea8ecef74f8ac9d112328466c56ebb5f8e0abe 100644 (file)
@@ -1959,6 +1959,8 @@ symtab_node::noninterposable_alias (void)
   /* If aliases aren't supported by the assembler, fail.  */
   if (!TARGET_SUPPORTS_ALIASES)
     return NULL;
+  else if (lookup_attribute ("target_clones", DECL_ATTRIBUTES (node->decl)))
+    return NULL;
 
   /* Otherwise create a new one.  */
   new_decl = copy_node (node->decl);
diff --git a/gcc/testsuite/gcc.target/i386/pr101261.c b/gcc/testsuite/gcc.target/i386/pr101261.c
new file mode 100644 (file)
index 0000000..d25d1a2
--- /dev/null
@@ -0,0 +1,11 @@
+/* PR middle-end/101261 */
+/* { dg-do compile { target fpic } } */
+/* { dg-options "-fno-semantic-interposition -fPIC" } */
+/* { dg-require-ifunc "" } */
+
+void
+__attribute__((target_clones("default", "avx2")))
+dt_ioppr_transform_image_colorspace()
+{
+  dt_ioppr_transform_image_colorspace();
+}