From d76ddd9016366158de93dd4cf1fcc2abf8d0704d Mon Sep 17 00:00:00 2001 From: matz Date: Mon, 31 Mar 2003 15:50:53 +0000 Subject: [PATCH] * cppexp.c (cpp_classify_number): Accept '.' after "0x". * testsuite/gcc.dg/cpp/c99-hexfloat-3.c: New file. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@65091 138bc75d-0d04-0410-961f-82ee72b054a4 --- 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 820deea..15df443 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 202b2d0..59a08e9 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 0000000..44c49c9 --- /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.7.4