From 7f1fc38ea4593a4b0ae1333eefe028d1464d2a9b Mon Sep 17 00:00:00 2001 From: Michael Matz Date: Mon, 31 Mar 2003 15:50:53 +0000 Subject: [PATCH] cppexp.c (cpp_classify_number): Accept '.' after "0x". * cppexp.c (cpp_classify_number): Accept '.' after "0x". * testsuite/gcc.dg/cpp/c99-hexfloat-3.c: New file. From-SVN: r65091 --- gcc/ChangeLog | 5 +++++ gcc/cppexp.c | 3 ++- gcc/testsuite/gcc.dg/cpp/c99-hexfloat-3.c | 6 ++++++ 3 files changed, 13 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/gcc.dg/cpp/c99-hexfloat-3.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 820deea60b70..15df443f5106 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2003-03-31 Michael Matz + + * cppexp.c (cpp_classify_number): Accept '.' after "0x". + * testsuite/gcc.dg/cpp/c99-hexfloat-3.c: New file. + 2003-03-31 Nathan Sidwell * gcov.c: Add -a & -u options. diff --git a/gcc/cppexp.c b/gcc/cppexp.c index 202b2d01a597..59a08e90a672 100644 --- a/gcc/cppexp.c +++ b/gcc/cppexp.c @@ -175,7 +175,8 @@ cpp_classify_number (pfile, token) str++; /* Require at least one hex digit to classify it as hex. */ - if ((*str == 'x' || *str == 'X') && ISXDIGIT (str[1])) + if ((*str == 'x' || *str == 'X') + && (str[1] == '.' || ISXDIGIT (str[1]))) { radix = 16; str++; diff --git a/gcc/testsuite/gcc.dg/cpp/c99-hexfloat-3.c b/gcc/testsuite/gcc.dg/cpp/c99-hexfloat-3.c new file mode 100644 index 000000000000..44c49c995268 --- /dev/null +++ b/gcc/testsuite/gcc.dg/cpp/c99-hexfloat-3.c @@ -0,0 +1,6 @@ +/* Test for hex floating point constants: in C99 only. Compiler test. */ +/* Origin: Michael Matz */ +/* { dg-do compile } */ +/* { dg-options "-std=iso9899:1999 -pedantic-errors" } */ + +double d = 0x.2p2; /* { dg-bogus "radix 16" "bogus C99 hex float error" } */ -- 2.47.3