http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46008
Summary: Floating point condexpr not vectorized Product: gcc Version: 4.6.0 Status: UNCONFIRMED Keywords: missed-optimization Severity: normal Priority: P3 Component: tree-optimization AssignedTo: unassig...@gcc.gnu.org ReportedBy: ja...@gcc.gnu.org CC: i...@gcc.gnu.org void bar (double *); void foo (double *a, double *b, double *c, double *d) { double e[1024], f; int i; for (i = 0; i < 1024; i++) e[i] = (f = a[i] + b[i] + c[i] * d[i]) < 0.0 ? 3.0 : f; bar (e); } is not vectorized at -O3 (is at -O3 -ffast-math though). One problem is in ifcvt, which creates bogus dead stmts with bool type, but even with that fixed the vectorizer gives up. I'll attach ifcvt fix, is there something that can be done about this on the vectorizer side?