https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101139
--- Comment #3 from Richard Biener <rguenth at gcc dot gnu.org> --- One odd thing is that while __builtin_bswap16 is declared as taking an uint16 argument the frontend promotes it to 'int' and that stays that way in GIMPLE: _16 = (short unsigned int) f$ab_14; _17 = (int) _16; _18 = __builtin_bswap16 (_17);