From: Chris Lattner Date: Wed, 14 Nov 2007 16:14:50 +0000 (+0000) Subject: Fix a bug handling hex floats in c90 mode, pointed out by Neil. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=921e9ff0301fcc4d389cef16b84adc97229ed5e0;p=clang 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 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}} */ + ) };