[Bug preprocessor/104030] [12 Regression] -Wbidi-chars should not warn about UCNs

cvs-commit at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Mon Jan 24 22:49:28 GMT 2022


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

--- Comment #8 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The trunk branch has been updated by Marek Polacek <mpolacek@gcc.gnu.org>:

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

commit r12-6850-gae36f839632ddb67a53c26e9c7e73b0f56c4c11b
Author: Marek Polacek <polacek@redhat.com>
Date:   Wed Jan 19 19:05:22 2022 -0500

    preprocessor: -Wbidi-chars and UCNs [PR104030]

    Stephan Bergmann reported that our -Wbidi-chars breaks the build
    of LibreOffice because we warn about UCNs even when their usage
    is correct: LibreOffice constructs strings piecewise, as in:

      aText = u"\u202D" + aText;

    and warning about that is overzealous.  Since no editor (AFAIK)
    interprets UCNs to show them as Unicode characters, there's less
    risk in misinterpreting them, and so perhaps we shouldn't warn
    about them by default.  However, identifiers containing UCNs or
    programs generating other programs could still cause confusion,
    so I'm keeping the UCN checking.  To turn it on, you just need
    to use -Wbidi-chars=unpaired,ucn or -Wbidi-chars=any,ucn.

    The implementation is done by using the new EnumSet feature.

            PR preprocessor/104030

    gcc/c-family/ChangeLog:

            * c.opt (Wbidi-chars): Mark as EnumSet.  Also accept =ucn.

    gcc/ChangeLog:

            * doc/invoke.texi: Update documentation for -Wbidi-chars.

    libcpp/ChangeLog:

            * include/cpplib.h (enum cpp_bidirectional_level): Add
            bidirectional_ucn.  Set values explicitly.
            * internal.h (cpp_reader): Adjust warn_bidi_p.
            * lex.cc (maybe_warn_bidi_on_close): Don't warn about UCNs
            unless UCN checking is on.
            (maybe_warn_bidi_on_char): Likewise.

    gcc/testsuite/ChangeLog:

            * c-c++-common/Wbidi-chars-10.c: Turn on UCN checking.
            * c-c++-common/Wbidi-chars-11.c: Likewise.
            * c-c++-common/Wbidi-chars-14.c: Likewise.
            * c-c++-common/Wbidi-chars-16.c: Likewise.
            * c-c++-common/Wbidi-chars-17.c: Likewise.
            * c-c++-common/Wbidi-chars-4.c: Likewise.
            * c-c++-common/Wbidi-chars-5.c: Likewise.
            * c-c++-common/Wbidi-chars-6.c: Likewise.
            * c-c++-common/Wbidi-chars-7.c: Likewise.
            * c-c++-common/Wbidi-chars-8.c: Likewise.
            * c-c++-common/Wbidi-chars-9.c: Likewise.
            * c-c++-common/Wbidi-chars-ranges.c: Likewise.
            * c-c++-common/Wbidi-chars-18.c: New test.
            * c-c++-common/Wbidi-chars-19.c: New test.
            * c-c++-common/Wbidi-chars-20.c: New test.
            * c-c++-common/Wbidi-chars-21.c: New test.
            * c-c++-common/Wbidi-chars-22.c: New test.
            * c-c++-common/Wbidi-chars-23.c: New test.


More information about the Gcc-bugs mailing list