https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110817
--- Comment #5 from Andrew Pinski <pinskia at gcc dot gnu.org> --- veclower produces: _36 = BIT_FIELD_REF <_9, 32, 0>; _37 = _36 != 0; _38 = _36 == 0; _39 = (signed int) _38; _40 = (signed int) _36; _41 = _40 + -1; _42 = BIT_FIELD_REF <_9, 32, 32>; _43 = _42 != 0; _44 = _42 == 0; _45 = (signed int) _44; _46 = (signed int) _42; _47 = _46 + -1; _5 = {_41, _47};(In reply to Andrew Pinski from comment #4) > >that's v != 0 | v == c, I don't think that's equal to the original > >expression. > > It is. > > Here is the proof there: > ((v > 0) ? -1 : 0) > ((v != c) ? -1 : 0) > v is unsigned char: Sorry it is unsigned (not unsigned char).