From: Richard Kenner Date: Wed, 19 Mar 1997 21:57:58 +0000 (-0500) Subject: (parse_number, yylex), cccp.c (rescan), cpplib.c X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=21c24d8861a00025be2a91906ef5f70417538422;p=gcc.git (parse_number, yylex), cccp.c (rescan), cpplib.c (parse_number, yylex), cccp.c (rescan), cpplib.c (cpp_get_token): Unless -lang-c89 is specified, allow C9X-style hexadecimal floating-point numbers as preprocessor numbers. From-SVN: r13746 --- diff --git a/gcc/cexp.y b/gcc/cexp.y index 18887511fab..2d2d34f8b28 100644 --- a/gcc/cexp.y +++ b/gcc/cexp.y @@ -161,6 +161,9 @@ extern int pedantic; /* Flag for -traditional. */ extern int traditional; +/* Flag for -lang-c89. */ +extern int c89; + #ifndef CHAR_TYPE_SIZE #define CHAR_TYPE_SIZE BITS_PER_UNIT #endif @@ -531,7 +534,7 @@ parse_number (olen) yylval.integer.signedp = UNSIGNED; } else { - if (c == '.' || c == 'e' || c == 'E') + if (c == '.' || c == 'e' || c == 'E' || c == 'p' || c == 'P') yyerror ("Floating point numbers not allowed in #if expressions"); else { char *buf = (char *) alloca (p - lexptr + 40); @@ -834,7 +837,9 @@ yylex () for (namelen = 1; ; namelen++) { int d = tokstart[namelen]; if (! ((is_idchar[d] || d == '.') - || ((d == '-' || d == '+') && (c == 'e' || c == 'E') + || ((d == '-' || d == '+') + && (c == 'e' || c == 'E' + || ((c == 'p' || c == 'P') && ! c89)) && ! traditional))) break; c = d;