From 25b7069af201bcecc06fdc0b9a0fc455f5985c77 Mon Sep 17 00:00:00 2001 From: Richard Biener Date: Wed, 18 Jun 2014 07:58:36 +0000 Subject: [PATCH] tree-ssa-propagate.c (replace_phi_args_in): Return whether we propagated anything. 2014-06-18 Richard Biener * tree-ssa-propagate.c (replace_phi_args_in): Return whether we propagated anything. (substitute_and_fold_dom_walker::before_dom_children): Something changed if we propagated into PHI arguments. * tree-ssa-pre.c (eliminate): Always schedule cfg-cleanup if we removed a stmt. From-SVN: r211770 --- gcc/ChangeLog | 9 +++++++++ gcc/tree-ssa-pre.c | 9 ++++----- gcc/tree-ssa-propagate.c | 6 ++++-- 3 files changed, 17 insertions(+), 7 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 93955b3465b..5eb312b4a5e 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,12 @@ +2014-06-18 Richard Biener + + * tree-ssa-propagate.c (replace_phi_args_in): Return whether + we propagated anything. + (substitute_and_fold_dom_walker::before_dom_children): Something + changed if we propagated into PHI arguments. + * tree-ssa-pre.c (eliminate): Always schedule cfg-cleanup if + we removed a stmt. + 2014-06-18 Evgeny Stupachenko * config/i386/i386.c (ix86_reassociation_width): Add alternative for diff --git a/gcc/tree-ssa-pre.c b/gcc/tree-ssa-pre.c index bca95ddb9bf..686f1076d3b 100644 --- a/gcc/tree-ssa-pre.c +++ b/gcc/tree-ssa-pre.c @@ -4521,11 +4521,7 @@ eliminate (bool do_pre) gsi = gsi_for_stmt (stmt); if (gimple_code (stmt) == GIMPLE_PHI) - { - remove_phi_node (&gsi, true); - /* Removing a PHI node in a block may expose a forwarder block. */ - el_todo |= TODO_cleanup_cfg; - } + remove_phi_node (&gsi, true); else { basic_block bb = gimple_bb (stmt); @@ -4534,6 +4530,9 @@ eliminate (bool do_pre) bitmap_set_bit (need_eh_cleanup, bb->index); release_defs (stmt); } + + /* Removing a stmt may expose a forwarder block. */ + el_todo |= TODO_cleanup_cfg; } el_to_remove.release (); diff --git a/gcc/tree-ssa-propagate.c b/gcc/tree-ssa-propagate.c index cdc9f6ad39b..eb65b18ce85 100644 --- a/gcc/tree-ssa-propagate.c +++ b/gcc/tree-ssa-propagate.c @@ -964,7 +964,7 @@ replace_uses_in (gimple stmt, ssa_prop_get_value_fn get_value) /* Replace propagated values into all the arguments for PHI using the values from PROP_VALUE. */ -static void +static bool replace_phi_args_in (gimple phi, ssa_prop_get_value_fn get_value) { size_t i; @@ -1015,6 +1015,8 @@ replace_phi_args_in (gimple phi, ssa_prop_get_value_fn get_value) fprintf (dump_file, "\n"); } } + + return replaced; } @@ -1066,7 +1068,7 @@ substitute_and_fold_dom_walker::before_dom_children (basic_block bb) continue; } } - replace_phi_args_in (phi, get_value_fn); + something_changed |= replace_phi_args_in (phi, get_value_fn); } /* Propagate known values into stmts. In some case it exposes -- 2.30.2