summaryrefslogtreecommitdiff
path: root/gcc/cfgloopmanip.c
diff options
context:
space:
mode:
authorrakdver <rakdver@138bc75d-0d04-0410-961f-82ee72b054a4>2007-07-20 01:29:43 +0000
committerrakdver <rakdver@138bc75d-0d04-0410-961f-82ee72b054a4>2007-07-20 01:29:43 +0000
commite88bb3286d921153b834f4677dd0e7c7ec57f632 (patch)
treec81b2b6144d7b5c7ede0be2fbe0f15356a34c424 /gcc/cfgloopmanip.c
parent5ce7279733af9142174b11fcb4e8768bd3efe1b5 (diff)
downloadgcc-e88bb3286d921153b834f4677dd0e7c7ec57f632.tar.gz
* tree-ssa-loop-niter.c (assert_loop_rolls_lt): Convert the operands
of compare to the same type. * cfgloopmanip.c (add_loop): Update information about loop exits. (loop_version): Remove the innermost loop requirement. * tree-ssa-loop-manip.c (determine_exit_conditions): Convert bounds to sizetype for pointers. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@126796 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/cfgloopmanip.c')
-rw-r--r--gcc/cfgloopmanip.c15
1 files changed, 11 insertions, 4 deletions
diff --git a/gcc/cfgloopmanip.c b/gcc/cfgloopmanip.c
index 92ab088ea40..83c4c570c5a 100644
--- a/gcc/cfgloopmanip.c
+++ b/gcc/cfgloopmanip.c
@@ -411,6 +411,8 @@ add_loop (struct loop *loop, struct loop *outer)
basic_block *bbs;
int i, n;
struct loop *subloop;
+ edge e;
+ edge_iterator ei;
/* Add it to loop structure. */
place_new_loop (loop);
@@ -441,6 +443,15 @@ add_loop (struct loop *loop, struct loop *outer)
}
}
+ /* Update the information about loop exit edges. */
+ for (i = 0; i < n; i++)
+ {
+ FOR_EACH_EDGE (e, ei, bbs[i]->succs)
+ {
+ rescan_loop_exit (e, false, false);
+ }
+ }
+
free (bbs);
}
@@ -1283,10 +1294,6 @@ loop_version (struct loop *loop,
struct loop *nloop;
basic_block cond_bb;
- /* CHECKME: Loop versioning does not handle nested loop at this point. */
- if (loop->inner)
- return NULL;
-
/* Record entry and latch edges for the loop */
entry = loop_preheader_edge (loop);
irred_flag = entry->flags & EDGE_IRREDUCIBLE_LOOP;