https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116885
Vincent Lefèvre <vincent-gcc at vinc17 dot net> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |vincent-gcc at vinc17 dot net
--- Comment #8 from Vincent Lefèvre <vincent-gcc at vinc17 dot net> ---
(In reply to Jaroslav Fojtík from comment #7)
> 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;
No, this is incorrect (see ISO C17 6.5p7), unless the compiler ignores aliasing
rules (e.g. -fno-strict-aliasing with GCC).