https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116885
--- Comment #10 from Jaroslav Fojtík <JaFojtik at seznam dot cz> ---
I can call 8x fwrite with 1 byte to camouflage this. It will produce slower and
longer code and type punning will be only hidden. I cannot avoid this shuffle.
// Needed to store double in LoEndian format
case 'e':{const double e = va_arg(ap,double);
#ifdef LO_ENDIAN
writed += fwrite(&e,1,8,F); // LO endian native machine
#else
writed+=WrQWORD_LoEnd(*(QWORD_*)&e,F);
#endif
break;}
// Needed to store double in HiEndian format
case 'E':{const double e = va_arg(ap,double);
#ifdef HI_ENDIAN
writed += fwrite(&e,1,8,F); // HI endian native machine
#else
writed+=WrQWORD_HiEnd(*(QWORD_*)&e,F);
#endif
break;}