https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67224

--- Comment #31 from Joseph S. Myers <jsm28 at gcc dot gnu.org> ---
Author: jsm28
Date: Thu Sep 19 19:56:11 2019
New Revision: 275979

URL: https://gcc.gnu.org/viewcvs?rev=275979&root=gcc&view=rev
Log:
Support extended characters in C/C++ identifiers (PR c/67224)

libcpp/ChangeLog
2019-09-19  Lewis Hyatt  <lhy...@gmail.com>

        PR c/67224
        * charset.c (_cpp_valid_utf8): New function to help lex UTF-8 tokens.
        * internal.h (_cpp_valid_utf8): Declare.
        * lex.c (forms_identifier_p): Use it to recognize UTF-8 identifiers.
        (_cpp_lex_direct): Handle UTF-8 in identifiers and CPP_OTHER tokens.
        Do all work in "default" case to avoid slowing down typical code paths.
        Also handle $ and UCN in the default case for consistency.

gcc/Changelog
2019-09-19  Lewis Hyatt  <lhy...@gmail.com>

        PR c/67224
        * doc/cpp.texi: Document support for extended characters in
        identifiers.
        * doc/cppopts.texi: Likewise.

gcc/testsuite/ChangeLog
2019-09-19  Lewis Hyatt  <lhy...@gmail.com>

        PR c/67224
        * c-c++-common/cpp/ucnid-2011-1-utf8.c: New test.
        * g++.dg/cpp/ucnid-1-utf8.C: New test.
        * g++.dg/cpp/ucnid-2-utf8.C: New test.
        * g++.dg/cpp/ucnid-3-utf8.C: New test.
        * g++.dg/cpp/ucnid-4-utf8.C: New test.
        * g++.dg/other/ucnid-1-utf8.C: New test.
        * gcc.dg/cpp/ucnid-1-utf8.c: New test.
        * gcc.dg/cpp/ucnid-10-utf8.c: New test.
        * gcc.dg/cpp/ucnid-11-utf8.c: New test.
        * gcc.dg/cpp/ucnid-12-utf8.c: New test.
        * gcc.dg/cpp/ucnid-13-utf8.c: New test.
        * gcc.dg/cpp/ucnid-14-utf8.c: New test.
        * gcc.dg/cpp/ucnid-15-utf8.c: New test.
        * gcc.dg/cpp/ucnid-2-utf8.c: New test.
        * gcc.dg/cpp/ucnid-3-utf8.c: New test.
        * gcc.dg/cpp/ucnid-4-utf8.c: New test.
        * gcc.dg/cpp/ucnid-6-utf8.c: New test.
        * gcc.dg/cpp/ucnid-7-utf8.c: New test.
        * gcc.dg/cpp/ucnid-9-utf8.c: New test.
        * gcc.dg/ucnid-1-utf8.c: New test.
        * gcc.dg/ucnid-10-utf8.c: New test.
        * gcc.dg/ucnid-11-utf8.c: New test.
        * gcc.dg/ucnid-12-utf8.c: New test.
        * gcc.dg/ucnid-13-utf8.c: New test.
        * gcc.dg/ucnid-14-utf8.c: New test.
        * gcc.dg/ucnid-15-utf8.c: New test.
        * gcc.dg/ucnid-16-utf8.c: New test.
        * gcc.dg/ucnid-2-utf8.c: New test.
        * gcc.dg/ucnid-3-utf8.c: New test.
        * gcc.dg/ucnid-4-utf8.c: New test.
        * gcc.dg/ucnid-5-utf8.c: New test.
        * gcc.dg/ucnid-6-utf8.c: New test.
        * gcc.dg/ucnid-7-utf8.c: New test.
        * gcc.dg/ucnid-8-utf8.c: New test.
        * gcc.dg/ucnid-9-utf8.c: New test.

Added:
    trunk/gcc/testsuite/c-c++-common/cpp/ucnid-2011-1-utf8.c
    trunk/gcc/testsuite/g++.dg/cpp/ucnid-1-utf8.C
    trunk/gcc/testsuite/g++.dg/cpp/ucnid-2-utf8.C
    trunk/gcc/testsuite/g++.dg/cpp/ucnid-3-utf8.C
    trunk/gcc/testsuite/g++.dg/cpp/ucnid-4-utf8.C
    trunk/gcc/testsuite/g++.dg/other/ucnid-1-utf8.C
    trunk/gcc/testsuite/gcc.dg/cpp/ucnid-1-utf8.c
    trunk/gcc/testsuite/gcc.dg/cpp/ucnid-10-utf8.c
    trunk/gcc/testsuite/gcc.dg/cpp/ucnid-11-utf8.c
    trunk/gcc/testsuite/gcc.dg/cpp/ucnid-12-utf8.c
    trunk/gcc/testsuite/gcc.dg/cpp/ucnid-13-utf8.c
    trunk/gcc/testsuite/gcc.dg/cpp/ucnid-14-utf8.c
    trunk/gcc/testsuite/gcc.dg/cpp/ucnid-15-utf8.c
    trunk/gcc/testsuite/gcc.dg/cpp/ucnid-2-utf8.c
    trunk/gcc/testsuite/gcc.dg/cpp/ucnid-3-utf8.c
    trunk/gcc/testsuite/gcc.dg/cpp/ucnid-4-utf8.c
    trunk/gcc/testsuite/gcc.dg/cpp/ucnid-6-utf8.c
    trunk/gcc/testsuite/gcc.dg/cpp/ucnid-7-utf8.c
    trunk/gcc/testsuite/gcc.dg/cpp/ucnid-9-utf8.c
    trunk/gcc/testsuite/gcc.dg/ucnid-1-utf8.c
    trunk/gcc/testsuite/gcc.dg/ucnid-10-utf8.c
    trunk/gcc/testsuite/gcc.dg/ucnid-11-utf8.c
    trunk/gcc/testsuite/gcc.dg/ucnid-12-utf8.c
    trunk/gcc/testsuite/gcc.dg/ucnid-13-utf8.c
    trunk/gcc/testsuite/gcc.dg/ucnid-14-utf8.c
    trunk/gcc/testsuite/gcc.dg/ucnid-15-utf8.c
    trunk/gcc/testsuite/gcc.dg/ucnid-16-utf8.c
    trunk/gcc/testsuite/gcc.dg/ucnid-2-utf8.c
    trunk/gcc/testsuite/gcc.dg/ucnid-3-utf8.c
    trunk/gcc/testsuite/gcc.dg/ucnid-4-utf8.c
    trunk/gcc/testsuite/gcc.dg/ucnid-5-utf8.c
    trunk/gcc/testsuite/gcc.dg/ucnid-6-utf8.c
    trunk/gcc/testsuite/gcc.dg/ucnid-7-utf8.c
    trunk/gcc/testsuite/gcc.dg/ucnid-8-utf8.c
    trunk/gcc/testsuite/gcc.dg/ucnid-9-utf8.c
Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/doc/cpp.texi
    trunk/gcc/doc/cppopts.texi
    trunk/gcc/testsuite/ChangeLog
    trunk/libcpp/ChangeLog
    trunk/libcpp/charset.c
    trunk/libcpp/internal.h
    trunk/libcpp/lex.c

Reply via email to