https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61729
--- Comment #2 from joseph at codesourcery dot com <joseph at codesourcery dot com> --- FWIW, new C floating-point types such as _Float16 and _Float32 are not promoted in variable arguments either, which has required a few back-end changes. Complex types such as _Complex float or _Complex char never are promoted, but for a long time it seems we weren't testing those in variable arguments either (I'm not sure if we now have tests for such types in variable arguments). So it's consistent with that to have unpromoted new C++ types (and presumably naming those types in va_arg needs to work correctly), but they might well cause more problems than the above examples.