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

--- Comment #9 from GCC Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Jakub Jelinek <ja...@gcc.gnu.org>:

https://gcc.gnu.org/g:e020116db056352d9a7495e85d37e66c36f6ea32

commit r15-4403-ge020116db056352d9a7495e85d37e66c36f6ea32
Author: Jakub Jelinek <ja...@redhat.com>
Date:   Thu Oct 17 07:01:44 2024 +0200

    c, libcpp: Partially implement C2Y N3353 paper [PR117028]

    The following patch partially implements the N3353 paper.
    In particular, it adds support for the delimited escape sequences
    (\u{123}, \x{123}, \o{123}) which were added already for C++23,
    all I had to do is split the delimited escape sequence guarding from
    named universal character escape sequence guards
    (\N{LATIN CAPITAL LETTER C WITH CARON}), which C++23 has but C2Y doesn't
    and emit different diagnostics for C from C++ for the delimited escape
    sequences.
    And it adds support for the new style of octal literals, 0o137 or 0O1777.
    I have so far added that just for C and not C++, because I have no idea
    whether C++ will want to handle it similarly.

    What the patch doesn't do is any kind of diagnostics for obsoletion of
    \137 or 0137, as discussed in the PR, I think it is way too early for that.
    Perhaps some non-default warning later on.

    2024-10-17  Jakub Jelinek  <ja...@redhat.com>

            PR c/117028
    libcpp/
            * include/cpplib.h (struct cpp_options): Add named_uc_escape_seqs,
            octal_constants and cpp_warn_c23_c2y_compat members.
            (enum cpp_warning_reason): Add CPP_W_C23_C2Y_COMPAT enumerator.
            * init.cc (struct lang_flags): Add named_uc_escape_seqs and
            octal_constants bit-fields.
            (lang_defaults): Add initializers for them into the table.
            (cpp_set_lang): Initialize named_uc_escape_seqs and
octal_constants.
            (cpp_create_reader): Initialize cpp_warn_c23_c2y_compat to -1.
            * charset.cc (_cpp_valid_ucn): Test
            CPP_OPTION (pfile, named_uc_escape_seqs) rather than
            CPP_OPTION (pfile, delimited_escape_seqs) in \N{} related tests.
            Change wording of C cpp_pedwarning for \u{} and emit
            -Wc23-c2y-compat warning for it too if needed.  Formatting fixes.
            (convert_hex): Change wording of C cpp_pedwarning for \u{} and emit
            -Wc23-c2y-compat warning for it too if needed.
            (convert_oct): Likewise.
            * expr.cc (cpp_classify_number): Handle C2Y 0o or 0O prefixed
            octal constants.
            (cpp_interpret_integer): Likewise.
    gcc/c-family/
            * c.opt (Wc23-c2y-compat): Add CPP and CppReason parameters.
            * c-opts.cc (set_std_c2y): Use CLK_STDC2Y or CLK_GNUC2Y rather
            than CLK_STDC23 and CLK_GNUC23.  Formatting fix.
            * c-lex.cc (interpret_integer): Handle C2Y 0o or 0O prefixed
            and wb/WB/uwb/UWB suffixed octal constants.
    gcc/testsuite/
            * gcc.dg/bitint-112.c: New test.
            * gcc.dg/c23-digit-separators-1.c: Add _Static_assert for
            valid binary constant with digit separator.
            * gcc.dg/c23-octal-constants-1.c: New test.
            * gcc.dg/c23-octal-constants-2.c: New test.
            * gcc.dg/c2y-digit-separators-1.c: New test.
            * gcc.dg/c2y-digit-separators-2.c: New test.
            * gcc.dg/c2y-octal-constants-1.c: New test.
            * gcc.dg/c2y-octal-constants-2.c: New test.
            * gcc.dg/c2y-octal-constants-3.c: New test.
            * gcc.dg/cpp/c23-delimited-escape-seq-1.c: New test.
            * gcc.dg/cpp/c23-delimited-escape-seq-2.c: New test.
            * gcc.dg/cpp/c2y-delimited-escape-seq-1.c: New test.
            * gcc.dg/cpp/c2y-delimited-escape-seq-2.c: New test.
            * gcc.dg/cpp/c2y-delimited-escape-seq-3.c: New test.
            * gcc.dg/cpp/c2y-delimited-escape-seq-4.c: New test.
            * gcc.dg/octal-constants-1.c: New test.
            * gcc.dg/octal-constants-2.c: New test.
            * gcc.dg/octal-constants-3.c: New test.
            * gcc.dg/octal-constants-4.c: New test.
            * gcc.dg/system-octal-constants-1.c: New test.
            * gcc.dg/system-octal-constants-1.h: New file.

Reply via email to