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

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

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2012-07-18
     Ever Confirmed|0                           |1

--- Comment #1 from Richard Guenther <rguenth at gcc dot gnu.org> 2012-07-18 
11:25:55 UTC ---
On trunk we do vectorize the loop at 552, but I'm not sure that unconditionally
calling vmldAtan2 is profitable.  That is, trunk for me has (-Ofast
-mveclibabi=svml):

552: LOOP VECTORIZED.
576: LOOP VECTORIZED.
662: LOOP VECTORIZED.
1032: LOOP VECTORIZED.
1060: LOOP VECTORIZED.

The loop at 639 is converted to two memset calls.

mp_prop_design.f90(677): (col. 16) remark: PARTIAL LOOP WAS VECTORIZED.
   (Line number points to the outermost of the three loops; there are also
    conditional jumps)

seems to be the important one to tackle.

For the loop at 818 we fail to if-convert the nested if

                  IF ( j.EQ.1 ) THEN
                     tempa(j) = ZERO
                  ELSE
                     arg1 = -vefz(j)
                     arg2 = vefphi(j)
                     IF ( (arg2.LT.ZERO) .OR. (arg2.GT.ZERO) ) THEN
                        tempa(j) = ATAN(arg1/arg2) - theta(j)
                     ELSE
                        tempa(j) = -theta(j)
                     ENDIF
                  ENDIF

where we also fail to apply store-motion of tempa(j).  The if (j == 1)
conditional code makes the loop suitable for peeling, too.

That said, this loop is suitable for analysis as well.

Reply via email to