diff options
author | Alexis Hunt <alercah@gmail.com> | 2010-01-10 23:37:56 +0000 |
---|---|---|
committer | Alexis Hunt <alercah@gmail.com> | 2010-01-10 23:37:56 +0000 |
commit | 91b78382b51bb19e4023da4ef1818f146b7018dc (patch) | |
tree | 57b662e6a2f64cecafd85c903a5e65f6ca471bd6 /clang/include | |
parent | 504a6ae83ee2a8d9ce7e6b470efc96822be3b2ed (diff) | |
download | bcm5719-llvm-91b78382b51bb19e4023da4ef1818f146b7018dc.tar.gz bcm5719-llvm-91b78382b51bb19e4023da4ef1818f146b7018dc.zip |
Do not parse hexadecimal floating point literals in C++0x mode because they are
incompatible with user-defined literals, specifically with the following form:
0x1p+1
The preprocessing-number token extends only as far as the 'p'; the '+' is not
included. Previously we could get away with this extension as p was an invalid
suffix, but now with user-defined literals, 'p' might well be a valid suffix
and we are forced to consider it as such.
This patch also adds a warning in non-0x C++ modes telling the user that
this extension is incompatible with C++0x that is enabled by default
(previously and with other languages, we warn only with a compliance
option such as -pedantic).
llvm-svn: 93135
Diffstat (limited to 'clang/include')
-rw-r--r-- | clang/include/clang/Basic/DiagnosticLexKinds.td | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/clang/include/clang/Basic/DiagnosticLexKinds.td b/clang/include/clang/Basic/DiagnosticLexKinds.td index d79091a1f6b..26a80b51c85 100644 --- a/clang/include/clang/Basic/DiagnosticLexKinds.td +++ b/clang/include/clang/Basic/DiagnosticLexKinds.td @@ -84,6 +84,9 @@ def err_exponent_has_no_digits : Error<"exponent has no digits">; def ext_imaginary_constant : Extension<"imaginary constants are an extension">; def err_hexconstant_requires_exponent : Error< "hexadecimal floating constants require an exponent">; +def ext_hexconstant_cplusplus : ExtWarn< + "hexadecimal floating constants are a C99 feature that is incompatible with " + "C++0x">; def ext_hexconstant_invalid : Extension< "hexadecimal floating constants are a C99 feature">; def ext_binary_literal : Extension< |