https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68714
Bug ID: 68714 Summary: [6 Regression] less folding of vector comparison Product: gcc Version: 6.0 Status: UNCONFIRMED Keywords: missed-optimization Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: glisse at gcc dot gnu.org Target Milestone: --- The change to use vec_cond_expr all over the place for vector comparisons caused some regressions (that's obvious and normal). I just wanted to record some random example here: typedef int vec __attribute__((vector_size(16))); vec f(vec x,vec y){ return x<y|x==y; } used to give: _7 = x_1(D) <= y_2(D); return _7; but is now: _3 = VEC_COND_EXPR <x_1(D) < y_2(D), { -1, -1, -1, -1 }, { 0, 0, 0, 0 }>; _4 = VEC_COND_EXPR <x_1(D) == y_2(D), { -1, -1, -1, -1 }, { 0, 0, 0, 0 }>; _5 = _3 | _4; return _5; (ok, the asm is almost the same on x86 so the example may not be the best, but it gives the idea)