aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-predcom.c
diff options
context:
space:
mode:
authorZdenek Dvorak <ook@ucw.cz>2007-08-01 13:39:31 +0200
committerZdenek Dvorak <rakdver@gcc.gnu.org>2007-08-01 11:39:31 +0000
commit592c303da820745055bf6fd1521e2b2bf1318652 (patch)
tree589e7c2e94dc0f61c32b953370ab9b08162f79ad /gcc/tree-predcom.c
parent46cb04410da4ba4fa10070a0eec7a037ff6152a7 (diff)
downloadgcc-592c303da820745055bf6fd1521e2b2bf1318652.zip
gcc-592c303da820745055bf6fd1521e2b2bf1318652.tar.gz
gcc-592c303da820745055bf6fd1521e2b2bf1318652.tar.bz2
tree-ssa-threadupdate.c (thread_through_all_blocks): Record that the loop structures may need fixing.
* tree-ssa-threadupdate.c (thread_through_all_blocks): Record that the loop structures may need fixing. * tree-cfgcleanup.c (cleanup_tree_cfg_noloop, repair_loop_structures): New functions. (cleanup_tree_cfg_loop): Removed. (cleanup_tree_cfg): If loops need fixing, call repair_loop_structures. * tree-predcom.c (tree_predictive_commoning): Return TODO_cleanup_cfg instead of running cleanup_tree_cfg_loop. * cfgloop.h (LOOPS_NEED_FIXUP): New constant. * tree-flow.h (cleanup_tree_cfg_loop): Declaration removed. (tree_predictive_commoning): Declaration changed. * passes.c (execute_function_todo): Do not use cleanup_tree_cfg_loop. From-SVN: r127118
Diffstat (limited to 'gcc/tree-predcom.c')
-rw-r--r--gcc/tree-predcom.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/gcc/tree-predcom.c b/gcc/tree-predcom.c
index caf0501..fcf4291 100644
--- a/gcc/tree-predcom.c
+++ b/gcc/tree-predcom.c
@@ -2582,12 +2582,13 @@ end: ;
/* Runs predictive commoning. */
-void
+unsigned
tree_predictive_commoning (void)
{
bool unrolled = false;
struct loop *loop;
loop_iterator li;
+ unsigned ret = 0;
initialize_original_copy_tables ();
FOR_EACH_LOOP (li, loop, LI_ONLY_INNERMOST)
@@ -2598,7 +2599,9 @@ tree_predictive_commoning (void)
if (unrolled)
{
scev_reset ();
- cleanup_tree_cfg_loop ();
+ ret = TODO_cleanup_cfg;
}
free_original_copy_tables ();
+
+ return ret;
}