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

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|ASSIGNED                    |NEW
                 CC|                            |law at gcc dot gnu.org

--- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> ---
  _7 = (int) _5;
  _10 = (int) d.2_9;
  f_11 = _10 - _7;
  _12 = f_11 & -2;

with _5 and d.2_9 being of type unsigned char is transformed to

  _15 = d.2_9 - _5;
  _16 = _15 & 254;
  _12 = (int) _16;

with _16 being unsigned char.  That looks wrong as it changes a
sign-extended subtraction result to a zero-extended one.

CCing Jeff who added that pattern.

Reply via email to