https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78543
--- Comment #18 from Michael Meissner <meissner at gcc dot gnu.org> --- Created attachment 41035 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=41035&action=edit Proposed patch to fix the problem This patch does not allow SUBREG's in bswap functions, which confuses the register allocators. It has passed without regression on a little endian power8 system, and I'm testing it on a big endian power8 system and big endian power7 system. I also will be testing the back port to gcc 6 (and later gcc 5).