https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116885

--- Comment #7 from Jaroslav Fojtík <JaFojtik at seznam dot cz> ---
Just for clarification.

This worked till GCC-14 - The code has been verified and proven functionable
many times:
     case 'e':{const uint64_t e = va_arg(ap,uint64_t);
              writed+=WrQWORD_LoEnd(e,F);}
              break;
     case 'E':{const uint64_t e = va_arg(ap,uint64_t);
              writed+=WrQWORD_HiEnd(e,F);}
              break;

This is just correct (of course for architectures, where double has 8 bytes):
     case 'e':{const double e = va_arg(ap,double);
              writed+=WrQWORD_LoEnd(*(uint64_t*)&e,F);}
              break;
     case 'E':{const double e = va_arg(ap,double);
              writed+=WrQWORD_HiEnd(*(uint64_t*)&e,F);}
              break;

Reply via email to