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

--- Comment #9 from Richard Biener <rguenth at gcc dot gnu.org> ---
It's odd that you see

Loop 1 iterates 7 times.
Loop 1 iterates at most 7 times.
Loop 1 likely iterates at most 7 times.
Estimating sizes for loop 1
 BB: 3, after_exit: 0
  size:   1 v ={v} i_10;
  size:   0 i.0_1 = (unsigned char) i_10;
   Induction variable computation will be folded away.
  size:   1 _2 = i.0_1 + 254;
   Induction variable computation will be folded away.
  size:   0 i_7 = (char) _2;
   Induction variable computation will be folded away.
  size:   1 ivtmp_3 = ivtmp_4 - 1;
   Induction variable computation will be folded away.
  size:   2 if (ivtmp_3 != 0)
   Exit condition will be eliminated in peeled copies.
   Exit condition will be eliminated in last copy.
   Constant conditional.
 BB: 5, after_exit: 1
size: 5-4, last_iteration: 5-4
  Loop size: 5
  Estimated size after unrolling: 5

while I correctly see an estimated size after unrolling of 8 ... note this
still then runs into the 2/3 reduction.

Ah, the dumping is because trunk no longer does that 2/3 scaling in
estimated_unrolled_size.

So I'm still of the opinion that we should restrict the 2/3 scaling to
a specific set of stmts (or do the reverse and exclude another set,
like in this case volatile accesses).

Reply via email to