https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61194
--- Comment #2 from vincenzo Innocente <vincenzo.innocente at cern dot ch> --- new test code cat cond0.cc float x[1024]; float y[1024]; float z[1024]; float w[1024]; int k[1024]; void barX() { for (int i=0; i<1024; ++i) { k[i] = (x[i]>0) & (w[i]<y[i]); z[i] = (k[i]) ? z[i] : y[i]; } } c++ -Ofast -Wall -fno-tree-slp-vectorize -ftree-loop-if-convert-stores -S cond0.cc -msse4.2 -ftree-vectorizer-verbose=1 Analyzing loop at cond0.cc:9 cond0.cc:9: note: vect_recog_bool_pattern: detected: cond0.cc:9: note: pattern recognized: patt_23 = (int) patt_24; cond0.cc:9: note: additional pattern stmt: patt_25 = _7 < _8 ? 1 : 0; cond0.cc:9: note: additional pattern stmt: patt_24 = _5 > 0.0 ? patt_25 : 0; Vectorizing loop at cond0.cc:9 cond0.cc:9: note: LOOP VECTORIZED. cond0.cc:8: note: vectorized 1 loops in function. c++ -v Using built-in specs. COLLECT_GCC=c++ COLLECT_LTO_WRAPPER=/afs/cern.ch/sw/lcg/contrib/gcc/4.8.1/x86_64-slc6-gcc48-opt/bin/../libexec/gcc/x86_64-unknown-linux-gnu/4.8.1/lto-wrapper Target: x86_64-unknown-linux-gnu Configured with: /build/vdiez/gcc-4.8.1/configure --prefix=/build/vdiez/gcc-4.8.1-installation --with-mpfr=/afs/cern.ch/sw/lcg/external/mpfr/3.1.2/x86_64-slc6-gcc48-opt --with-gmp=/afs/cern.ch/sw/lcg/external/gmp/5.1.1/x86_64-slc6-gcc48-opt --with-mpc=/afs/cern.ch/sw/lcg/external/mpc/1.0.1/x86_64-slc6-gcc48-opt --enable-libstdcxx-time --enable-lto --with-isl=/afs/cern.ch/sw/lcg/external/isl/0.11.1/x86_64-slc6-gcc48-opt --with-cloog=/afs/cern.ch/sw/lcg/external/cloog/0.18.0/x86_64-slc6-gcc48-opt --enable-languages=c,c++,fortran,go Thread model: posix gcc version 4.8.1 (GCC) c++ -Ofast -Wall -fno-tree-slp-vectorize -ftree-loop-if-convert-stores -S cond0.cc -msse4.2 -fopt-info-vec-missed cond0.cc:9:3: note: misalign = 0 bytes of ref x[i_18] cond0.cc:9:3: note: misalign = 0 bytes of ref w[i_18] cond0.cc:9:3: note: misalign = 0 bytes of ref y[i_18] cond0.cc:9:3: note: misalign = 0 bytes of ref k[i_18] cond0.cc:9:3: note: misalign = 0 bytes of ref z[i_18] cond0.cc:9:3: note: misalign = 0 bytes of ref z[i_18] cond0.cc:9:3: note: virtual phi. skip. cond0.cc:9:3: note: num. args = 4 (not unary/binary/ternary op). cond0.cc:9:3: note: not ssa-name. cond0.cc:9:3: note: use not simple. cond0.cc:9:3: note: bit-precision arithmetic not supported. cond0.cc:9:3: note: not vectorized: relevant stmt not supported: _6 = _5 > 0.0; cond0.cc:9:3: note: bad operation or unsupported loop bound. Vincenzos-MacBook-Pro-2:vectorize innocent$ c++ -v Using built-in specs. COLLECT_GCC=c++ COLLECT_LTO_WRAPPER=/usr/local/libexec/gcc/x86_64-apple-darwin13.1.0/4.10.0/lto-wrapper Target: x86_64-apple-darwin13.1.0 Configured with: ../gcc-trunk/configure --disable-multilib --disable-bootstrap --disable-libitm --enable-languages=c,c++,fortran,lto --disable-libsanitizer --enable-lto Thread model: posix gcc version 4.10.0 20140430 (experimental) [trunk revision 209930] (GCC)