summaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.dg/tree-ssa/pr19210-2.c
diff options
context:
space:
mode:
authorrakdver <rakdver@138bc75d-0d04-0410-961f-82ee72b054a4>2006-01-14 12:29:06 +0000
committerrakdver <rakdver@138bc75d-0d04-0410-961f-82ee72b054a4>2006-01-14 12:29:06 +0000
commit0f81d1b1db2329f88deb03f1ca4c1bf6476d23d8 (patch)
tree22793cf18859c40c1d11f310d8c985db7f286d01 /gcc/testsuite/gcc.dg/tree-ssa/pr19210-2.c
parent03c8b2e448895fb4738d873baf78452139212503 (diff)
downloadgcc-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.c10
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" } */