https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116885
--- Comment #19 from Andrew Pinski <pinskia at gcc dot gnu.org> --- (In reply to Jaroslav Fojtík from comment #18) > May be that this report points to a similar bug: > https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116621 > > I cannot consider this to be a bug because of types mismatch i my case. > > "Normaly" the va_arg is implemented this way: > #define _crt_va_arg(ap,t) ( *(t *)((ap += _INTSIZEOF(t)) - _INTSIZEOF(t)) > ) > > and type does not matter only object size passed is signifficant. No. va_arg is never defined that way. It might work for some ABIs but not all. And definitely does not work for x86_64.