diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 765cc43c43c..6805e68ba8a 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -15,6 +15,8 @@ 2005-03-14 Geoffrey Keating + * gcc.dg/cpp/ucnid-6.c: New. + * gcc.dg/cpp/normalize-1.c: New. * gcc.dg/cpp/normalize-2.c: New. * gcc.dg/cpp/normalize-3.c: New. diff --git a/gcc/testsuite/gcc.dg/cpp/ucnid-6.c b/gcc/testsuite/gcc.dg/cpp/ucnid-6.c new file mode 100644 index 00000000000..9ee0858ddeb --- /dev/null +++ b/gcc/testsuite/gcc.dg/cpp/ucnid-6.c @@ -0,0 +1,5 @@ +/* { dg-do compile } */ +/* { dg-options "-std=c89" } */ +#define a b( +#define b(x) q +int a\u00aa); diff --git a/libcpp/ChangeLog b/libcpp/ChangeLog index 9f4303c221c..043aceed71a 100644 --- a/libcpp/ChangeLog +++ b/libcpp/ChangeLog @@ -1,5 +1,9 @@ 2005-03-14 Geoffrey Keating + * lex.c (forms_identifier_p): Disable UCNs in C89 mode. + +2005-03-14 Geoffrey Keating + * init.c (cpp_create_reader): Default warn_normalize to normalized_C. * charset.c: Update for new format of ucnid.h. (ucn_valid_in_identifier): Update for new format of ucnid.h. diff --git a/libcpp/lex.c b/libcpp/lex.c index 9bcb91c0472..289f7b35033 100644 --- a/libcpp/lex.c +++ b/libcpp/lex.c @@ -476,7 +476,8 @@ forms_identifier_p (cpp_reader *pfile, int first, } /* Is this a syntactically valid UCN? */ - if (*buffer->cur == '\\' + if ((CPP_OPTION (pfile, cplusplus) || CPP_OPTION (pfile, c99)) + && *buffer->cur == '\\' && (buffer->cur[1] == 'u' || buffer->cur[1] == 'U')) { buffer->cur += 2;