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.

Reply via email to