const-1.c: Update.
* 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. From-SVN: r193175
This commit is contained in:
parent
6d0ae0359c
commit
1bc60b1814
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
Loading…
Reference in New Issue