[Bug fortran/52865] GCC can't vectorize fortran loop but able to vectorize similar c-loop

rguenth at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Wed Jan 16 10:04:00 GMT 2013


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52865

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

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2013-01-16
     Ever Confirmed|0                           |1

--- Comment #8 from Richard Biener <rguenth at gcc dot gnu.org> 2013-01-16 10:04:27 UTC ---
In another bug I stated that

    while (1)
      {
...
        if (countm1.0 == 0) goto L.2;
        countm1.0 = countm1.0 + 4294967295;
      }
    L.2:;

is bad for the vectorizer (the non-empty latch block).  You instead
want GFortran to emit

    while (1)
      {
...
        tem = countm1.0
        countm1.0 = countm1.0 + 4294967295;
        if (tem == 0) goto L.2;
      }
    L.2:;

where hopefully the addition does not overflow ...

That said, somewhat lessening the restriction on empty latch blocks is
certainly possible (IV increments should be fine), but it might be not
as trivial as it looks.



More information about the Gcc-bugs mailing list