https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68542
Ilya Enkovich <ienkovich at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |ienkovich at gcc dot gnu.org --- Comment #1 from Ilya Enkovich <ienkovich at gcc dot gnu.org> --- I was looking into 481.wrf degradation caused by r230309 on Haswell (-Ofast -flto). I found this patch caused many loops in 'sint' function to be vectorized. All these loops have form: DO 1 II=N1STAR,N1END IF ( icmask(II,JJ) ) THEN ... ENDIF 1 CONTINUE Where icmask is two-dimensional array of logicals. The problem is that only 35% of icmask values are .TRUE. and these values are not sparse. This means in vectorized loop we usually have either all 0s or all 1s vector mask and therefore perform many iterations with zero mask. Zero check for vector mask patch by Yuri should (at least partly) resolve this issue.