Fix a bug handling hex floats in c90 mode, pointed out by Neil.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44120 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/Lex/LiteralSupport.cpp b/Lex/LiteralSupport.cpp
index c0027f2..21ead21 100644
--- a/Lex/LiteralSupport.cpp
+++ b/Lex/LiteralSupport.cpp
@@ -224,7 +224,7 @@
       }
       // 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 0000000..84d3046
--- /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}} */
+     ) };