]> git.ipfire.org Git - thirdparty/gcc.git/commit
Turn -fsemantic-interposition to optimization flag
authorJan Hubicka <jh@suse.cz>
Thu, 18 Nov 2021 17:42:35 +0000 (18:42 +0100)
committerJan Hubicka <jh@suse.cz>
Thu, 18 Nov 2021 17:42:35 +0000 (18:42 +0100)
commit75ac95f6647367783c4d65f6f686867ca425cb61
tree36c8c6e5f54c9e2fff395cf1a072416ac33b9fcc
parentc331a75d49b6043399f5ccce72a02ccf3b0ddc56
Turn -fsemantic-interposition to optimization flag

Turn flag_semantic_interposition to optimization option so it can be enabled
with per-function granuality.  This is done by adding the flag among visibility
flags into the symbol table.

gcc/ChangeLog:

2021-11-18  Jan Hubicka  <hubicka@ucw.cz>

* cgraph.c (cgraph_node::get_availability): Update call of
decl_replaceable_p.
(cgraph_node::verify_node): Verify that semantic_interposition flag
is set correclty.
* cgraph.h: (symtab_node): Add semantic_interposition flag.
* cgraphclones.c (set_new_clone_decl_and_node_flags): Clear
semantic_interposition flag.
* cgraphunit.c (cgraph_node::finalize_function): Set
semantic_interposition flag.
(cgraph_node::add_new_function): Likewise.
(varpool_node::finalize_decl): Likewise.
(cgraph_node::create_wrapper): Likewise.
* common.opt (fsemantic-interposition): Turn to optimization node.
* lto-cgraph.c (lto_output_node): Stream semantic_interposition.
(lto_output_varpool_node): Likewise.
(input_overwrite_node): Likewise.
(input_varpool_node): Likewise.
* symtab.c (symtab_node::dump_base): Dump new flag.
* varasm.c (decl_replaceable_p): Add semantic_interposition_p
parameter.
* varasm.h (decl_replaceable_p): Update declaration.
* varpool.c (varpool_node::ctor_useable_for_folding_p):
Use semantic_interposition flag.
(varpool_node::get_availability): Likewise.
(varpool_node::create_alias): Copy semantic_interposition flag.

gcc/cp/ChangeLog:

2021-11-18  Jan Hubicka  <hubicka@ucw.cz>

* decl.c (finish_function): Update use of decl_replaceable_p.

gcc/lto/ChangeLog:

2021-11-18  Jan Hubicka  <hubicka@ucw.cz>

* lto-partition.c (promote_symbol): Clear semantic_interposition flag.

gcc/testsuite/ChangeLog:

2021-11-18  Jan Hubicka  <hubicka@ucw.cz>

* gcc.dg/lto/semantic-interposition-1_0.c: New test.
* gcc.dg/lto/semantic-interposition-1_1.c: New test.
14 files changed:
gcc/cgraph.c
gcc/cgraph.h
gcc/cgraphclones.c
gcc/cgraphunit.c
gcc/common.opt
gcc/cp/decl.c
gcc/lto-cgraph.c
gcc/lto/lto-partition.c
gcc/symtab.c
gcc/testsuite/gcc.dg/lto/semantic-interposition-1_0.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/lto/semantic-interposition-1_1.c [new file with mode: 0644]
gcc/varasm.c
gcc/varasm.h
gcc/varpool.c