https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101639
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Last reconfirmed|2021-07-27 00:00:00 |2024-6-18 CC| |rguenth at gcc dot gnu.org, | |rsandifo at gcc dot gnu.org --- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> --- Re-confirmed. To recap: t.c:4:21: note: === vect_determine_precisions === t.c:4:21: note: using normal nonmask vectors for r_14 = PHI <_8(6), 1(5)> t.c:4:21: note: using boolean precision 8 for _4 = _3 != 0; t.c:4:21: note: using boolean precision 8 for _8 = _4 & r_14; ... t.c:4:21: note: ==> examining phi: r_14 = PHI <_8(6), 1(5)> t.c:4:21: note: get vectype for scalar type: bool t.c:4:21: note: vectype: vector(16) unsigned char .. t.c:4:21: note: ==> examining statement: _4 = _3 != 0; t.c:4:21: note: vectype: vector(16) <signed-boolean:8> t.c:4:21: note: nunits = 16 t.c:4:21: note: ==> examining statement: _8 = _4 & r_14; t.c:4:21: note: vectype: vector(16) <signed-boolean:8> t.c:4:21: note: nunits = 16 that doesn't match up. The solution might be to realize _8 is live and thus needed as nonmask.