aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIlya Leoshkevich <iii@linux.ibm.com>2020-12-03 01:38:47 +0100
committerIlya Leoshkevich <iii@linux.ibm.com>2020-12-03 10:50:32 +0100
commit614aff0adf8fba5d843ec894603160151c20f0aa (patch)
treec94bf0de8dcb1c92564ce0dd5933544e1e108f87
parent73564433f519ba0db6f1222e829518f16028c0e2 (diff)
downloadgcc-614aff0adf8fba5d843ec894603160151c20f0aa.zip
gcc-614aff0adf8fba5d843ec894603160151c20f0aa.tar.gz
gcc-614aff0adf8fba5d843ec894603160151c20f0aa.tar.bz2
tree-ssa-threadedge.c (record_temporary_equivalences_from_stmts_at_dest): Do not allow __builtin_constant_p.
This is the same as commit 70a62009181f ("tree-ssa-threadbackward.c (profitable_jump_thread_path): Do not allow __builtin_constant_p."), but for the old forward threader. gcc/ChangeLog: 2020-12-03 Ilya Leoshkevich <iii@linux.ibm.com> * tree-ssa-threadedge.c (record_temporary_equivalences_from_stmts_at_dest): Do not allow __builtin_constant_p on a threading path.
-rw-r--r--gcc/tree-ssa-threadedge.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/gcc/tree-ssa-threadedge.c b/gcc/tree-ssa-threadedge.c
index f43d581..32d63a9 100644
--- a/gcc/tree-ssa-threadedge.c
+++ b/gcc/tree-ssa-threadedge.c
@@ -265,6 +265,12 @@ record_temporary_equivalences_from_stmts_at_dest (edge e,
&& gimple_call_internal_unique_p (stmt))
return NULL;
+ /* We cannot thread through __builtin_constant_p, because an
+ expression that is constant on two threading paths may become
+ non-constant (i.e.: phi) when they merge. */
+ if (gimple_call_builtin_p (stmt, BUILT_IN_CONSTANT_P))
+ return NULL;
+
/* If duplicating this block is going to cause too much code
expansion, then do not thread through this block. */
stmt_count++;