loop-iv.c (iv_number_of_iterations): Record the upper bound only if there are no further conditions on it.

* loop-iv.c (iv_number_of_iterations): Record the upper bound
	only if there are no further conditions on it.

From-SVN: r192636
This commit is contained in:
Jan Hubicka 2012-10-20 16:19:12 +02:00 committed by Jan Hubicka
parent 4a0ae68e1c
commit bcd8d322db
2 changed files with 17 additions and 6 deletions

View File

@ -1,3 +1,8 @@
2012-10-20 Jan Hubicka <jh@suse.cz>
* loop-iv.c (iv_number_of_iterations): Record the upper bound
only if there are no further conditions on it.
2012-10-20 Manuel López-Ibáñez <manu@gcc.gnu.org>
PR c/53063

View File

@ -2593,8 +2593,10 @@ iv_number_of_iterations (struct loop *loop, rtx insn, rtx condition,
? iv0.base
: mode_mmin);
max = (up - down) / inc + 1;
record_niter_bound (loop, double_int::from_uhwi (max),
false, true);
if (!desc->infinite
&& !desc->assumptions)
record_niter_bound (loop, double_int::from_uhwi (max),
false, true);
if (iv0.step == const0_rtx)
{
@ -2806,15 +2808,19 @@ iv_number_of_iterations (struct loop *loop, rtx insn, rtx condition,
desc->const_iter = true;
desc->niter = val & GET_MODE_MASK (desc->mode);
record_niter_bound (loop, double_int::from_uhwi (desc->niter),
false, true);
if (!desc->infinite
&& !desc->assumptions)
record_niter_bound (loop, double_int::from_uhwi (desc->niter),
false, true);
}
else
{
max = determine_max_iter (loop, desc, old_niter);
gcc_assert (max);
record_niter_bound (loop, double_int::from_uhwi (max),
false, true);
if (!desc->infinite
&& !desc->assumptions)
record_niter_bound (loop, double_int::from_uhwi (max),
false, true);
/* simplify_using_initial_values does a copy propagation on the registers
in the expression for the number of iterations. This prolongs life