https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65331
--- Comment #2 from joseph at codesourcery dot com <joseph at codesourcery dot com> --- Indeed, for C bit-field width is considered part of the type, meaning no promotion for those wider than int (and no way for va_arg to extract the value of such a bit-field passed to a variadic function, and no matching formats). You need to cast such bit-fields to an appropriate type when passing to printf.