forked from OSchip/llvm-project
In c89 mode accept hex fp constants as an extension:
t2.c:1:17: warning: hexadecimal floating constants are a C99 feature long double d = 0x0.0000003ffffffff00000p-16357L; ^ instead of emitting a weird error message that doesn't make sense: t2.c:1:41: error: hexadecimal floating constants require an exponent long double d = 0x0.0000003ffffffff00000p-16357L; ^ rdar://6096838 llvm-svn: 54035
This commit is contained in:
parent
83ec24501e
commit
c94ad4abcb
|
@ -877,6 +877,8 @@ DIAG(err_invalid_decimal_digit, ERROR,
|
|||
"invalid digit '%0' in decimal constant")
|
||||
DIAG(err_hexconstant_requires_exponent, ERROR,
|
||||
"hexadecimal floating constants require an exponent")
|
||||
DIAG(ext_hexconstant_invalid, EXTENSION,
|
||||
"hexadecimal floating constants are a C99 feature")
|
||||
DIAG(err_typecheck_subscript_value, ERROR,
|
||||
"subscripted value is neither array nor pointer")
|
||||
DIAG(err_typecheck_subscript, ERROR,
|
||||
|
|
|
@ -354,18 +354,21 @@ void NumericLiteralParser::ParseNumberStartingWithZero(SourceLocation TokLoc) {
|
|||
}
|
||||
// A binary exponent can appear with or with a '.'. If dotted, the
|
||||
// binary exponent is required.
|
||||
if ((*s == 'p' || *s == 'P') && PP.getLangOptions().HexFloats) {
|
||||
if (*s == 'p' || *s == 'P') {
|
||||
const char *Exponent = s;
|
||||
s++;
|
||||
saw_exponent = true;
|
||||
if (*s == '+' || *s == '-') s++; // sign
|
||||
const char *first_non_digit = SkipDigits(s);
|
||||
if (first_non_digit != s) {
|
||||
s = first_non_digit;
|
||||
} else {
|
||||
if (first_non_digit == s) {
|
||||
Diag(PP.AdvanceToTokenCharacter(TokLoc, Exponent-ThisTokBegin),
|
||||
diag::err_exponent_has_no_digits);
|
||||
return;
|
||||
}
|
||||
s = first_non_digit;
|
||||
|
||||
if (!PP.getLangOptions().HexFloats)
|
||||
Diag(TokLoc, diag::ext_hexconstant_invalid);
|
||||
} else if (saw_period) {
|
||||
Diag(PP.AdvanceToTokenCharacter(TokLoc, s-ThisTokBegin),
|
||||
diag::err_hexconstant_requires_exponent);
|
||||
|
|
Loading…
Reference in New Issue