https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93040
Andrew Pinski <pinskia at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |NEW
Last reconfirmed| |2019-12-22
Version|unknown |10.0
Ever confirmed|0 |1
--- Comment #2 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
If we rewrite get_unaligned_16 slightly like:
unsigned short get_unaligned_16_1 (unsigned char *p)
{
unsigned short t0 = p[0];
unsigned short t1 = p[1];
t1 <<= 8;
return t0 | t1;
}
GCC is able to detect it as a nop/bswap (on big-endian targets).