[Bug c/59753] -Woverflow warning inconsistency with signed constant conversion between T_MAX+1 and UT_MAX vs larger than UT_MAX
vincent-gcc at vinc17 dot net
gcc-bugzilla@gcc.gnu.org
Wed Feb 5 17:31:00 GMT 2014
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59753
--- Comment #6 from Vincent Lefèvre <vincent-gcc at vinc17 dot net> ---
(In reply to Manuel López-Ibáñez from comment #5)
> (In reply to Vincent Lefèvre from comment #4)
> > There's still an inconsistency without -Wpedantic, which is the point of
> > this bug. I've changed the bug title to:
> >
> > -Woverflow warning inconsistency with signed constant conversion between
> > T_MAX+1 and UT_MAX vs larger than UT_MAX
>
> I seem to remember this inconsistency is due to the exact definition of
> overflow given in the standard.
Which definition?
As I understand the standard, there's no overflow in the integer constant:
65535 and 65536 are both of type int on the machine in question (C99,
6.4.4.1p5).
Then, in the assignment, there's a conversion of the value to type short (C99,
6.5.16.1p2). Concerning this conversion, since short is a signed integer type
and neither 65535 nor 65536 is representable in the type short, the behavior is
implementation-defined (C99, 6.3.1.3p3). I still don't see why the
inconsistency would be due to the definition of overflow.
More information about the Gcc-bugs
mailing list