summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDouglas Gregor <dgregor@apple.com>2011-10-12 18:51:02 +0000
committerDouglas Gregor <dgregor@apple.com>2011-10-12 18:51:02 +0000
commit227c352bae84b7def117a87af760ac956b717bd3 (patch)
tree8d5ce2944dd6e9bcc202cd2f37e0e410c3d2b25d
parent1a2c5386cd60b2746a8af62a58a3e94215bd14b8 (diff)
downloadbcm5719-llvm-227c352bae84b7def117a87af760ac956b717bd3.tar.gz
bcm5719-llvm-227c352bae84b7def117a87af760ac956b717bd3.zip
We do parse hexfloats in C++11; make it actually work.
llvm-svn: 141798
-rw-r--r--clang/lib/Lex/Lexer.cpp3
-rw-r--r--clang/lib/Lex/LiteralSupport.cpp3
-rw-r--r--clang/test/Lexer/hexfloat.cpp9
3 files changed, 3 insertions, 12 deletions
diff --git a/clang/lib/Lex/Lexer.cpp b/clang/lib/Lex/Lexer.cpp
index c7a3df50bca..802024f79b6 100644
--- a/clang/lib/Lex/Lexer.cpp
+++ b/clang/lib/Lex/Lexer.cpp
@@ -1358,8 +1358,7 @@ void Lexer::LexNumericConstant(Token &Result, const char *CurPtr) {
}
// If we have a hex FP constant, continue.
- if ((C == '-' || C == '+') && (PrevCh == 'P' || PrevCh == 'p') &&
- !Features.CPlusPlus0x)
+ if ((C == '-' || C == '+') && (PrevCh == 'P' || PrevCh == 'p'))
return LexNumericConstant(Result, ConsumeChar(CurPtr, Size, Result));
// Update the location of token as well as BufferPtr.
diff --git a/clang/lib/Lex/LiteralSupport.cpp b/clang/lib/Lex/LiteralSupport.cpp
index 96550e6492b..70183fd1a0e 100644
--- a/clang/lib/Lex/LiteralSupport.cpp
+++ b/clang/lib/Lex/LiteralSupport.cpp
@@ -562,9 +562,6 @@ void NumericLiteralParser::ParseNumberStartingWithZero(SourceLocation TokLoc) {
}
s = first_non_digit;
- // In C++0x, we cannot support hexadecmial floating literals because
- // they conflict with user-defined literals, so we warn in previous
- // versions of C++ by default.
if (!PP.getLangOptions().HexFloats)
PP.Diag(TokLoc, diag::ext_hexconstant_invalid);
} else if (saw_period) {
diff --git a/clang/test/Lexer/hexfloat.cpp b/clang/test/Lexer/hexfloat.cpp
index 493b64e6274..23daa49ad21 100644
--- a/clang/test/Lexer/hexfloat.cpp
+++ b/clang/test/Lexer/hexfloat.cpp
@@ -1,9 +1,4 @@
// RUN: %clang_cc1 -fsyntax-only -verify -pedantic %s
-// RUN: %clang_cc1 -std=c++0x -fsyntax-only -verify %s
-// XFAIL: *
+// RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify -pedantic %s
+float f = 0x1p+1; // expected-warning{{hexadecimal floating constants are a C99 feature}}
-#ifndef __GXX_EXPERIMENTAL_CXX0X__
-float f = 0x1p+1; // expected-warning {{incompatible with C++0x}}
-#else
-float f = 0x1p+1; // expected-warning {{invalid suffix}}
-#endif
OpenPOWER on IntegriCloud