[Bug c/51712] -Wtype-limits should not trigger for types of implementation-defined signedness
manu at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Thu Apr 26 12:00:00 GMT 2012
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51712
--- Comment #7 from Manuel López-Ibáñez <manu at gcc dot gnu.org> 2012-04-26 11:59:30 UTC ---
(In reply to comment #6)
> On Tue, 17 Apr 2012, manu at gcc dot gnu.org wrote:
>
> > Unfortunately, I cannot see any way to know that FOO is a constant that comes
> > from an enum. Joseph, is this possible to do in the C FE?
>
> The original types of expressions that came from enums are already tracked
> for use of -Wc++-compat (checking if C code is compatible with stricter
> C++ rules for enums). (This is what c-typeck.c:build_external_ref uses
> the type pointer for: storing the original type of an enum.) So the
> information is available in at least parts of the C front end.
I see two ways to implement this:
* Make build_binary_op take c_expr instead of trees. This will require adding
c_expr to the C++ FE. For now, the C++ FE will just encapsulate the trees into
c_expr before calling build_binary_op and nothing else. If the long-term goal
is that C/C++ FEs track the original source code more faithfully, I think this
is the right step. The use of c_expr should help to achieve this.
* Pass 4 more arguments to build_binary_op, one for each c_expr and add a
wrapper to avoid changing the interface for C++ FE. This restricts the changes
to the C FE (and c-common.c) but it is really ugly.
Joseph/Jason,
what do you think?
More information about the Gcc-bugs
mailing list