Cap niter_for_unrolled_loop to upper bound
commit3862ef76c66219fd7adbbd6e3884bc9c1ba9c606
authorRichard Sandiford <richard.sandiford@linaro.org>
Thu, 4 May 2017 11:37:05 +0000 (4 11:37 +0000)
committerRichard Sandiford <rsandifo@gcc.gnu.org>
Thu, 4 May 2017 11:37:05 +0000 (4 11:37 +0000)
tree9e4572707089e2b42a80ecb24d4d3b00ae89d8a3
parent6d0da573d22e446f7740f6340131b11f605715bc
Cap niter_for_unrolled_loop to upper bound

For the reasons explained in PR77536, niter_for_unrolled_loop assumes 5
iterations in the absence of profiling information, although it doesn't
increase beyond the estimate for the original loop.  This left a hole in
which the new estimate could be less than the old one but still greater
than the limit imposed by CEIL (nb_iterations_upper_bound, unroll factor).

2017-05-04  Richard Sandiford  <richard.sandiford@linaro.org>

gcc/
* tree-ssa-loop-manip.c (niter_for_unrolled_loop): Add commentary
to explain the use of truncating division.  Cap the number of
iterations to the maximum given by nb_iterations_upper_bound,
if defined.

gcc/testsuite/
* gcc.dg/vect/vect-profile-1.c: New test.

From-SVN: r247591
gcc/ChangeLog
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/vect/vect-profile-1.c [new file with mode: 0644]
gcc/tree-ssa-loop-manip.c