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.