From d846f225c25c5885250c303c8d118caa08c447ab Mon Sep 17 00:00:00 2001 From: Richard Biener Date: Tue, 4 May 2021 15:51:20 +0200 Subject: tree-optimization/79333 - fold stmts following SSA edges in VN This makes sure to follow SSA edges when folding eliminated stmts. This reaps the same benefit as forwprop folding all stmts, not waiting for one to produce copysign in the new testcase. 2021-05-04 Richard Biener PR tree-optimization/79333 * tree-ssa-sccvn.c (eliminate_dom_walker::eliminate_stmt): Fold stmt following SSA edges. * gcc.dg/tree-ssa/ssa-fre-94.c: New testcase. * gcc.dg/graphite/fuse-1.c: Adjust. * gcc.dg/pr43864-4.c: Likewise. --- gcc/tree-ssa-sccvn.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'gcc/tree-ssa-sccvn.c') diff --git a/gcc/tree-ssa-sccvn.c b/gcc/tree-ssa-sccvn.c index ca0974d..e54a0c9 100644 --- a/gcc/tree-ssa-sccvn.c +++ b/gcc/tree-ssa-sccvn.c @@ -6362,7 +6362,7 @@ eliminate_dom_walker::eliminate_stmt (basic_block b, gimple_stmt_iterator *gsi) recompute_tree_invariant_for_addr_expr (gimple_assign_rhs1 (stmt)); gimple_stmt_iterator prev = *gsi; gsi_prev (&prev); - if (fold_stmt (gsi)) + if (fold_stmt (gsi, follow_all_ssa_edges)) { /* fold_stmt may have created new stmts inbetween the previous stmt and the folded stmt. Mark -- cgit v1.1