https://gcc.gnu.org/bugzilla/show_bug.cgi?id=127390
Richard Biener <rguenth at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Keywords| |missed-optimization
--- Comment #4 from Richard Biener <rguenth at gcc dot gnu.org> ---
So there's an invariant check in the loop and a pattern involved:
t.c:8:17: note: using boolean precision 32 for patt_19 = _7 <= 1;
t.c:8:17: note: vect_recog_gcond_pattern: detected: if (_7 <= 1)
t.c:8:17: note: gcond pattern recognized: if (patt_19 != 0)
t.c:8:17: note: extra pattern stmt: patt_19 = _7 <= 1;
t.c:8:17: note: using boolean precision 0 for if (patt_19 != 0)
...
t.c:8:17: note: Final SLP tree for instance 0x18ccab90:
t.c:8:17: note: node 0x18d7fce0 (refcnt=2) vector(4) <signed-boolean:32>
t.c:8:17: note: op template: patt_19 = _7 <= 1;
t.c:8:17: note: stmt 0 patt_19 = _7 <= 1;
t.c:8:17: note: children 0x18d7fd90 0x18d7fe40
t.c:8:17: note: node (external) 0x18d7fd90 (refcnt=1)
t.c:8:17: note: { _7 }
t.c:8:17: note: node (constant) 0x18d7fe40 (refcnt=1)
t.c:8:17: note: { 1 }
and we are not guarding vectorization of a comparison against bit-precision
types which we need to handle via patterns/ifcvt massaging.
So the missed optimization is failed lowering of bitfield accesses for
invariants or _BitInt in general.