------- Comment #2 from rguenth at gcc dot gnu dot org 2009-11-19 16:49 ------- -ftree-vectorizer-verbose=2 tells you:
eval.f90:35: note: not vectorized: relevant stmt not supported: D.1684_73 = ((D.1683_72)); eval.f90:32: note: not vectorized: relevant stmt not supported: D.1684_58 = ((D.1683_57)); PAREN_EXPRs are new in 4.4 and I believe they cannot be turned off right now. The loops are do i=1,nnd x(i) = 1.d0 + (1.d0*i)/nnd end do do i=1,n foo4(i) = 1.d0 + (1.d0*i)/n end do where the vectorizer doesn't know how to ensure evaluation order is preserved when trying to vectorize (1.d0*i)/n. Writing them as 1.d0*i/n vectorizes the function. Still the performance is lower by a factor of two compared to 4.3 (even with -ffast-math). Probably the bug should be split. -- rguenth at gcc dot gnu dot org changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |irar at il dot ibm dot com, | |rguenth at gcc dot gnu dot | |org Severity|normal |enhancement Status|UNCONFIRMED |NEW Component|fortran |tree-optimization Ever Confirmed|0 |1 Keywords| |missed-optimization Last reconfirmed|0000-00-00 00:00:00 |2009-11-19 16:49:51 date| | Summary|Performance drop from 4.3 to|[4.4/4.5 Regression] |4.4/4.5 |Vectorizer cannot deal with | |PAREN_EXPR gracefully, 50% | |performance regression Target Milestone|--- |4.4.3 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42108