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

--- Comment #3 from GCC Commits <cvs-commit at gcc dot gnu.org> ---
The trunk branch has been updated by Jason Merrill <ja...@gcc.gnu.org>:

https://gcc.gnu.org/g:1914ca8791ce4e0ba821e818cb6f86c76afdb6f2

commit r15-3500-g1914ca8791ce4e0ba821e818cb6f86c76afdb6f2
Author: Jason Merrill <ja...@redhat.com>
Date:   Thu Aug 29 11:09:21 2024 -0400

    c-family: add attribute flag_enum [PR81665]

    Several PRs complain about -Wswitch warning about a case for a bitwise
    combination of enumerators.  Clang has an attribute flag_enum to prevent
    this; let's adopt that approach as well.

    This also recognizes the attribute as [[clang::flag_enum]], introducing
    handling of the clang attribute namespace.

            PR c++/46457
            PR c++/81665

    gcc/c-family/ChangeLog:

            * c-attribs.cc (handle_flag_enum_attribute): New.
            (c_common_gnu_attributes): Add it.
            (c_common_clang_attributes, c_common_clang_attribute_table): New.
            * c-common.h: Declare c_common_clang_attribute_table.
            * c-warn.cc (c_do_switch_warnings): Handle flag_enum.

    gcc/c/ChangeLog:

            * c-objc-common.h (c_objc_attribute_table): Add
            c_common_clang_attribute_table.

    gcc/cp/ChangeLog:

            * cp-objcp-common.h (cp_objcp_attribute_table): Add
            c_common_clang_attribute_table.

    gcc/testsuite/ChangeLog:

            * c-c++-common/attr-flag-enum-1.c: New test.

    gcc/ChangeLog:

            * doc/extend.texi: Document flag_enum attribute.
            * doc/invoke.texi: Mention flag_enum in -Wswitch.

    libstdc++-v3/ChangeLog:

            * include/bits/regex_constants.h: Use flag_enum.

Reply via email to