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