https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94727
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Target| |x86_64-*-* --- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> --- test() is basic-block vectorized on the c-loop body which has the d- and e-loops completely unrolled. We create some weird mask__84.17_18 = vect_cst__94 < vect_cst__20; vect_patt_266.18_6 = VEC_COND_EXPR <mask__84.17_18, vect_cst__16, vect_cst__15>; where vect_cst__94 and vect_cst__20 look like { var_3.1_42 ? -1 : 0, var_3.1_42 ? -1 : 0, ... or even { _272 ? -1 : 0, ... with _272 = _271 < var_11.0_40 so the vectorization is quite imperfect, mainly due to t1.C:9:32: note: ==> examining statement: _85 = var_11.0_40 > _86; t1.C:12:69: missed: not vectorized: relevant stmt not supported: _85 = var_11.0_40 > _86; t1.C:9:32: note: Building vector operands from scalars instead that doesn't yet explain what goes wrong here.