Don't mark IFUNC resolver as only called directly
commit5852b88d276b3e65c675df24d6d3e999a774ffce
authorhjl <hjl@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 28 May 2018 13:44:18 +0000 (28 13:44 +0000)
committerhjl <hjl@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 28 May 2018 13:44:18 +0000 (28 13:44 +0000)
treed410a47e729840041795b6da0f00fa9cb597fa30
parent6d97bb8ab49f9a28231548087c384bf9c3681a1b
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/

Backport from mainline
2018-05-26  H.J. Lu  <hongjiu.lu@intel.com>

PR target/85900
PR target/85345
* varasm.c (assemble_alias): Lookup ifunc attribute on error.

2018-05-24  H.J. Lu  <hongjiu.lu@intel.com>

PR target/85900
PR target/85345
* varasm.c (assemble_alias): Check ifunc_resolver only on
FUNCTION_DECL.

2018-05-22  H.J. Lu  <hongjiu.lu@intel.com>

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/

Backport from mainline
2018-05-24  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>

* gcc.target/i386/pr85345.c: Require ifunc support.

2018-05-22  H.J. Lu  <hongjiu.lu@intel.com>

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

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-8-branch@260849 138bc75d-0d04-0410-961f-82ee72b054a4
gcc/ChangeLog
gcc/cgraph.c
gcc/cgraph.h
gcc/cgraphunit.c
gcc/lto-cgraph.c
gcc/symtab.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/i386/pr85345.c [new file with mode: 0644]
gcc/varasm.c