diff options
author | rakdver <rakdver@138bc75d-0d04-0410-961f-82ee72b054a4> | 2006-01-14 12:29:06 +0000 |
---|---|---|
committer | rakdver <rakdver@138bc75d-0d04-0410-961f-82ee72b054a4> | 2006-01-14 12:29:06 +0000 |
commit | 0f81d1b1db2329f88deb03f1ca4c1bf6476d23d8 (patch) | |
tree | 22793cf18859c40c1d11f310d8c985db7f286d01 /gcc/testsuite/gcc.dg/tree-ssa/pr19210-2.c | |
parent | 03c8b2e448895fb4738d873baf78452139212503 (diff) | |
download | gcc-0f81d1b1db2329f88deb03f1ca4c1bf6476d23d8.tar.gz |
* tree-ssa-loop-niter.c (number_of_iterations_cond): Split into several
functions.
(number_of_iterations_ne, number_of_iterations_lt_to_ne,
assert_no_overflow_lt, assert_loop_rolls_lt, number_of_iterations_lt,
number_of_iterations_le): New functions.
(number_of_iterations_special): Removed.
(number_of_iterations_exit): Do not use number_of_iterations_special.
* tree.c (unsigned_type_for): Always return integer type.
* gcc.dg/tree-ssa/pr19210-1.c: Update outcome. Add new test loop.
* gcc.dg/tree-ssa/pr19210-2.c: Ditto.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@109702 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/testsuite/gcc.dg/tree-ssa/pr19210-2.c')
-rw-r--r-- | gcc/testsuite/gcc.dg/tree-ssa/pr19210-2.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr19210-2.c b/gcc/testsuite/gcc.dg/tree-ssa/pr19210-2.c index 498c6588975..9116e97ec4f 100644 --- a/gcc/testsuite/gcc.dg/tree-ssa/pr19210-2.c +++ b/gcc/testsuite/gcc.dg/tree-ssa/pr19210-2.c @@ -12,7 +12,15 @@ f (unsigned n) for(k = 5;k <= n;k += 4) /* { dg-warning "assuming.*not overflow" } */ g(); - for(k = 5;k <= n;k += 5) /* { dg-warning "assuming.*not overflow" } */ + /* We used to get warning for this loop. However, since then # of iterations + analysis improved, and we can now prove that this loop does not verflow. + This is because the only case when it would overflow is if n = ~0 (since + ~0 is divisible by 5), and this cannot be the case, since when we got + here, the previous loop exited, thus there exists k > n. */ + for(k = 5;k <= n;k += 5) + g(); + + for(k = 4;k <= n;k += 5) /* { dg-warning "assuming.*not overflow" } */ g(); for(k = 15;k >= n;k--) /* { dg-warning "assuming.*not infinite" } */ |