https://gcc.gnu.org/bugzilla/show_bug.cgi?id=123316

--- Comment #5 from Richard Biener <rguenth at gcc dot gnu.org> ---
This is a nested cycle involving bools which we somehow mishandle.

t.c:4:10: note:   Analyze phi: b_I_lsm.5_22 = PHI <_5(9), b_I_lsm.5_18(6)>
t.c:4:10: note:   detected nested cycle: _5 = _4 != 0;
t.c:4:10: note:   Detected vectorizable nested cycle.

t.c:4:10: note:   using normal nonmask vectors for b_I_lsm.5_22 = PHI <_5(9),
b_I_lsm.5_18(6)>
t.c:4:10: note:   using boolean precision 32 for _5 = _4 != 0;
t.c:4:10: note:   using boolean precision 32 for _7 = PHI <_5(4)>
t.c:4:10: note:   using boolean precision 32 for b_I_lsm.5_22 = PHI <_5(9),
b_I_lsm.5_18(6)>

but the load/store are data and we do

t.c:4:10: note:   vect_recog_bool_pattern: detected: _2 = (int) b_I_lsm.5_22;
t.c:4:10: note:   bool pattern recognized: patt_30 = b_I_lsm.5_22 ? 1 : 0;

t.c:4:10: note:   vect_recog_bool_pattern: detected: b[c_19] = _7;
t.c:4:10: note:   bool pattern recognized: VIEW_CONVERT_EXPR<unsigned
char>(b[c_19]) = patt_28;
t.c:4:10: note:   extra pattern stmt: patt_29 = (<signed-boolean:8>) _7;
t.c:4:10: note:   extra pattern stmt: patt_28 = patt_29 ? 1 : 0;

That seems correct, but we fail to detect a required bool pattern for the
PHI use of the b_I_lsm.5_18 = b[c_19] load.

Reply via email to