https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69489
--- Comment #18 from amker at gcc dot gnu.org --- So the question is why if-conversion generates: _43 = _44 & _45; _ifc__40 = _43 ? 1 : 0; n2_34 = n2_28 + _ifc__40; Not: _43 = _44 & _45; _XXX = (long int) _43; n2_34 = n2_28 + _XXX; As in the good test.