diff options
author | hubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4> | 2012-11-05 18:12:37 +0000 |
---|---|---|
committer | hubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4> | 2012-11-05 18:12:37 +0000 |
commit | 13e1825842a703971033ed6f0903434723bb58b1 (patch) | |
tree | 91ffd52466854d214f0dd5ccd4348d2921b8c811 /gcc | |
parent | 5fd168b60a241917f30526c8f5b87945e2a94b31 (diff) | |
download | ppe42-gcc-13e1825842a703971033ed6f0903434723bb58b1.tar.gz ppe42-gcc-13e1825842a703971033ed6f0903434723bb58b1.zip |
* gcc.dg/const-1.c: Update.
* gcc.dg/pure-1.c: Update.
* tree-ssa-loop-niter.c (finite_loop_p): Revamp to be just wrapper of
max_loop_iterations.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@193175 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/const-1.c | 4 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/pure-2.c | 4 | ||||
-rw-r--r-- | gcc/tree-ssa-loop-niter.c | 31 |
5 files changed, 22 insertions, 27 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 61280127794..026d62f07f1 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2012-11-05 Jan Hubicka <jh@suse.cz> + + * tree-ssa-loop-niter.c (finite_loop_p): Revamp to be just wrapper of + max_loop_iterations. + 2012-11-05 Joern Rennecke <joern.rennecke@embecosm.com> * reorg.c (fill_simple_delay_slots): Avoid calling optimize_skip diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index c3103661f69..4d6a7dcc42c 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2012-11-05 Jan Hubicka <jh@suse.cz> + + * gcc.dg/const-1.c: Update. + * gcc.dg/pure-1.c: Update. + 2012-11-05 Vladimir Makarov <vmakarov@redhat.com> PR rtl-optimization/55151 diff --git a/gcc/testsuite/gcc.dg/const-1.c b/gcc/testsuite/gcc.dg/const-1.c index 2657c9b5738..2a532f8969e 100644 --- a/gcc/testsuite/gcc.dg/const-1.c +++ b/gcc/testsuite/gcc.dg/const-1.c @@ -35,10 +35,10 @@ foo2b(int n) /* Unbounded loops are not safe. */ static int __attribute__ ((noinline)) -foo3(int n) /* { dg-warning "const\[^\n\]* normally" "detect const candidate" } */ +foo3(unsigned int n) /* { dg-warning "const\[^\n\]* normally" "detect const candidate" } */ { int ret = 0; - int i; + unsigned int i; for (i=0; extern_const (i+n); n++) ret+=extern_const (i); return ret; diff --git a/gcc/testsuite/gcc.dg/pure-2.c b/gcc/testsuite/gcc.dg/pure-2.c index 97ba31f0261..8c2ba56cd51 100644 --- a/gcc/testsuite/gcc.dg/pure-2.c +++ b/gcc/testsuite/gcc.dg/pure-2.c @@ -35,10 +35,10 @@ foo2b(int n) /* Unbounded loops are not safe. */ static int __attribute__ ((noinline)) -foo3(int n) /* { dg-warning "pure\[^\n\]* normally" "detect pure candidate" } */ +foo3(unsigned int n) /* { dg-warning "pure\[^\n\]* normally" "detect pure candidate" } */ { int ret = 0; - int i; + unsigned int i; for (i=0; extern_const (i+n); n++) ret+=extern_const (i); return ret; diff --git a/gcc/tree-ssa-loop-niter.c b/gcc/tree-ssa-loop-niter.c index 87b550cf5b4..3936e60ac63 100644 --- a/gcc/tree-ssa-loop-niter.c +++ b/gcc/tree-ssa-loop-niter.c @@ -1994,11 +1994,7 @@ find_loop_niter (struct loop *loop, edge *exit) bool finite_loop_p (struct loop *loop) { - unsigned i; - VEC (edge, heap) *exits; - edge ex; - struct tree_niter_desc desc; - bool finite = false; + double_int nit; int flags; if (flag_unsafe_loop_optimizations) @@ -2012,26 +2008,15 @@ finite_loop_p (struct loop *loop) return true; } - exits = get_loop_exit_edges (loop); - FOR_EACH_VEC_ELT (edge, exits, i, ex) + if (loop->any_upper_bound + || max_loop_iterations (loop, &nit)) { - if (!just_once_each_iteration_p (loop, ex->src)) - continue; - - if (number_of_iterations_exit (loop, ex, &desc, false)) - { - if (dump_file && (dump_flags & TDF_DETAILS)) - { - fprintf (dump_file, "Found loop %i to be finite: iterating ", loop->num); - print_generic_expr (dump_file, desc.niter, TDF_SLIM); - fprintf (dump_file, " times\n"); - } - finite = true; - break; - } + if (dump_file && (dump_flags & TDF_DETAILS)) + fprintf (dump_file, "Found loop %i to be finite: upper bound found.\n", + loop->num); + return true; } - VEC_free (edge, heap, exits); - return finite; + return false; } /* |