https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109516
--- Comment #7 from Yann Droneaud <yann at droneaud dot fr> --- (In reply to Andrew Pinski from comment #6) > > > > And I failed to comprehend how unsigned long int:48 can be passed to a > > variadic function without being promoted to plain unsigned long int ... > > Oh yes, there is no way for an user to get the value back via va_arg really. > But this is just how C has an implementation defined behavior here really. I understand, but can't refrain myself from thinking it's an unfortunate discrepancy having a warning when formatting the uint64_t:48 case but not for uint32_t:24 one. Anyway, thanks for all the explanation. Regards.