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

--- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> ---
Another option is to elide the promotion?

int foo (unsigned short x)
{
  return __builtin_bswap16 (x);
}

  return (int) __builtin_bswap16 ((int) x);

but BUILT_IN_BSWAP16 is BT_FN_UINT16_UINT16, not sure why there's
a truncation missing?!  Is that the frontend "promote according to ABI"
thing?  Yeah, I guess so :/

Reply via email to