This implements the current working draft contracts including
National Body comment resolutions decided at the Nov 2025 WG21
meeting.
Is version 4 OK for trunk?
(I will need to tweak changelogs and update opt-urls before
committing)
thanks
Iain
Iain Sandoe (4):
c++, contracts: Remove the abandoned C++2a implementation.
c++, contracts: Add a contract scope per basic.scope.contract.
c++, contracts: C++26 base implementation as per P2900R14.
c++, contracts: Add tests for C++26 contracts.
Nina Ranns (5):
c++, contracts: Work around GCC IPA bug, PR121936 by wrapping
terminate.
c++, contracts: Apply P200R14 constification.
libstdc++, contracts: Add base P2900R14 contracts support.
c++, contracts: Allow contract checks as outlined functions.
c++, contracts: Add caller-side contract checks, and controls.
gcc/c-family/c-common.cc | 4 +-
gcc/c-family/c-common.h | 5 +
gcc/c-family/c-cppbuiltin.cc | 6 +-
gcc/c-family/c.opt | 76 +-
gcc/config/darwin.h | 6 +
gcc/cp/call.cc | 8 +-
gcc/cp/class.cc | 5 +
gcc/cp/constexpr.cc | 103 +-
gcc/cp/contracts.cc | 4156 ++++++++++-------
gcc/cp/contracts.h | 332 +-
gcc/cp/coroutines.cc | 3 -
gcc/cp/cp-gimplify.cc | 173 +-
gcc/cp/cp-objcp-common.cc | 33 -
gcc/cp/cp-tree.def | 6 +-
gcc/cp/cp-tree.h | 63 +-
gcc/cp/decl.cc | 158 +-
gcc/cp/decl2.cc | 29 +-
gcc/cp/lambda.cc | 3 +
gcc/cp/lex.cc | 6 +-
gcc/cp/mangle.cc | 7 -
gcc/cp/module.cc | 10 +-
gcc/cp/name-lookup.cc | 4 +-
gcc/cp/name-lookup.h | 2 +
gcc/cp/parser.cc | 818 ++--
gcc/cp/pt.cc | 118 +-
gcc/cp/search.cc | 26 -
gcc/cp/semantics.cc | 36 +-
gcc/cp/tree.cc | 95 +-
gcc/doc/invoke.texi | 153 +-
.../contracts/backtrace_handler/Makefile | 13 -
.../g++.dg/contracts/backtrace_handler/README | 12 -
.../backtrace_handler/assert_fail.cpp | 23 -
.../backtrace_handler/example_out.txt | 12 -
.../backtrace_handler/example_pretty.txt | 8 -
.../handle_contract_violation.cpp | 26 -
.../backtrace_handler/prettytrace.sh | 30 -
.../g++.dg/contracts/contracts-access1.C | 129 -
.../g++.dg/contracts/contracts-assume1.C | 30 -
.../g++.dg/contracts/contracts-assume2.C | 35 -
.../g++.dg/contracts/contracts-assume3.C | 20 -
.../g++.dg/contracts/contracts-assume4.C | 20 -
.../g++.dg/contracts/contracts-assume5.C | 34 -
.../g++.dg/contracts/contracts-assume6.C | 61 -
.../g++.dg/contracts/contracts-comdat1.C | 19 -
.../g++.dg/contracts/contracts-config1.C | 47 -
.../g++.dg/contracts/contracts-constexpr1.C | 75 -
.../g++.dg/contracts/contracts-constexpr2.C | 58 -
.../g++.dg/contracts/contracts-constexpr3.C | 10 -
.../g++.dg/contracts/contracts-conversion1.C | 19 -
.../g++.dg/contracts/contracts-ctor-dtor1.C | 177 -
.../g++.dg/contracts/contracts-ctor-dtor2.C | 35 -
.../g++.dg/contracts/contracts-cv1.C | 37 -
.../g++.dg/contracts/contracts-deduced1.C | 108 -
.../g++.dg/contracts/contracts-deduced2.C | 85 -
.../g++.dg/contracts/contracts-err1.C | 7 -
.../g++.dg/contracts/contracts-externC.C | 20 -
.../g++.dg/contracts/contracts-friend1.C | 41 -
.../g++.dg/contracts/contracts-ft1.C | 14 -
.../g++.dg/contracts/contracts-ignore1.C | 30 -
.../g++.dg/contracts/contracts-ignore2.C | 27 -
.../g++.dg/contracts/contracts-large-return.C | 15 -
.../g++.dg/contracts/contracts-multiline1.C | 20 -
.../contracts-multiple-inheritance1.C | 15 -
.../contracts-multiple-inheritance2.C | 33 -
.../contracts/contracts-nested-class1.C | 24 -
.../contracts/contracts-nested-class2.C | 41 -
.../g++.dg/contracts/contracts-nocopy1.C | 24 -
.../g++.dg/contracts/contracts-override.C | 43 -
.../g++.dg/contracts/contracts-post1.C | 74 -
.../g++.dg/contracts/contracts-post2.C | 14 -
.../g++.dg/contracts/contracts-post3.C | 16 -
.../g++.dg/contracts/contracts-post4.C | 36 -
.../g++.dg/contracts/contracts-post5.C | 19 -
.../g++.dg/contracts/contracts-post6.C | 30 -
.../g++.dg/contracts/contracts-post7.C | 30 -
.../g++.dg/contracts/contracts-pre1.C | 36 -
.../g++.dg/contracts/contracts-pre10.C | 217 -
.../g++.dg/contracts/contracts-pre2.C | 213 -
.../g++.dg/contracts/contracts-pre2a1.C | 33 -
.../g++.dg/contracts/contracts-pre2a2.C | 23 -
.../g++.dg/contracts/contracts-pre3.C | 526 ---
.../g++.dg/contracts/contracts-pre4.C | 93 -
.../g++.dg/contracts/contracts-pre5.C | 82 -
.../g++.dg/contracts/contracts-pre6.C | 74 -
.../g++.dg/contracts/contracts-pre7.C | 135 -
.../g++.dg/contracts/contracts-pre9.C | 147 -
.../g++.dg/contracts/contracts-redecl1.C | 149 -
.../g++.dg/contracts/contracts-redecl2.C | 149 -
.../g++.dg/contracts/contracts-redecl3.C | 196 -
.../g++.dg/contracts/contracts-redecl4.C | 57 -
.../g++.dg/contracts/contracts-redecl5.C | 101 -
.../g++.dg/contracts/contracts-redecl6.C | 196 -
.../g++.dg/contracts/contracts-redecl7.C | 96 -
.../g++.dg/contracts/contracts-redecl8.C | 64 -
.../g++.dg/contracts/contracts-tmpl-attr1.C | 19 -
.../g++.dg/contracts/contracts-tmpl-spec1.C | 122 -
.../g++.dg/contracts/contracts-tmpl-spec2.C | 448 --
.../g++.dg/contracts/contracts-tmpl-spec3.C | 51 -
gcc/testsuite/g++.dg/contracts/contracts1.C | 49 -
gcc/testsuite/g++.dg/contracts/contracts10.C | 74 -
gcc/testsuite/g++.dg/contracts/contracts11.C | 103 -
gcc/testsuite/g++.dg/contracts/contracts12.C | 15 -
gcc/testsuite/g++.dg/contracts/contracts13.C | 51 -
gcc/testsuite/g++.dg/contracts/contracts14.C | 59 -
gcc/testsuite/g++.dg/contracts/contracts15.C | 57 -
gcc/testsuite/g++.dg/contracts/contracts16.C | 35 -
gcc/testsuite/g++.dg/contracts/contracts17.C | 36 -
gcc/testsuite/g++.dg/contracts/contracts18.C | 16 -
gcc/testsuite/g++.dg/contracts/contracts19.C | 20 -
gcc/testsuite/g++.dg/contracts/contracts2.C | 14 -
gcc/testsuite/g++.dg/contracts/contracts20.C | 11 -
gcc/testsuite/g++.dg/contracts/contracts22.C | 33 -
gcc/testsuite/g++.dg/contracts/contracts24.C | 16 -
gcc/testsuite/g++.dg/contracts/contracts25.C | 58 -
gcc/testsuite/g++.dg/contracts/contracts3.C | 14 -
gcc/testsuite/g++.dg/contracts/contracts35.C | 48 -
gcc/testsuite/g++.dg/contracts/contracts4.C | 12 -
gcc/testsuite/g++.dg/contracts/contracts5.C | 14 -
gcc/testsuite/g++.dg/contracts/contracts6.C | 12 -
gcc/testsuite/g++.dg/contracts/contracts7.C | 15 -
gcc/testsuite/g++.dg/contracts/contracts8.C | 43 -
gcc/testsuite/g++.dg/contracts/contracts9.C | 54 -
.../cpp26/BZ121936-workaround-noipa.C | 22 +
.../cpp26/assertion-statement-errors.C | 41 +
.../contracts/cpp26/assertion-statement.C | 34 +
.../cpp26/basic.contract.eval.p11-observe.C | 31 +
.../contracts/cpp26/basic.contract.eval.p14.C | 25 +
.../cpp26/basic.contract.eval.p17-2.C | 47 +
.../cpp26/basic.contract.eval.p17-3.C | 58 +
.../cpp26/basic.contract.eval.p17-4.C | 55 +
.../cpp26/basic.contract.eval.p17-5.C | 52 +
.../cpp26/basic.contract.eval.p17-SMF-post.C | 54 +
.../cpp26/basic.contract.eval.p17-SMF-pre.C | 54 +
.../cpp26/basic.contract.eval.p17-SMF2.C | 57 +
.../cpp26/basic.contract.eval.p17-SMF3.C | 56 +
.../cpp26/basic.contract.eval.p17-SMF4.C | 56 +
.../contracts/cpp26/basic.contract.eval.p17.C | 49 +
.../cpp26/basic.contract.eval.p4-error.C | 14 +
.../contracts/cpp26/basic.contract.eval.p4.C | 27 +
.../contracts/cpp26/basic.contract.eval.p6.C | 31 +
.../cpp26/basic.contract.eval.p6.observe.C | 17 +
.../cpp26/basic.contract.eval.p7.3.C | 14 +
.../cpp26/basic.contract.eval.p8-2.C | 12 +
.../contracts/cpp26/basic.contract.eval.p8.C | 12 +
.../contracts/cpp26/basic.scope.contract.p1.C | 42 +
.../cpp26/basic.scope.contract.p2.1.C | 11 +
.../callerside-checks/callerside-checks-all.C | 52 +
.../callerside-checks-non-trivial.C | 18 +
.../callerside-checks-none.C | 64 +
.../callerside-checks/callerside-checks-pre.C | 65 +
.../contracts/cpp26/callerside-checks/ctor.C | 23 +
.../freefunc-noexcept-post.C | 49 +
.../callerside-checks/freefunc-noexcept-pre.C | 49 +
.../contracts/cpp26/contract-assert-run.C | 56 +
.../cpp26/contract-assert-warn-attributes.C | 7 +
.../cpp26/contract-violation-noexcept.C | 112 +
.../cpp26/contract-violation-noexcept2.C | 38 +
.../contracts/cpp26/contract_genericize.C | 49 +
.../contracts/cpp26/contracts-friend1.C | 36 +
.../contracts/cpp26/contracts-nested-class1.C | 23 +
.../contracts/cpp26/contracts-nested-class2.C | 38 +
.../contracts/cpp26/contracts-tmpl-spec2.C | 446 ++
.../contracts/cpp26/dcl.contract.func.p4.C | 138 +
.../contracts/cpp26/dcl.contract.func.p6.C | 21 +
.../contracts/cpp26/dcl.contract.func.p7-t1.C | 161 +
.../contracts/cpp26/dcl.contract.func.p7-t2.C | 157 +
.../contracts/cpp26/dcl.contract.func.p7.C | 335 ++
.../contracts/cpp26/dcl.contract.res.p1-2.C | 69 +
.../contracts/cpp26/dcl.contract.res.p1-NT.C | 146 +
.../contracts/cpp26/dcl.contract.res.p1.C | 23 +
.../contracts/cpp26/dcl.contract.res.p2.C | 25 +
.../g++.dg/contracts/cpp26/debug-and-opt.C | 15 +
.../g++.dg/contracts/cpp26/deferred1.C | 49 +
.../contract-assert-no-def-check.C | 25 +
.../contracts/cpp26/dependent_contract.C | 32 +
.../g++.dg/contracts/cpp26/empty-nt-param.C | 42 +
.../cpp26/expr.prim.id.unqual.p7-2.C | 65 +
.../cpp26/expr.prim.id.unqual.p7-3.C | 55 +
.../cpp26/expr.prim.id.unqual.p7-4.C | 57 +
.../contracts/cpp26/expr.prim.id.unqual.p7.C | 139 +
.../function-contract-specifier-seq-error.C | 50 +
.../cpp26/function-contract-specifier-seq.C | 122 +
.../cpp26/intro.compliance.general.p2.3.4.C | 13 +
gcc/testsuite/g++.dg/contracts/cpp26/lambda.C | 5 +
.../g++.dg/contracts/cpp26/name_mangling.C | 15 +
.../g++.dg/contracts/cpp26/non-trivial-ice.C | 21 +
.../outline-checks/freefunc-noexcept-post.C | 46 +
.../outline-checks/freefunc-noexcept-pre.C | 46 +
.../outline-checks/func-noexcept-assert.C | 55 +
.../outline-checks/memberfunc-noexcept-post.C | 49 +
.../outline-checks/memberfunc-noexcept-pre.C | 49 +
.../contracts/cpp26/over.call.func.p3.1.C | 36 +
.../g++.dg/contracts/cpp26/pr113968.C | 23 +
.../g++.dg/contracts/cpp26/src-loc-0.C | 18 +
.../g++.dg/contracts/cpp26/src-loc-1.C | 18 +
.../g++.dg/contracts/cpp26/src-loc-2.C | 20 +
.../cpp26/throwing-violation-handler.cc | 23 +
.../g++.dg/contracts/cpp26/unused_warning.C | 25 +
gcc/testsuite/g++.dg/contracts/cpp26/vaargs.C | 35 +
.../g++.dg/contracts/cpp2a/check-err.C | 18 +
.../contracts/except_preload_handler/Makefile | 13 -
.../contracts/except_preload_handler/README | 13 -
.../except_preload_handler/assert_fail.cpp | 20 -
.../handle_contract_violation.cpp | 14 -
.../noexcept_preload_handler/Makefile | 13 -
.../contracts/noexcept_preload_handler/README | 15 -
.../noexcept_preload_handler/assert_fail.cpp | 20 -
.../handle_contract_violation.cpp | 14 -
gcc/testsuite/g++.dg/contracts/pr110159.C | 28 -
gcc/testsuite/g++.dg/contracts/pr113968.C | 29 -
gcc/testsuite/g++.dg/contracts/pr115434.C | 17 -
gcc/testsuite/g++.dg/contracts/pr116490.C | 57 -
gcc/testsuite/g++.dg/contracts/pr116607.C | 6 -
gcc/testsuite/g++.dg/contracts/pr117579.C | 9 -
.../g++.dg/contracts/preload_handler/Makefile | 13 -
.../g++.dg/contracts/preload_handler/README | 2 -
.../contracts/preload_handler/assert_fail.cpp | 7 -
.../handle_contract_violation.cpp | 15 -
.../preload_nocontinue_handler/Makefile | 23 -
.../preload_nocontinue_handler/README | 23 -
.../assert_fail.cpp | 10 -
.../handle_contract_violation.cpp | 13 -
.../preload_nocontinue_handler/nocontinue.cpp | 19 -
gcc/testsuite/g++.dg/coroutines/pr110871.C | 10 +-
gcc/testsuite/g++.dg/coroutines/pr110872.C | 13 +-
gcc/testsuite/g++.dg/modules/contracts-1_a.C | 47 -
gcc/testsuite/g++.dg/modules/contracts-1_b.C | 31 -
gcc/testsuite/g++.dg/modules/contracts-2_a.C | 50 -
gcc/testsuite/g++.dg/modules/contracts-2_b.C | 36 -
gcc/testsuite/g++.dg/modules/contracts-2_c.C | 22 -
gcc/testsuite/g++.dg/modules/contracts-3_a.C | 42 -
gcc/testsuite/g++.dg/modules/contracts-3_b.C | 33 -
gcc/testsuite/g++.dg/modules/contracts-4_a.C | 29 -
gcc/testsuite/g++.dg/modules/contracts-4_b.C | 8 -
gcc/testsuite/g++.dg/modules/contracts-4_c.C | 9 -
gcc/testsuite/g++.dg/modules/contracts-4_d.C | 22 -
gcc/testsuite/g++.dg/modules/contracts-5_a.C | 8 -
gcc/testsuite/g++.dg/modules/contracts-5_b.C | 21 -
.../g++.dg/modules/contracts-tpl-friend-1_a.C | 17 -
.../g++.dg/modules/contracts-tpl-friend-1_b.C | 19 -
gcc/testsuite/g++.dg/warn/Wkeyword-macro-1.C | 2 +-
gcc/testsuite/g++.dg/warn/Wkeyword-macro-2.C | 2 +-
gcc/testsuite/g++.dg/warn/Wkeyword-macro-4.C | 2 +-
gcc/testsuite/g++.dg/warn/Wkeyword-macro-5.C | 2 +-
gcc/testsuite/g++.dg/warn/Wkeyword-macro-7.C | 3 +-
gcc/testsuite/g++.dg/warn/Wkeyword-macro-8.C | 3 +-
gcc/tree-core.h | 3 +
gcc/tree.h | 5 +
libstdc++-v3/include/Makefile.am | 2 +-
libstdc++-v3/include/Makefile.in | 2 +-
libstdc++-v3/include/bits/version.def | 9 +
libstdc++-v3/include/bits/version.h | 10 +
libstdc++-v3/include/experimental/contract | 83 -
libstdc++-v3/include/std/contracts | 116 +
libstdc++-v3/include/std/source_location | 14 +
libstdc++-v3/src/experimental/Makefile.am | 8 +-
libstdc++-v3/src/experimental/Makefile.in | 15 +-
libstdc++-v3/src/experimental/contract.cc | 78 -
libstdc++-v3/src/experimental/contract26.cc | 157 +
.../contracts/invoke_default_cvh.cc | 40 +
.../contracts/invoke_default_cvh2.cc | 72 +
261 files changed, 8277 insertions(+), 9624 deletions(-)
delete mode 100644 gcc/testsuite/g++.dg/contracts/backtrace_handler/Makefile
delete mode 100644 gcc/testsuite/g++.dg/contracts/backtrace_handler/README
delete mode 100644
gcc/testsuite/g++.dg/contracts/backtrace_handler/assert_fail.cpp
delete mode 100644
gcc/testsuite/g++.dg/contracts/backtrace_handler/example_out.txt
delete mode 100644
gcc/testsuite/g++.dg/contracts/backtrace_handler/example_pretty.txt
delete mode 100644
gcc/testsuite/g++.dg/contracts/backtrace_handler/handle_contract_violation.cpp
delete mode 100755
gcc/testsuite/g++.dg/contracts/backtrace_handler/prettytrace.sh
delete mode 100644 gcc/testsuite/g++.dg/contracts/contracts-access1.C
delete mode 100644 gcc/testsuite/g++.dg/contracts/contracts-assume1.C
delete mode 100644 gcc/testsuite/g++.dg/contracts/contracts-assume2.C
delete mode 100644 gcc/testsuite/g++.dg/contracts/contracts-assume3.C
delete mode 100644 gcc/testsuite/g++.dg/contracts/contracts-assume4.C
delete mode 100644 gcc/testsuite/g++.dg/contracts/contracts-assume5.C
delete mode 100644 gcc/testsuite/g++.dg/contracts/contracts-assume6.C
delete mode 100644 gcc/testsuite/g++.dg/contracts/contracts-comdat1.C
delete mode 100644 gcc/testsuite/g++.dg/contracts/contracts-config1.C
delete mode 100644 gcc/testsuite/g++.dg/contracts/contracts-constexpr1.C
delete mode 100644 gcc/testsuite/g++.dg/contracts/contracts-constexpr2.C
delete mode 100644 gcc/testsuite/g++.dg/contracts/contracts-constexpr3.C
delete mode 100644 gcc/testsuite/g++.dg/contracts/contracts-conversion1.C
delete mode 100644 gcc/testsuite/g++.dg/contracts/contracts-ctor-dtor1.C
delete mode 100644 gcc/testsuite/g++.dg/contracts/contracts-ctor-dtor2.C
delete mode 100644 gcc/testsuite/g++.dg/contracts/contracts-cv1.C
delete mode 100644 gcc/testsuite/g++.dg/contracts/contracts-deduced1.C
delete mode 100644 gcc/testsuite/g++.dg/contracts/contracts-deduced2.C
delete mode 100644 gcc/testsuite/g++.dg/contracts/contracts-err1.C
delete mode 100644 gcc/testsuite/g++.dg/contracts/contracts-externC.C
delete mode 100644 gcc/testsuite/g++.dg/contracts/contracts-friend1.C
delete mode 100644 gcc/testsuite/g++.dg/contracts/contracts-ft1.C
delete mode 100644 gcc/testsuite/g++.dg/contracts/contracts-ignore1.C
delete mode 100644 gcc/testsuite/g++.dg/contracts/contracts-ignore2.C
delete mode 100644 gcc/testsuite/g++.dg/contracts/contracts-large-return.C
delete mode 100644 gcc/testsuite/g++.dg/contracts/contracts-multiline1.C
delete mode 100644
gcc/testsuite/g++.dg/contracts/contracts-multiple-inheritance1.C
delete mode 100644
gcc/testsuite/g++.dg/contracts/contracts-multiple-inheritance2.C
delete mode 100644 gcc/testsuite/g++.dg/contracts/contracts-nested-class1.C
delete mode 100644 gcc/testsuite/g++.dg/contracts/contracts-nested-class2.C
delete mode 100644 gcc/testsuite/g++.dg/contracts/contracts-nocopy1.C
delete mode 100644 gcc/testsuite/g++.dg/contracts/contracts-override.C
delete mode 100644 gcc/testsuite/g++.dg/contracts/contracts-post1.C
delete mode 100644 gcc/testsuite/g++.dg/contracts/contracts-post2.C
delete mode 100644 gcc/testsuite/g++.dg/contracts/contracts-post3.C
delete mode 100644 gcc/testsuite/g++.dg/contracts/contracts-post4.C
delete mode 100644 gcc/testsuite/g++.dg/contracts/contracts-post5.C
delete mode 100644 gcc/testsuite/g++.dg/contracts/contracts-post6.C
delete mode 100644 gcc/testsuite/g++.dg/contracts/contracts-post7.C
delete mode 100644 gcc/testsuite/g++.dg/contracts/contracts-pre1.C
delete mode 100644 gcc/testsuite/g++.dg/contracts/contracts-pre10.C
delete mode 100644 gcc/testsuite/g++.dg/contracts/contracts-pre2.C
delete mode 100644 gcc/testsuite/g++.dg/contracts/contracts-pre2a1.C
delete mode 100644 gcc/testsuite/g++.dg/contracts/contracts-pre2a2.C
delete mode 100644 gcc/testsuite/g++.dg/contracts/contracts-pre3.C
delete mode 100644 gcc/testsuite/g++.dg/contracts/contracts-pre4.C
delete mode 100644 gcc/testsuite/g++.dg/contracts/contracts-pre5.C
delete mode 100644 gcc/testsuite/g++.dg/contracts/contracts-pre6.C
delete mode 100644 gcc/testsuite/g++.dg/contracts/contracts-pre7.C
delete mode 100644 gcc/testsuite/g++.dg/contracts/contracts-pre9.C
delete mode 100644 gcc/testsuite/g++.dg/contracts/contracts-redecl1.C
delete mode 100644 gcc/testsuite/g++.dg/contracts/contracts-redecl2.C
delete mode 100644 gcc/testsuite/g++.dg/contracts/contracts-redecl3.C
delete mode 100644 gcc/testsuite/g++.dg/contracts/contracts-redecl4.C
delete mode 100644 gcc/testsuite/g++.dg/contracts/contracts-redecl5.C
delete mode 100644 gcc/testsuite/g++.dg/contracts/contracts-redecl6.C
delete mode 100644 gcc/testsuite/g++.dg/contracts/contracts-redecl7.C
delete mode 100644 gcc/testsuite/g++.dg/contracts/contracts-redecl8.C
delete mode 100644 gcc/testsuite/g++.dg/contracts/contracts-tmpl-attr1.C
delete mode 100644 gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec1.C
delete mode 100644 gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec2.C
delete mode 100644 gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec3.C
delete mode 100644 gcc/testsuite/g++.dg/contracts/contracts1.C
delete mode 100644 gcc/testsuite/g++.dg/contracts/contracts10.C
delete mode 100644 gcc/testsuite/g++.dg/contracts/contracts11.C
delete mode 100644 gcc/testsuite/g++.dg/contracts/contracts12.C
delete mode 100644 gcc/testsuite/g++.dg/contracts/contracts13.C
delete mode 100644 gcc/testsuite/g++.dg/contracts/contracts14.C
delete mode 100644 gcc/testsuite/g++.dg/contracts/contracts15.C
delete mode 100644 gcc/testsuite/g++.dg/contracts/contracts16.C
delete mode 100644 gcc/testsuite/g++.dg/contracts/contracts17.C
delete mode 100644 gcc/testsuite/g++.dg/contracts/contracts18.C
delete mode 100644 gcc/testsuite/g++.dg/contracts/contracts19.C
delete mode 100644 gcc/testsuite/g++.dg/contracts/contracts2.C
delete mode 100644 gcc/testsuite/g++.dg/contracts/contracts20.C
delete mode 100644 gcc/testsuite/g++.dg/contracts/contracts22.C
delete mode 100644 gcc/testsuite/g++.dg/contracts/contracts24.C
delete mode 100644 gcc/testsuite/g++.dg/contracts/contracts25.C
delete mode 100644 gcc/testsuite/g++.dg/contracts/contracts3.C
delete mode 100644 gcc/testsuite/g++.dg/contracts/contracts35.C
delete mode 100644 gcc/testsuite/g++.dg/contracts/contracts4.C
delete mode 100644 gcc/testsuite/g++.dg/contracts/contracts5.C
delete mode 100644 gcc/testsuite/g++.dg/contracts/contracts6.C
delete mode 100644 gcc/testsuite/g++.dg/contracts/contracts7.C
delete mode 100644 gcc/testsuite/g++.dg/contracts/contracts8.C
delete mode 100644 gcc/testsuite/g++.dg/contracts/contracts9.C
create mode 100644
gcc/testsuite/g++.dg/contracts/cpp26/BZ121936-workaround-noipa.C
create mode 100644
gcc/testsuite/g++.dg/contracts/cpp26/assertion-statement-errors.C
create mode 100644 gcc/testsuite/g++.dg/contracts/cpp26/assertion-statement.C
create mode 100644
gcc/testsuite/g++.dg/contracts/cpp26/basic.contract.eval.p11-observe.C
create mode 100644
gcc/testsuite/g++.dg/contracts/cpp26/basic.contract.eval.p14.C
create mode 100644
gcc/testsuite/g++.dg/contracts/cpp26/basic.contract.eval.p17-2.C
create mode 100644
gcc/testsuite/g++.dg/contracts/cpp26/basic.contract.eval.p17-3.C
create mode 100644
gcc/testsuite/g++.dg/contracts/cpp26/basic.contract.eval.p17-4.C
create mode 100644
gcc/testsuite/g++.dg/contracts/cpp26/basic.contract.eval.p17-5.C
create mode 100644
gcc/testsuite/g++.dg/contracts/cpp26/basic.contract.eval.p17-SMF-post.C
create mode 100644
gcc/testsuite/g++.dg/contracts/cpp26/basic.contract.eval.p17-SMF-pre.C
create mode 100644
gcc/testsuite/g++.dg/contracts/cpp26/basic.contract.eval.p17-SMF2.C
create mode 100644
gcc/testsuite/g++.dg/contracts/cpp26/basic.contract.eval.p17-SMF3.C
create mode 100644
gcc/testsuite/g++.dg/contracts/cpp26/basic.contract.eval.p17-SMF4.C
create mode 100644
gcc/testsuite/g++.dg/contracts/cpp26/basic.contract.eval.p17.C
create mode 100644
gcc/testsuite/g++.dg/contracts/cpp26/basic.contract.eval.p4-error.C
create mode 100644
gcc/testsuite/g++.dg/contracts/cpp26/basic.contract.eval.p4.C
create mode 100644
gcc/testsuite/g++.dg/contracts/cpp26/basic.contract.eval.p6.C
create mode 100644
gcc/testsuite/g++.dg/contracts/cpp26/basic.contract.eval.p6.observe.C
create mode 100644
gcc/testsuite/g++.dg/contracts/cpp26/basic.contract.eval.p7.3.C
create mode 100644
gcc/testsuite/g++.dg/contracts/cpp26/basic.contract.eval.p8-2.C
create mode 100644
gcc/testsuite/g++.dg/contracts/cpp26/basic.contract.eval.p8.C
create mode 100644
gcc/testsuite/g++.dg/contracts/cpp26/basic.scope.contract.p1.C
create mode 100644
gcc/testsuite/g++.dg/contracts/cpp26/basic.scope.contract.p2.1.C
create mode 100644
gcc/testsuite/g++.dg/contracts/cpp26/callerside-checks/callerside-checks-all.C
create mode 100644
gcc/testsuite/g++.dg/contracts/cpp26/callerside-checks/callerside-checks-non-trivial.C
create mode 100644
gcc/testsuite/g++.dg/contracts/cpp26/callerside-checks/callerside-checks-none.C
create mode 100644
gcc/testsuite/g++.dg/contracts/cpp26/callerside-checks/callerside-checks-pre.C
create mode 100644
gcc/testsuite/g++.dg/contracts/cpp26/callerside-checks/ctor.C
create mode 100644
gcc/testsuite/g++.dg/contracts/cpp26/callerside-checks/freefunc-noexcept-post.C
create mode 100644
gcc/testsuite/g++.dg/contracts/cpp26/callerside-checks/freefunc-noexcept-pre.C
create mode 100644 gcc/testsuite/g++.dg/contracts/cpp26/contract-assert-run.C
create mode 100644
gcc/testsuite/g++.dg/contracts/cpp26/contract-assert-warn-attributes.C
create mode 100644
gcc/testsuite/g++.dg/contracts/cpp26/contract-violation-noexcept.C
create mode 100644
gcc/testsuite/g++.dg/contracts/cpp26/contract-violation-noexcept2.C
create mode 100644 gcc/testsuite/g++.dg/contracts/cpp26/contract_genericize.C
create mode 100644 gcc/testsuite/g++.dg/contracts/cpp26/contracts-friend1.C
create mode 100644
gcc/testsuite/g++.dg/contracts/cpp26/contracts-nested-class1.C
create mode 100644
gcc/testsuite/g++.dg/contracts/cpp26/contracts-nested-class2.C
create mode 100644 gcc/testsuite/g++.dg/contracts/cpp26/contracts-tmpl-spec2.C
create mode 100644 gcc/testsuite/g++.dg/contracts/cpp26/dcl.contract.func.p4.C
create mode 100644 gcc/testsuite/g++.dg/contracts/cpp26/dcl.contract.func.p6.C
create mode 100644
gcc/testsuite/g++.dg/contracts/cpp26/dcl.contract.func.p7-t1.C
create mode 100644
gcc/testsuite/g++.dg/contracts/cpp26/dcl.contract.func.p7-t2.C
create mode 100644 gcc/testsuite/g++.dg/contracts/cpp26/dcl.contract.func.p7.C
create mode 100644 gcc/testsuite/g++.dg/contracts/cpp26/dcl.contract.res.p1-2.C
create mode 100644
gcc/testsuite/g++.dg/contracts/cpp26/dcl.contract.res.p1-NT.C
create mode 100644 gcc/testsuite/g++.dg/contracts/cpp26/dcl.contract.res.p1.C
create mode 100644 gcc/testsuite/g++.dg/contracts/cpp26/dcl.contract.res.p2.C
create mode 100644 gcc/testsuite/g++.dg/contracts/cpp26/debug-and-opt.C
create mode 100644 gcc/testsuite/g++.dg/contracts/cpp26/deferred1.C
create mode 100644
gcc/testsuite/g++.dg/contracts/cpp26/definition-checks/contract-assert-no-def-check.C
create mode 100644 gcc/testsuite/g++.dg/contracts/cpp26/dependent_contract.C
create mode 100644 gcc/testsuite/g++.dg/contracts/cpp26/empty-nt-param.C
create mode 100644
gcc/testsuite/g++.dg/contracts/cpp26/expr.prim.id.unqual.p7-2.C
create mode 100644
gcc/testsuite/g++.dg/contracts/cpp26/expr.prim.id.unqual.p7-3.C
create mode 100644
gcc/testsuite/g++.dg/contracts/cpp26/expr.prim.id.unqual.p7-4.C
create mode 100644
gcc/testsuite/g++.dg/contracts/cpp26/expr.prim.id.unqual.p7.C
create mode 100644
gcc/testsuite/g++.dg/contracts/cpp26/function-contract-specifier-seq-error.C
create mode 100644
gcc/testsuite/g++.dg/contracts/cpp26/function-contract-specifier-seq.C
create mode 100644
gcc/testsuite/g++.dg/contracts/cpp26/intro.compliance.general.p2.3.4.C
create mode 100644 gcc/testsuite/g++.dg/contracts/cpp26/lambda.C
create mode 100644 gcc/testsuite/g++.dg/contracts/cpp26/name_mangling.C
create mode 100644 gcc/testsuite/g++.dg/contracts/cpp26/non-trivial-ice.C
create mode 100644
gcc/testsuite/g++.dg/contracts/cpp26/outline-checks/freefunc-noexcept-post.C
create mode 100644
gcc/testsuite/g++.dg/contracts/cpp26/outline-checks/freefunc-noexcept-pre.C
create mode 100644
gcc/testsuite/g++.dg/contracts/cpp26/outline-checks/func-noexcept-assert.C
create mode 100644
gcc/testsuite/g++.dg/contracts/cpp26/outline-checks/memberfunc-noexcept-post.C
create mode 100644
gcc/testsuite/g++.dg/contracts/cpp26/outline-checks/memberfunc-noexcept-pre.C
create mode 100644 gcc/testsuite/g++.dg/contracts/cpp26/over.call.func.p3.1.C
create mode 100644 gcc/testsuite/g++.dg/contracts/cpp26/pr113968.C
create mode 100644 gcc/testsuite/g++.dg/contracts/cpp26/src-loc-0.C
create mode 100644 gcc/testsuite/g++.dg/contracts/cpp26/src-loc-1.C
create mode 100644 gcc/testsuite/g++.dg/contracts/cpp26/src-loc-2.C
create mode 100644
gcc/testsuite/g++.dg/contracts/cpp26/throwing-violation-handler.cc
create mode 100644 gcc/testsuite/g++.dg/contracts/cpp26/unused_warning.C
create mode 100644 gcc/testsuite/g++.dg/contracts/cpp26/vaargs.C
create mode 100644 gcc/testsuite/g++.dg/contracts/cpp2a/check-err.C
delete mode 100644
gcc/testsuite/g++.dg/contracts/except_preload_handler/Makefile
delete mode 100644 gcc/testsuite/g++.dg/contracts/except_preload_handler/README
delete mode 100644
gcc/testsuite/g++.dg/contracts/except_preload_handler/assert_fail.cpp
delete mode 100644
gcc/testsuite/g++.dg/contracts/except_preload_handler/handle_contract_violation.cpp
delete mode 100644
gcc/testsuite/g++.dg/contracts/noexcept_preload_handler/Makefile
delete mode 100644
gcc/testsuite/g++.dg/contracts/noexcept_preload_handler/README
delete mode 100644
gcc/testsuite/g++.dg/contracts/noexcept_preload_handler/assert_fail.cpp
delete mode 100644
gcc/testsuite/g++.dg/contracts/noexcept_preload_handler/handle_contract_violation.cpp
delete mode 100644 gcc/testsuite/g++.dg/contracts/pr110159.C
delete mode 100644 gcc/testsuite/g++.dg/contracts/pr113968.C
delete mode 100644 gcc/testsuite/g++.dg/contracts/pr115434.C
delete mode 100644 gcc/testsuite/g++.dg/contracts/pr116490.C
delete mode 100644 gcc/testsuite/g++.dg/contracts/pr116607.C
delete mode 100644 gcc/testsuite/g++.dg/contracts/pr117579.C
delete mode 100644 gcc/testsuite/g++.dg/contracts/preload_handler/Makefile
delete mode 100644 gcc/testsuite/g++.dg/contracts/preload_handler/README
delete mode 100644
gcc/testsuite/g++.dg/contracts/preload_handler/assert_fail.cpp
delete mode 100644
gcc/testsuite/g++.dg/contracts/preload_handler/handle_contract_violation.cpp
delete mode 100644
gcc/testsuite/g++.dg/contracts/preload_nocontinue_handler/Makefile
delete mode 100644
gcc/testsuite/g++.dg/contracts/preload_nocontinue_handler/README
delete mode 100644
gcc/testsuite/g++.dg/contracts/preload_nocontinue_handler/assert_fail.cpp
delete mode 100644
gcc/testsuite/g++.dg/contracts/preload_nocontinue_handler/handle_contract_violation.cpp
delete mode 100644
gcc/testsuite/g++.dg/contracts/preload_nocontinue_handler/nocontinue.cpp
delete mode 100644 gcc/testsuite/g++.dg/modules/contracts-1_a.C
delete mode 100644 gcc/testsuite/g++.dg/modules/contracts-1_b.C
delete mode 100644 gcc/testsuite/g++.dg/modules/contracts-2_a.C
delete mode 100644 gcc/testsuite/g++.dg/modules/contracts-2_b.C
delete mode 100644 gcc/testsuite/g++.dg/modules/contracts-2_c.C
delete mode 100644 gcc/testsuite/g++.dg/modules/contracts-3_a.C
delete mode 100644 gcc/testsuite/g++.dg/modules/contracts-3_b.C
delete mode 100644 gcc/testsuite/g++.dg/modules/contracts-4_a.C
delete mode 100644 gcc/testsuite/g++.dg/modules/contracts-4_b.C
delete mode 100644 gcc/testsuite/g++.dg/modules/contracts-4_c.C
delete mode 100644 gcc/testsuite/g++.dg/modules/contracts-4_d.C
delete mode 100644 gcc/testsuite/g++.dg/modules/contracts-5_a.C
delete mode 100644 gcc/testsuite/g++.dg/modules/contracts-5_b.C
delete mode 100644 gcc/testsuite/g++.dg/modules/contracts-tpl-friend-1_a.C
delete mode 100644 gcc/testsuite/g++.dg/modules/contracts-tpl-friend-1_b.C
delete mode 100644 libstdc++-v3/include/experimental/contract
create mode 100644 libstdc++-v3/include/std/contracts
delete mode 100644 libstdc++-v3/src/experimental/contract.cc
create mode 100644 libstdc++-v3/src/experimental/contract26.cc
create mode 100644
libstdc++-v3/testsuite/18_support/contracts/invoke_default_cvh.cc
create mode 100644
libstdc++-v3/testsuite/18_support/contracts/invoke_default_cvh2.cc
--
2.50.1 (Apple Git-155)