+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.
+
2019-11-28 Jan Hubicka <hubicka@ucw.cz>
* profile-count.h (profile_count::combine_with_ipa_count_within):
cgraph_node_cannot_be_local_p_1 (cgraph_node *node, void *)
{
return !(!node->force_output
+ && !node->ifunc_resolver
&& ((DECL_COMDAT (node->decl)
&& !node->forced_by_abi
&& !node->used_from_object_file_p ()
if (DECL_STATIC_DESTRUCTOR (decl))
fprintf (f, " destructor");
}
+ if (ifunc_resolver)
+ fprintf (f, " ifunc_resolver");
fprintf (f, "\n");
-
+
if (same_comdat_group)
fprintf (f, " Same comdat group as: %s\n",
same_comdat_group->dump_asm_name ());
+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
--- /dev/null
+/* { 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" } } */