diff options
author | Nathan Sidwell <nathan@gcc.gnu.org> | 2015-10-27 20:16:04 +0000 |
---|---|---|
committer | Nathan Sidwell <nathan@gcc.gnu.org> | 2015-10-27 20:16:04 +0000 |
commit | 8ab78162c0dfc65aef769516ba77560566577113 (patch) | |
tree | bd71d653036a68ca09bc7d09522690d5e4988df5 /gcc/tree-ssa-threadedge.c | |
parent | a271b387e6375d5612a2bd8669e0da1ac731e9c3 (diff) | |
download | gcc-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-ssa-threadedge.c')
-rw-r--r-- | gcc/tree-ssa-threadedge.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/gcc/tree-ssa-threadedge.c b/gcc/tree-ssa-threadedge.c index 38f80ba..68fd4ef 100644 --- a/gcc/tree-ssa-threadedge.c +++ b/gcc/tree-ssa-threadedge.c @@ -247,6 +247,13 @@ record_temporary_equivalences_from_stmts_at_dest (edge e, && gimple_asm_volatile_p (as_a <gasm *> (stmt))) return NULL; + /* If the statement is a unique builtin, we can not thread + through here. */ + if (gimple_code (stmt) == GIMPLE_CALL + && gimple_call_internal_p (stmt) + && gimple_call_internal_unique_p (stmt)) + return NULL; + /* If duplicating this block is going to cause too much code expansion, then do not thread through this block. */ stmt_count++; |