See testsuite/gcc.dg/vect/pr27151.c: float vs_data[75]; void vis_clear_data () { int vis_type, i; for (i = 0; i < 75; i++) { vs_data[i] = (vis_type == 1); } }
the loop is not vectorized because the COND_EXPRs condition has a different type than the COND_EXPRs true/false results. See also http://gcc.gnu.org/ml/gcc-patches/2006-05/msg00255.html for more analysis on this problem. -- Summary: Does not vectorize statements with mixed type COND_EXPRs Product: gcc Version: 4.2.0 Status: UNCONFIRMED Keywords: missed-optimization Severity: normal Priority: P3 Component: tree-optimization AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: rguenth at gcc dot gnu dot org OtherBugsDependingO 27151 nThis: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27460