Commit e288a46c by Jan Hubicka Committed by Jan Hubicka

invoke.texi (-fsemantic-interposition): Document.


	* doc/invoke.texi (-fsemantic-interposition): Document.
	* common.opt (fsemantic-interposition): New flag.
	* varasm.c (decl_replaceable_p): Use it.
	* gcc.dg/tree-ssa/interposition.c: New testcase.

From-SVN: r212049
parent 6a742466
2014-06-26 Jan Hubicka <hubicka@ucw.cz>
* doc/invoke.texi (-fsemantic-interposition): Document.
* common.opt (fsemantic-interposition): New flag.
* varasm.c (decl_replaceable_p): Use it.
2014-06-26 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
PR target/61542
......
......@@ -1855,6 +1855,10 @@ fsel-sched-reschedule-pipelined
Common Report Var(flag_sel_sched_reschedule_pipelined) Init(0) Optimization
Reschedule pipelined regions without pipelining
fsemantic-interposition
Common Report Var(flag_semantic_interposition) Init(1)
Allow interposing function (or variables) by ones with different semantics (or initializer) respectively by dynamic linker
; sched_stalled_insns means that insns can be moved prematurely from the queue
; of stalled insns into the ready list.
fsched-stalled-insns
......
......@@ -411,6 +411,7 @@ Objective-C and Objective-C++ Dialects}.
-fschedule-insns -fschedule-insns2 -fsection-anchors @gol
-fselective-scheduling -fselective-scheduling2 @gol
-fsel-sched-pipelining -fsel-sched-pipelining-outer-loops @gol
-fsemantic-interposition @gol
-fshrink-wrap -fsignaling-nans -fsingle-precision-constant @gol
-fsplit-ivs-in-unroller -fsplit-wide-types -fssa-phiopt -fstack-protector @gol
-fstack-protector-all -fstack-protector-strong -fstrict-aliasing @gol
......@@ -7738,6 +7739,22 @@ This option has no effect unless one of @option{-fselective-scheduling} or
When pipelining loops during selective scheduling, also pipeline outer loops.
This option has no effect unless @option{-fsel-sched-pipelining} is turned on.
@item -fsemantic-interposition
@opindex fsemantic-interposition
Some object formats, like ELF, allow interposing of symbols by dynamic linker.
This means that for symbols exported from the DSO compiler can not perform
inter-procedural propagation, inlining and other optimizations in anticipation
that the function or variable in question may change. While this feature is
useful, for example, to rewrite memory allocation functions by a debugging
implementation, it is expensive in the terms of code quality.
With @option{-fno-semantic-inteposition} compiler assumest that if interposition
happens for functions the overwritting function will have
precisely same semantics (and side effects). Similarly if interposition happens
for variables, the constructor of the variable will be the same. The flag
has no effect for functions explicitly declared inline, where
interposition changing semantic is never allowed and for symbols explicitly
declared weak.
@item -fshrink-wrap
@opindex fshrink-wrap
Emit function prologues only before parts of the function that need it,
......
2014-06-26 Jan Hubicka <hubicka@ucw.cz>
* gcc.dg/tree-ssa/interposition.c: New testcase.
2014-06-26 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/56633
......
/* { dg-do compile } */
/* { dg-options "-O1 -fno-semantic-interposition -fdump-tree-optimized -fPIC" } */
int t(void)
{
return 1;
}
int q(void)
{
return t();
}
/* { dg-final { scan-tree-dump-times "return 1" 2 "optimized"} } */
/* { dg-final { cleanup-tree-dump "optimized" } } */
......@@ -6830,6 +6830,9 @@ decl_replaceable_p (tree decl)
gcc_assert (DECL_P (decl));
if (!TREE_PUBLIC (decl) || DECL_COMDAT (decl))
return false;
if (!flag_semantic_interposition
&& !DECL_WEAK (decl))
return false;
return !decl_binds_to_current_def_p (decl);
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment