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).

Reply via email to