https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116885
--- Comment #12 from Jaroslav Fojtík <JaFojtik at seznam dot cz> --- this solution should be correct according to documentation: typedef union { double d; uint64_t u64; } DblUint64; case 'e':{DblUint64 du; du.d = va_arg(ap,double); writed+=WrQWORD_LoEnd(du.u64,F); break;} case 'E':{DblUint64 du; du.d = va_arg(ap,double); writed+=WrQWORD_HiEnd(du.u64,F); break;}