diff options
author | pinskia <pinskia@138bc75d-0d04-0410-961f-82ee72b054a4> | 2006-09-06 06:13:22 +0000 |
---|---|---|
committer | pinskia <pinskia@138bc75d-0d04-0410-961f-82ee72b054a4> | 2006-09-06 06:13:22 +0000 |
commit | 4c641bf8e55764bc6f1ea1ece9b8fe703475c671 (patch) | |
tree | 528bb95b3e49e65e4c30b14572ac1d30ded632cf /gcc/passes.c | |
parent | 4ff650b4cb860c45477d14f3ce9da70d66b2f910 (diff) | |
download | linaro-gcc-4c641bf8e55764bc6f1ea1ece9b8fe703475c671.tar.gz linaro-gcc-4c641bf8e55764bc6f1ea1ece9b8fe703475c671.tar.bz2 linaro-gcc-4c641bf8e55764bc6f1ea1ece9b8fe703475c671.zip |
2006-09-05 Andrew Pinski <pinskia@physics.uc.edu>
PR tree-opt/28937
* tree-flow.h (tree_ssa_unswitch_loops): Return unsigned int.
(canonicalize_induction_variables): Likewise.
(tree_unroll_loops_completely): Likewise.
(tree_ssa_prefetch_arrays): Likewise.
(remove_empty_loops): Likewise.
* tree-ssa-loop-unswitch.c (tree_ssa_unswitch_loops): Return
TODO_cleanup_cfg instead of directly calling
cleanup_tree_cfg_loop.
* tree-ssa-loop-ivcanon.c (canonicalize_induction_variables):
Likewise.
(tree_unroll_loops_completely): Likewise.
(remove_empty_loops): Likewise.
* tree-ssa-loop-prefetch.c (tree_ssa_prefetch_arrays): Likewise.
* tree-ssa-loop.c (tree_ssa_loop_unswitch): Use the return value
of tree_ssa_unswitch_loops.
(tree_ssa_loop_ivcanon): Use the return value of
canonicalize_induction_variables.
(tree_ssa_empty_loop): Use the return value of
remove_empty_loops.
(tree_complete_unroll): Use the return value of
tree_unroll_loops_completely.
(tree_ssa_loop_prefetch): Use the return value of
tree_ssa_prefetch_arrays.
* passes.c (execute_todo): Before Cleanup CFG, set
updating_used_alone and after cleanup CFG, call
recalculate_used_alone.
2006-09-05 Andrew Pinski <pinskia@physics.uc.edu>
PR tree-opt/28937
* g++.dg/opt/unroll2.C: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@116717 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/passes.c')
-rw-r--r-- | gcc/passes.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/gcc/passes.c b/gcc/passes.c index fe6f637e868..46e4756e84d 100644 --- a/gcc/passes.c +++ b/gcc/passes.c @@ -727,11 +727,17 @@ execute_todo (unsigned int flags) /* Always cleanup the CFG before trying to update SSA . */ if (flags & TODO_cleanup_cfg) { + /* CFG Cleanup can cause a constant to prop into an ARRAY_REF. */ + updating_used_alone = true; + if (current_loops) cleanup_tree_cfg_loop (); else cleanup_tree_cfg (); + /* Update the used alone after cleanup cfg. */ + recalculate_used_alone (); + /* When cleanup_tree_cfg merges consecutive blocks, it may perform some simplistic propagation when removing single valued PHI nodes. This propagation may, in turn, cause the |