https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109516

--- Comment #8 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
(In reply to Yann Droneaud from comment #7)
> (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.

Because 24 is smaller than CHAR_BIT*sizeof(int) so it gets prompoted to int
when passing it.

Reply via email to