https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92335
--- Comment #3 from vincenzo Innocente <vincenzo.innocente at cern dot ch> --- Understood for float it seems to me that the transformation does not occur for integer neither (signed or unsigned) as in using T= unsigned int; T bar(T const * __restrict__ x, T const * __restrict__ y) { T ret=0; for (int i=0;i<1024;++i) { auto k = y[i]; if(x[i]>1024) ret += k; } return ret; }