[Bug preprocessor/39559] New: constants too large for intmax_t need pedwarns
jsm28 at gcc dot gnu dot org
gcc-bugzilla@gcc.gnu.org
Thu Mar 26 01:33:00 GMT 2009
unsigned long long l = 9223372036854775808LL;
should get an error with -std=c99 -pedantic-errors, but instead gets a warning:
t.c:1:24: warning: integer constant is so large that it is unsigned
C99 does not allow decimal constants without "U" suffix to get an
unsigned type. I think the preprocessor should pedwarn in this case
(for C99, not C90), to catch the use of such constants in
#if conditions as well.
The preprocessor already pedwarns for a value large enough to be outside
the range of uintmax_t (which is used to set the preprocessor's
internal precision), so I believe this case of a constant inside the range
of uintmax_t but outside that of intmax_t, in decimal without "U" suffix,
is the only current case of this bug.
See <http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38934#c15> for some
historical discussion (but it doesn't appear types wider than intmax_t
can ever appear this way after all).
--
Summary: constants too large for intmax_t need pedwarns
Product: gcc
Version: 4.4.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: preprocessor
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: jsm28 at gcc dot gnu dot org
OtherBugsDependingO 16989
nThis:
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39559
More information about the Gcc-bugs
mailing list