diff options
author | Andrew Pinski <pinskia@physics.uc.edu> | 2006-09-06 06:13:22 +0000 |
---|---|---|
committer | Andrew Pinski <pinskia@gcc.gnu.org> | 2006-09-05 23:13:22 -0700 |
commit | c7f965b6140ac7ac2911b04974fb539665b74abf (patch) | |
tree | 528bb95b3e49e65e4c30b14572ac1d30ded632cf /gcc/passes.c | |
parent | 10b96810c0f327303ac9a7c1519848f4c51f8eca (diff) | |
download | gcc-c7f965b6140ac7ac2911b04974fb539665b74abf.zip gcc-c7f965b6140ac7ac2911b04974fb539665b74abf.tar.gz gcc-c7f965b6140ac7ac2911b04974fb539665b74abf.tar.bz2 |
re PR tree-optimization/28937 (ICE in add_virtual_operand, at tree-ssa-operands.c:1309)
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.
From-SVN: r116717
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 fe6f637..46e4756 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 |