diff options
author | rakdver <rakdver@138bc75d-0d04-0410-961f-82ee72b054a4> | 2007-04-09 06:51:43 +0000 |
---|---|---|
committer | rakdver <rakdver@138bc75d-0d04-0410-961f-82ee72b054a4> | 2007-04-09 06:51:43 +0000 |
commit | d8a0d6b8af37fd836425e5d8e2f510c7e8753bd5 (patch) | |
tree | f5af72013d20563b8340bcf3462e935b8ad07bef /gcc/tree-cfgcleanup.c | |
parent | 85c11f8971a88d45613596396aa8215103fbdd1c (diff) | |
download | gcc-d8a0d6b8af37fd836425e5d8e2f510c7e8753bd5.tar.gz |
* cfgloopmanip.c (create_preheader): Do not use loop_preheader_edge.
(create_preheaders): Check that loops are available.
(fix_loop_structure): Clean up, improve comments.
* tree-ssa-loop-manip.c (rewrite_into_loop_closed_ssa):
Check that loops are available. Set LOOP_CLOSED_SSA to the loops
state flags.
* tree-scalar-evolution.c (scev_finalize): Clear scalar_evolution_info.
* predict.c (tree_estimate_probability): Do not call
calculate_dominance_info. Call create_preheaders.
* tree-cfgcleanup.c (cleanup_tree_cfg_loop): Only call
rewrite_into_loop_closed_ssa if LOOP_CLOSED_SSA is set in loops state
flags.
* cfgloop.c (loop_preheader_edge): Assert that loops have preheaders.
* cfgloop.h (LOOP_CLOSED_SSA): New constant.
* tree-cfg.c (tree_split_edge): Make an assert more precise.
* tree-ssa-threadedge.c (thread_across_edge): Comment the function
arguments.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@123670 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/tree-cfgcleanup.c')
-rw-r--r-- | gcc/tree-cfgcleanup.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/gcc/tree-cfgcleanup.c b/gcc/tree-cfgcleanup.c index 8cf66cb4a27..39dcfe7c3ab 100644 --- a/gcc/tree-cfgcleanup.c +++ b/gcc/tree-cfgcleanup.c @@ -599,7 +599,7 @@ cleanup_tree_cfg_loop (void) { bool changed = cleanup_tree_cfg (); - if (changed) + if (changed && current_loops != NULL) { bitmap changed_bbs = BITMAP_ALLOC (NULL); calculate_dominance_info (CDI_DOMINATORS); @@ -608,7 +608,8 @@ cleanup_tree_cfg_loop (void) /* This usually does nothing. But sometimes parts of cfg that originally were inside a loop get out of it due to edge removal (since they become unreachable by back edges from latch). */ - rewrite_into_loop_closed_ssa (changed_bbs, TODO_update_ssa); + if ((current_loops->state & LOOP_CLOSED_SSA) != 0) + rewrite_into_loop_closed_ssa (changed_bbs, TODO_update_ssa); BITMAP_FREE (changed_bbs); |