https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67326
Bug ID: 67326 Summary: [5.2/6.0 regression] -ftree-loop-if-convert-stores does not vectorize conditional assignment (anymore) Product: gcc Version: 6.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: vincenzo.innocente at cern dot ch Target Milestone: --- in 5.1 looks ok (according to http://gcc.godbolt.org) cat condBug.cc float v0[1024]; float v1[1024]; float v2[1024]; float v3[1024]; void condAssign1() { for(int i=0; i<1024; ++i) v0[i] = (v2[i]>v1[i]) ? v2[i]*v3[i] : v0[i]; } void condAssign2() { for(int i=0; i<1024; ++i) v0[i] = (v2[i]>v1[i]) ? v2[i]*v1[i] : v0[i]; } c++ -Ofast -fopt-info-vec -ftree-loop-if-convert-stores -S condBug.cc condBug.cc:7:3: note: loop vectorized condBug.cc:13:3: note: loop vectorized gcc version 4.9.3 (GCC) c++ -Ofast -fopt-info-vec -ftree-loop-if-convert-stores -S condBug.cc condBug.cc:13:17: note: loop vectorized with gcc version 6.0.0 20150801 (experimental) [trunk revision 226463] (GCC)