This is the mail archive of the mailing list for the GCC project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: C++ PATCH: Disallow floating-point literals in integral-constantexpressions

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
attached patch.

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
$BUILD_DIR/i686-pc-linux-gnu/libjava/java/util/Hashtable.h is:

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.

Mark Mitchell
CodeSourcery, LLC
(916) 791-8304

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]