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

--- Comment #7 from GCC Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Alex Coplan <acop...@gcc.gnu.org>:

https://gcc.gnu.org/g:0d810b7d133c72b7e62b294ffaaf131560ce2391

commit r14-8951-g0d810b7d133c72b7e62b294ffaaf131560ce2391
Author: Alex Coplan <alex.cop...@arm.com>
Date:   Wed Jan 31 14:50:55 2024 +0000

    c++: Don't advertise cxx_constexpr_string_builtins [PR113658]

    When __has_feature was introduced for GCC 14, I included the feature
    cxx_constexpr_string_builtins, since of the relevant string builtins
    that GCC implements, it seems to support constexpr evaluation of those
    builtins.

    However, as the PR shows, GCC doesn't implement the full list of
    builtins in the clang documentation.  After enumerating the builtins,
    the clang docs [1] say:

    > Support for constant expression evaluation for the above builtins can
    > be detected with __has_feature(cxx_constexpr_string_builtins).

    and a strict reading of this would suggest we can't really support
    constexpr evaluation of a builtin if we don't implement the builtin in
    the first place.

    So the conservatively correct thing to do seems to be to stop
    advertising the feature altogether to avoid failing to build code which
    assumes the presence of this feature implies the presence of all the
    builtins listed in the clang documentation.

    [1] : https://clang.llvm.org/docs/LanguageExtensions.html#string-builtins

    gcc/cp/ChangeLog:

            PR c++/113658
            * cp-objcp-common.cc (cp_feature_table): Remove entry for
            cxx_constexpr_string_builtins.

    gcc/testsuite/ChangeLog:

            PR c++/113658
            * g++.dg/ext/has-feature2.C: New test.

Reply via email to