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

llvm-svn: 44120
This commit is contained in:
Chris Lattner 2007-11-14 16:14:50 +00:00
parent a509f04034
commit e6c7a858b0
2 changed files with 6 additions and 1 deletions

View File

@ -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

5
clang/test/Lexer/c90.c Normal file
View File

@ -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}} */
) };