https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112740

--- Comment #6 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
Veclower -O0 produces
  c.0_6 = c_5(D);
  _2 = (__int128 unsigned) c.0_6;
  _1 = {_2};
  _10 = VIEW_CONVERT_EXPR<__int128 unsigned>(v_7(D));
  _11 = _10 >= _2; // 1 true
  _12 = (int128_t) _11; // 1
  _13 = -_12; // -1
  _14 = (<signed-boolean:128>) _13; // -1 aka true
  _3 = {_14}; // {-1} aka true
  _4 = ~_3; // 0 aka false
  _15 = VIEW_CONVERT_EXPR<<signed-boolean:128>>(_4); // 0 aka false
  _16 = _15 != 0; // 0 != 0, 0 false
  _17 = (__int128 unsigned) _16; // 0
  _18 = -_17; // 0
  _8 = {_18};

Which looks correct.
NOTE the ~ there, I am suspecting it is producing the wrong result ...

Reply via email to