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

--- Comment #18 from Bill Schmidt <wschmidt at gcc dot gnu.org> ---
In the before case, it appears that later optimization is able to remove the
i_12 add by adjusting the loop counter.  After ivopts:

  i_12 = i_5 + 4;
  ivtmp.10_17 = ivtmp.10_18 + 32;

Before SMS:

  r174 = (SI)r164 + 32
  r164 = zext(r174)

So in effect we have added the shift into the loop to remove an add that we are
able to later remove anyway.  The two adds are related but the add and the
shift are not.

Reply via email to