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

Andrew Pinski <pinskia at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |missed-optimization
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2017-11-09
     Ever confirmed|0                           |1

--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
  _1 = p[i_7];
  _2 = (short unsigned int) _1;
  _3 = m_11(D) * _2;
  _4 = (int) _3;
  _5 = _4 >> 8;
  _6 = (unsigned char) _5;
  p[i_7] = _6;
  i_13 = i_7 + 1;


The problem is:
  _4 = (int) _3;
  _5 = _4 >> 8;
  _6 = (unsigned char) _5;

Should have been optimized to:
(unsigned char) (_3 >> 8) (without the cast which is required by the C
promotion rules).

Reply via email to