https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87031

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Assignee|unassigned at gcc dot gnu.org      |rguenth at gcc dot 
gnu.org
             Status|NEW                         |ASSIGNED

--- Comment #9 from Richard Biener <rguenth at gcc dot gnu.org> ---
The recent r15-919-gef27b91b62c3aa left the

          /* If the code is going to shrink, we don't need to be extra
             cautious on guessing if the unrolling is going to be
             profitable.
             Move from estimated_unrolled_size to unroll small loops.  */
          if (unr_insns * 2 / 3 
              /* If there is IV variable that will become constant, we
                 save one instruction in the loop prologue we do not
                 account otherwise.  */
              <= ninsns + (size.constant_iv != false))
            ;

case alone but applied the 'cunrolli' flag restriction only to the
param_max_completely_peeled_insns limit applied later:

          /* Move 2 / 3 reduction from estimated_unrolled_size, but don't
reduce
             unrolled size for innermost loop.
             1) It could increase register pressure.
             2) Big loop after completely unroll may not be vectorized
             by BB vectorizer.  */
          else if ((cunrolli && !loop->inner
                    ? unr_insns : unr_insns * 2 / 3)
                   > (unsigned) param_max_completely_peeled_insns)
            {
              if (dump_file && (dump_flags & TDF_DETAILS))
                fprintf (dump_file, "Not unrolling loop %d: "
                         "number of insns in the unrolled sequence reaches "
                         "--param max-completely-peeled-insns limit.\n",
                         loop->num);
              return false;

One could either re-use that flag also for the loop-gets-smaller check
for consistency or argue that if loop->inner the 2/3 estimate is likely
off anyway.

Note the check above explicitly considers a loop with an inner loop
to shrink optimistically.

I'm testing what happens if guarding the former condition with cunrolli
for half-consistency.

Reply via email to