https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70646
--- Comment #10 from Richard Biener <rguenth at gcc dot gnu.org> --- Fixing that with void __attribute__((noinline,noclone)) broken(u64* shost) { u8 node_name[8] __attribute__((aligned(__alignof(u64)))) = { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}; *shost = wwn_to_u64(node_name); } still shows broken code. Note __swab64p is a quite stupid implementation assuming GCC can't constant-fold __builtin_bswap64.