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

--- Comment #6 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
(In reply to Yann Droneaud from comment #4)
> (In reply to Andrew Pinski from comment #1)
> > 
> > Basically GCC decided that the type of the bitfield uint48 has a type of
> > unsigned:48 and since it is larger size than int, it does not get promoted
> > to int and in this cases gets passed to the variadic function as that type.
> 
> I wouldn't have expected bitfield type to be "visible" outside of its
> structure.  

Yes I understand that, but C actually has the idea of that being a type.


> 
> 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.

Reply via email to