aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Lex/LiteralSupport.cpp2
-rw-r--r--test/Lexer/c90.c5
2 files changed, 6 insertions, 1 deletions
diff --git a/Lex/LiteralSupport.cpp b/Lex/LiteralSupport.cpp
index c0027f266c..21ead21bfe 100644
--- a/Lex/LiteralSupport.cpp
+++ b/Lex/LiteralSupport.cpp
@@ -224,7 +224,7 @@ NumericLiteralParser(const char *begin, const char *end,
}
// A binary exponent can appear with or with a '.'. If dotted, the
// binary exponent is required.
- if (*s == 'p' || *s == 'P') {
+ if ((*s == 'p' || *s == 'P') && PP.getLangOptions().HexFloats) {
s++;
saw_exponent = true;
if (*s == '+' || *s == '-') s++; // sign
diff --git a/test/Lexer/c90.c b/test/Lexer/c90.c
new file mode 100644
index 0000000000..84d30467b9
--- /dev/null
+++ b/test/Lexer/c90.c
@@ -0,0 +1,5 @@
+// RUN: clang -std=c90 -fsyntax-only %s -verify
+
+enum { cast_hex = (long) (
+ 0x0p-1 /* expected-error {{invalid suffix 'p' on integer constant}} */
+ ) };