PR c/51712 -Wtype-limits should not trigger for types of implementation-defined signedness

Joseph S. Myers joseph@codesourcery.com
Tue May 1 14:59:00 GMT 2012


On Tue, 1 May 2012, Manuel López-Ibáñez wrote:

> > What if the comparison is
> >
> >  (unsigned) (expr_of_signed_enum_type) >= 0
> >
> > ?  (With GCC, the enum will have a signed type if one of its values is
> > negative.)  That seems worth a warning - the point of the patch as I
> > understand it is to avoid warning for
> 
> What I understood from the PR is that we should never warn for enums.

I think the point is we shouldn't warn if the enum itself if part of the 
comparison - as opposed to the enum cast to some type whose signedness is 
not implementation-defined.  But at present it may be difficult to tell if 
there was an explicit cast of an unsigned enum to unsigned - but we can 
still detect the above case.

>  +/* Given an expression as a tree, return its original type.  Do this
> +   by stripping any conversion that generates no instruction but don't
> +   let the signedness change.  */

"generates no instruction" is not appropriate semantics for something 
related to diagnostics.  "any conversion that preserves the sign and 
precision"?  OK with that version.

-- 
Joseph S. Myers
joseph@codesourcery.com


More information about the Gcc-patches mailing list