r260547 - in /trunk/gcc: ChangeLog cgraph.c cgr...

hjl@gcc.gnu.org hjl@gcc.gnu.org
Tue May 22 19:10:00 GMT 2018


Author: hjl
Date: Tue May 22 19:10:34 2018
New Revision: 260547

URL: https://gcc.gnu.org/viewcvs?rev=260547&root=gcc&view=rev
Log:
Don't mark IFUNC resolver as only called directly

Since IFUNC resolver is called indirectly, don't mark IFUNC resolver as
only called directly.  This patch adds ifunc_resolver to cgraph_node,
sets ifunc_resolver for ifunc attribute and checks ifunc_resolver
instead of looking up ifunc attribute.

gcc/

	PR target/85345
	* cgraph.h (cgraph_node::create): Set ifunc_resolver for ifunc
	attribute.
	(cgraph_node::create_alias): Likewise.
	(cgraph_node::get_availability): Check ifunc_resolver instead
	of looking up ifunc attribute.
	* cgraphunit.c (maybe_diag_incompatible_alias): Likewise.
	* varasm.c (do_assemble_alias): Likewise.
	(assemble_alias): Likewise.
	(default_binds_local_p_3): Likewise.
	* cgraph.h (cgraph_node): Add ifunc_resolver.
	(cgraph_node::only_called_directly_or_aliased_p): Return false
	for IFUNC resolver.
	* lto-cgraph.c (input_node): Set ifunc_resolver for ifunc
	attribute.
	* symtab.c (symtab_node::verify_base): Verify that ifunc_resolver
	is equivalent to lookup_attribute ("ifunc", DECL_ATTRIBUTES (decl)).
	(symtab_node::binds_to_current_def_p): Check ifunc_resolver
	instead of looking up ifunc attribute.

gcc/testsuite/

	PR target/85345
	* gcc.target/i386/pr85345.c: New test.

Added:
    trunk/gcc/testsuite/gcc.target/i386/pr85345.c
Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/cgraph.c
    trunk/gcc/cgraph.h
    trunk/gcc/cgraphunit.c
    trunk/gcc/lto-cgraph.c
    trunk/gcc/symtab.c
    trunk/gcc/testsuite/ChangeLog
    trunk/gcc/varasm.c



More information about the Gcc-cvs mailing list