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).