https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93505
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Target Milestone|--- |8.4 --- Comment #3 from Richard Biener <rguenth at gcc dot gnu.org> --- Just to quote x = x >> __builtin_bswap64 (-a) | x << (-__builtin_bswap64 (-a) & 31); with a == ~0. The right shift argument is > 31 which makes its behavior undefined. Does adding a & 31 help?