diff options
author | Kai Tietz <ktietz@redhat.com> | 2011-07-21 11:42:04 +0200 |
---|---|---|
committer | Kai Tietz <ktietz@gcc.gnu.org> | 2011-07-21 11:42:04 +0200 |
commit | fec3cad34054045fd56274fe4620cf98a9da3d25 (patch) | |
tree | 65239fc507c029f4659438c9ef167e619cbd2d4c /gcc/tree-ssa-propagate.c | |
parent | 21f3ae2f34dcf2e344c3cbbacb9f0103629ce214 (diff) | |
download | gcc-fec3cad34054045fd56274fe4620cf98a9da3d25.zip gcc-fec3cad34054045fd56274fe4620cf98a9da3d25.tar.gz gcc-fec3cad34054045fd56274fe4620cf98a9da3d25.tar.bz2 |
tree-ssa-propagate.c (substitute_and_fold): Use do_dce flag to deside...
2011-07-21 Kai Tietz <ktietz@redhat.com>
* tree-ssa-propagate.c (substitute_and_fold): Use
do_dce flag to deside, if BB's statements are scanned
in last to first, or first to last order.
From-SVN: r176556
Diffstat (limited to 'gcc/tree-ssa-propagate.c')
-rw-r--r-- | gcc/tree-ssa-propagate.c | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/gcc/tree-ssa-propagate.c b/gcc/tree-ssa-propagate.c index 64c3fdf..7741db8 100644 --- a/gcc/tree-ssa-propagate.c +++ b/gcc/tree-ssa-propagate.c @@ -966,6 +966,9 @@ replace_phi_args_in (gimple phi, ssa_prop_get_value_fn get_value) DO_DCE is true if trivially dead stmts can be removed. + If DO_DCE is true, the statements within a BB are walked from + last to first element. Otherwise we scan from first to last element. + Return TRUE when something changed. */ bool @@ -1046,9 +1049,10 @@ substitute_and_fold (ssa_prop_get_value_fn get_value_fn, for (i = gsi_start_phis (bb); !gsi_end_p (i); gsi_next (&i)) replace_phi_args_in (gsi_stmt (i), get_value_fn); - /* Propagate known values into stmts. Do a backward walk to expose - more trivially deletable stmts. */ - for (i = gsi_last_bb (bb); !gsi_end_p (i);) + /* Propagate known values into stmts. Do a backward walk if + do_dce is true. In some case it exposes + more trivially deletable stmts to walk backward. */ + for (i = (do_dce ? gsi_last_bb (bb) : gsi_start_bb (bb)); !gsi_end_p (i);) { bool did_replace; gimple stmt = gsi_stmt (i); @@ -1057,7 +1061,10 @@ substitute_and_fold (ssa_prop_get_value_fn get_value_fn, gimple_stmt_iterator oldi; oldi = i; - gsi_prev (&i); + if (do_dce) + gsi_prev (&i); + else + gsi_next (&i); /* Ignore ASSERT_EXPRs. They are used by VRP to generate range information for names and they are discarded |