aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite
diff options
context:
space:
mode:
authorMartin Jambor <mjambor@suse.cz>2019-11-28 15:39:48 +0000
committerMartin Jambor <mjambor@suse.cz>2019-11-28 15:39:48 +0000
commite87ceb1a048f9754adf8ee671e031eeb13b6d0a6 (patch)
treecd9141bc7986db875bf61ac841ff0f056253111b /gcc/testsuite
parentaa0377d766db2c7ded20346770b2e2ff4255dfe4 (diff)
cgraph: ifunc resolvers cannot be made local (PR 92697)
2019-11-28 Martin Jambor <mjambor@suse.cz> PR ipa/92697 * cgraph.c (cgraph_node_cannot_be_local_p_1): Return true for ifunc_resolvers. * symtab.c (symtab_node::dump_base): Dump ifunc_resolver flag. Removed trailig whitespace. testsuite/ * g++.dg/ipa/pr92697.C: New. git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@278812 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/testsuite')
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/g++.dg/ipa/pr92697.C51
2 files changed, 56 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index a7533838f98..eeb4379b5d0 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2019-11-28 Martin Jambor <mjambor@suse.cz>
+
+ PR ipa/92697
+ * g++.dg/ipa/pr92697.C: New.
+
2019-11-28 Richard Biener <rguenther@suse.de>
PR tree-optimization/92645
diff --git a/gcc/testsuite/g++.dg/ipa/pr92697.C b/gcc/testsuite/g++.dg/ipa/pr92697.C
new file mode 100644
index 00000000000..8958bd0dcf2
--- /dev/null
+++ b/gcc/testsuite/g++.dg/ipa/pr92697.C
@@ -0,0 +1,51 @@
+/* { dg-do compile } */
+/* { dg-require-ifunc "" } */
+/* { dg-options "-O2 -fdump-ipa-sra" } */
+
+extern int have_avx2;
+extern int have_ssse3;
+
+namespace NTL
+{
+
+ static void randomstream_impl_init_base ()
+ {
+ __builtin_printf ("Frob1\n");
+ }
+
+ static void // __attribute__ ((target ("ssse3")))
+ randomstream_impl_init_ssse3 ()
+ {
+ __builtin_printf ("Frob2\n");
+ }
+
+ static void
+ //__attribute__ ((target ("avx2,fma,avx,pclmul,ssse3")))
+ randomstream_impl_init_avx2 ()
+ {
+ __builtin_printf ("Frob3\n");
+ }
+
+ extern "C"
+ {
+ static void (*resolve_randomstream_impl_init (void)) ()
+ {
+ if (have_avx2)
+ return &randomstream_impl_init_avx2;
+ if (have_ssse3)
+ return &randomstream_impl_init_ssse3;
+ return &randomstream_impl_init_base;
+ }
+ }
+ static void
+ __attribute__ ((ifunc ("resolve_" "randomstream_impl_init")))
+ randomstream_impl_init ();
+ void foo ()
+ {
+ randomstream_impl_init ();
+ }
+
+}
+
+
+/* { dg-final { scan-ipa-dump-not "Created new node" "sra" } } */