diff options
author | Ilya Leoshkevich <iii@linux.ibm.com> | 2020-12-03 01:38:47 +0100 |
---|---|---|
committer | Ilya Leoshkevich <iii@linux.ibm.com> | 2020-12-03 10:50:32 +0100 |
commit | 614aff0adf8fba5d843ec894603160151c20f0aa (patch) | |
tree | c94bf0de8dcb1c92564ce0dd5933544e1e108f87 | |
parent | 73564433f519ba0db6f1222e829518f16028c0e2 (diff) | |
download | gcc-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.c | 6 |
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++; |