From: Ilya Leoshkevich Date: Thu, 3 Dec 2020 00:38:47 +0000 (+0100) Subject: tree-ssa-threadedge.c (record_temporary_equivalences_from_stmts_at_dest): Do not... X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=614aff0adf8fba5d843ec894603160151c20f0aa;p=gcc.git 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 * tree-ssa-threadedge.c (record_temporary_equivalences_from_stmts_at_dest): Do not allow __builtin_constant_p on a threading path. --- diff --git a/gcc/tree-ssa-threadedge.c b/gcc/tree-ssa-threadedge.c index f43d5812270..32d63a95af4 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++;