> -----Original Message-----
> From: David Brown [mailto:da...@westcontrol.com]
> Sent: 19 March 2014 15:47
> To: Paulo Matos; gcc@gcc.gnu.org
> Subject: Re: returning short-enum and truncate doesn't trigger
> conversion warning
> 
> 
> Usually the discovery of bugs gets discussed on the help list - fixes
> for the bugs are an issue for the developers list.  And it is
> certainly a "help" issue until we know you have found a bug.
>

Sure, I will make sure I submit these questions to gcc-help first.
 
> >
> >>>
> >>> enum xpto
> >>> {
> >>>   A = 0,
> >>>   B = 1,
> >>>   X = 512
> >>> };
> >>>
> >>> extern void print (unsigned int);
> >>>
> >>> unsigned char bar (enum xpto a)
> >>> {
> >>>   print (sizeof (unsigned char));
> >>>   print (sizeof (enum xpto));
> >>>   return a;
> >>> }
> >>
> >> The sizeof operator returns an integer of type size_t (typically
> the
> >> same as unsigned int or unsigned long, depending on the platform
> >> details).  But the compiler can see that the particular values in
> >> question - 1 and 2 - can be converted to unsigned int without loss
> of
> >> precision of changing the value.  Therefore no warning is giving.
> >>
> >
> > 512 cannot be converted to an unsigned char without loss of
> precision.
> > The prints are actually not relevant for the question. They were
> just used for me to confirm the sizes of the types.
> 
> Not only are the prints not relevant, but they hid the real issue - I
> missed the point of your question!
> 
> Conversions involving enumerations are not listed in the documentation
> for -Wconversion, but it would be nice to get a warning here.  Filing
> it as an enhancement request seems reasonable.
> 

Will report as an enhancement.

Thanks,

Paulo Matos

Reply via email to