aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-cfg.c
diff options
context:
space:
mode:
authorNathan Sidwell <nathan@gcc.gnu.org>2015-10-27 20:16:04 +0000
committerNathan Sidwell <nathan@gcc.gnu.org>2015-10-27 20:16:04 +0000
commit8ab78162c0dfc65aef769516ba77560566577113 (patch)
treebd71d653036a68ca09bc7d09522690d5e4988df5 /gcc/tree-cfg.c
parenta271b387e6375d5612a2bd8669e0da1ac731e9c3 (diff)
downloadgcc-8ab78162c0dfc65aef769516ba77560566577113.zip
gcc-8ab78162c0dfc65aef769516ba77560566577113.tar.gz
gcc-8ab78162c0dfc65aef769516ba77560566577113.tar.bz2
internal-fn.c (expand_UNIQUE): New.
* internal-fn.c (expand_UNIQUE): New. * internal-fn.h (enum ifn_unique_kind): New. * internal-fn.def (IFN_UNIQUE): New. * target-insns.def (unique): Define. * gimple.h (gimple_call_internal_unique_p): New. * gimple.c (gimple_call_same_target_p): Check internal fn uniqueness. * tracer.c (ignore_bb_p): Check for IFN_UNIQUE call. * tree-ssa-threadedge.c (record_temporary_equivalences_from_stmts): Likewise. * tree-cfg.c (gmple_call_initialize_ctrl_altering): Likewise. From-SVN: r229459
Diffstat (limited to 'gcc/tree-cfg.c')
-rw-r--r--gcc/tree-cfg.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/gcc/tree-cfg.c b/gcc/tree-cfg.c
index 40d5eb8..970207d 100644
--- a/gcc/tree-cfg.c
+++ b/gcc/tree-cfg.c
@@ -487,7 +487,11 @@ gimple_call_initialize_ctrl_altering (gimple *stmt)
|| ((flags & ECF_TM_BUILTIN)
&& is_tm_ending_fndecl (gimple_call_fndecl (stmt)))
/* BUILT_IN_RETURN call is same as return statement. */
- || gimple_call_builtin_p (stmt, BUILT_IN_RETURN))
+ || gimple_call_builtin_p (stmt, BUILT_IN_RETURN)
+ /* IFN_UNIQUE should be the last insn, to make checking for it
+ as cheap as possible. */
+ || (gimple_call_internal_p (stmt)
+ && gimple_call_internal_unique_p (stmt)))
gimple_call_set_ctrl_altering (stmt, true);
else
gimple_call_set_ctrl_altering (stmt, false);