This is the mail archive of the
mailing list for the GCC project.
Re: C++ PATCH: Disallow floating-point literals in integral-constantexpressions
- From: Mark Mitchell <mark at codesourcery dot com>
- To: Ranjit Mathew <rmathew at gmail dot com>
- Cc: libstdc++ at gcc dot gnu dot org, GCC Patches <gcc-patches at gcc dot gnu dot org>
- Date: Mon, 31 Jan 2005 22:08:38 -0800
- Subject: Re: C++ PATCH: Disallow floating-point literals in integral-constantexpressions
- Organization: CodeSourcery, LLC
- References: <200502010102.j1112IsD021436@sethra.codesourcery.com> <41FF1AFD.email@example.com>
Ranjit Mathew wrote:
Mark Mitchell wrote:
The standard says that floating-point literals are only allowed in
integral constant expressions if they are immediately cast to an
integral or enumeration type. When I implemented checks for integral
constant-expressions, I failed to check this case. Remedied with the
The standard library fell afound of this rule in std_limits.h; that's
now fixed too.
Tested on x86_64-unknown-linux-gnu, applied on the mainline.
This seems to break libjava on i686-pc-linux-gnu:
./java/util/Hashtable.h:53: error: floating-point literal cannot appear in a con
The relevant line from
static const jfloat DEFAULT_LOAD_FACTOR = 0x1.800000p-1f;
Ugh. That's invalid C++.
However, we can't have a broken Java compiler.
I'll take a quick look at fixing gjavah, and, failing that, disable the
new error temporarily.