]> git.ipfire.org Git - thirdparty/gcc.git/commit
c++: Implement C++26 P3920R0 - Wording for NB comment resolution on trivial relocation
authorJakub Jelinek <jakub@redhat.com>
Mon, 10 Nov 2025 11:52:45 +0000 (12:52 +0100)
committerJakub Jelinek <jakub@gcc.gnu.org>
Mon, 10 Nov 2025 11:52:45 +0000 (12:52 +0100)
commitbbd96065fa7e256d03c892d10813cfa4b3e609a8
treec428ea40f417e93ced950df08eed43fe7a17ae57
parent5c8fe56a4ca1ed4df2a26cac152fd86af0ebc713
c++: Implement C++26 P3920R0 - Wording for NB comment resolution on trivial relocation

Trivial relocation was voted out of C++26, the following patch
removes it (note, the libstdc++ part was still waiting for patch review
and so doesn't need to be removed).

This isn't a mere revert of r16-2206; I've kept -Wc++26-compat option,
from earlier patches the non-terminal stays to be class-property-specifier,
and I had to partially revert also various follow-up changes, e.g. for
modules to handle the new flags and test them, for -Wkeyword-macro
etc. to diagnose the conditional keywords or the feature test macro
etc.

2025-11-10  Jakub Jelinek  <jakub@redhat.com>

PR c++/119064
gcc/c-family/
* c-cppbuiltin.cc (c_cpp_builtins): Revert 2025-07-11
changes.
gcc/cp/
* cp-tree.h (struct lang_type): Revert 2025-07-11 changes.
(CLASSTYPE_TRIVIALLY_RELOCATABLE_BIT): Remove.
(CLASSTYPE_TRIVIALLY_RELOCATABLE_COMPUTED): Remove.
(CLASSTYPE_REPLACEABLE_BIT): Remove.
(CLASSTYPE_REPLACEABLE_COMPUTED): Remove.
(enum virt_specifier): Revert 2025-07-11 changes.
(trivially_relocatable_type_p): Remove.
(replaceable_type_p): Remove.
* cp-trait.def (IS_NOTHROW_RELOCATABLE): Remove.
(IS_REPLACEABLE): Remove.
(IS_TRIVIALLY_RELOCATABLE): Remove.
* parser.cc (cp_parser_class_specifier, cp_parser_class_head):
Revert 2025-07-11 changes.
* pt.cc (instantiate_class_template): Likewise.
* semantics.cc (trait_expr_value): Likewise.
(finish_trait_expr): Likewise.
* tree.cc (default_movable_type_p): Remove.
(union_with_no_declared_special_member_fns): Remove.
(trivially_relocatable_type_p): Remove.
(replaceable_type_p): Remove.
* constraint.cc (diagnose_trait_expr): Revert 2025-07-11 changes.
* module.cc (trees_out::lang_type_bools): Revert part of
2025-07-26 changes related to trivial relocatability.
(trees_in::lang_type_bools): Likewise.
* lex.cc (cxx_init): Don't call cpp_warn on
trivially_relocatable_if_eligible and replaceable_if_eligible.
gcc/testsuite/
* g++.dg/cpp26/feat-cxx26.C: Revert 2025-07-11 changes.
* g++.dg/DRs/dr2581-1.C (__cpp_trivial_relocatability): Remove test.
* g++.dg/DRs/dr2581-2.C (__cpp_trivial_relocatability): Likewise.
* g++.dg/warn/Wkeyword-macro-1.C: Don't expect any diagnostics on
#define or #undef of trivially_relocatable_if_eligible or
replaceable_if_eligible.
* g++.dg/warn/Wkeyword-macro-2.C: Likewise.
* g++.dg/warn/Wkeyword-macro-4.C: Likewise.
* g++.dg/warn/Wkeyword-macro-5.C: Likewise.
* g++.dg/warn/Wkeyword-macro-7.C: Likewise.
* g++.dg/warn/Wkeyword-macro-8.C: Likewise.
* g++.dg/cpp26/trivially-relocatable1.C: Remove.
* g++.dg/cpp26/trivially-relocatable2.C: Remove.
* g++.dg/cpp26/trivially-relocatable3.C: Remove.
* g++.dg/cpp26/trivially-relocatable4.C: Remove.
* g++.dg/cpp26/trivially-relocatable5.C: Remove.
* g++.dg/cpp26/trivially-relocatable6.C: Remove.
* g++.dg/cpp26/trivially-relocatable7.C: Remove.
* g++.dg/cpp26/trivially-relocatable8.C: Remove.
* g++.dg/cpp26/trivially-relocatable9.C: Remove.
* g++.dg/cpp26/trivially-relocatable10.C: Remove.
* g++.dg/cpp26/trivially-relocatable11.C: Remove.
* g++.dg/modules/class-11_a.H: Remove trivial relocatability
related parts.
* g++.dg/modules/class-11_b.C: Likewise.
32 files changed:
gcc/c-family/c-cppbuiltin.cc
gcc/cp/constraint.cc
gcc/cp/cp-trait.def
gcc/cp/cp-tree.h
gcc/cp/lex.cc
gcc/cp/module.cc
gcc/cp/parser.cc
gcc/cp/pt.cc
gcc/cp/semantics.cc
gcc/cp/tree.cc
gcc/testsuite/g++.dg/DRs/dr2581-1.C
gcc/testsuite/g++.dg/DRs/dr2581-2.C
gcc/testsuite/g++.dg/cpp26/feat-cxx26.C
gcc/testsuite/g++.dg/cpp26/trivially-relocatable1.C [deleted file]
gcc/testsuite/g++.dg/cpp26/trivially-relocatable10.C [deleted file]
gcc/testsuite/g++.dg/cpp26/trivially-relocatable11.C [deleted file]
gcc/testsuite/g++.dg/cpp26/trivially-relocatable2.C [deleted file]
gcc/testsuite/g++.dg/cpp26/trivially-relocatable3.C [deleted file]
gcc/testsuite/g++.dg/cpp26/trivially-relocatable4.C [deleted file]
gcc/testsuite/g++.dg/cpp26/trivially-relocatable5.C [deleted file]
gcc/testsuite/g++.dg/cpp26/trivially-relocatable6.C [deleted file]
gcc/testsuite/g++.dg/cpp26/trivially-relocatable7.C [deleted file]
gcc/testsuite/g++.dg/cpp26/trivially-relocatable8.C [deleted file]
gcc/testsuite/g++.dg/cpp26/trivially-relocatable9.C [deleted file]
gcc/testsuite/g++.dg/modules/class-11_a.H
gcc/testsuite/g++.dg/modules/class-11_b.C
gcc/testsuite/g++.dg/warn/Wkeyword-macro-1.C
gcc/testsuite/g++.dg/warn/Wkeyword-macro-2.C
gcc/testsuite/g++.dg/warn/Wkeyword-macro-4.C
gcc/testsuite/g++.dg/warn/Wkeyword-macro-5.C
gcc/testsuite/g++.dg/warn/Wkeyword-macro-7.C
gcc/testsuite/g++.dg/warn/Wkeyword-macro-8.C