https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97986
--- Comment #10 from Joseph S. Myers <jsm28 at gcc dot gnu.org> --- I think my previous comment still applies: when an array type is passed to va_arg, evaluate side effects of the arguments, warn and (except for non-VLAs in C90 mode) generate a call to __builtin_trap that's evaluated after the side effects from the arguments. The resulting expression should still have the array type (it could be passed to sizeof, for example).