https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70232
--- Comment #11 from Arnd Bergmann <arnd at linaro dot org> --- For reference, I have sent a patch to the kernel to replace the open-coded byteswap with a __builtin_bswap64. This produces much better object code with both gcc-5 and gcc-6 than the original version, so it's certainly a good thing to do regardless of the resolution in gcc-6: http://thread.gmane.org/gmane.linux.kernel/2178301 For reference, these are the sizes of stack usage and function length: gcc-5.3.1, linux-4.5: