This implements the current working draft contracts including
National Body comment resolutions decided at the Nov 2025 WG21
meeting.

NOTE: There is one part of the implementation that is still to
be finalised:

Since the layout and content of the object passed to the
violation_handler (and any functionality added to support the
construction of such objects) is ABI for platforms that must 
interoperate, it needs to be agreed.  In this case, the practical
extent of this is Itanium ABI platforms. Work is on-going between
the GCC and Clang teams to produce an efficient (and minimal)
interface that can be submitted to the cxxabi group for inclusion.

-----

The work began as a branch by Ville Voutilainen which was then
added to by Nina Ranns and, later still, Iain Sandoe.  The branch
had approximately 300 individual patches that have been squashed
and reorganised into seven implementing the minimal spec and two
that implement (believed useful) functionality permitted, but not
mandated by, the current working draft.

The development did not make use of a GNU-style ChangeLog, but it
would be possible to identify the commits as a git log if that is
felt to be something that can be usefully added.

The branch was used to investigate and inform work on the drafting
of P2900 (the paper that describes the contracts spec); as such some
things have been added and then removed or added, but not presented
here as part of the initial post - either because they are not ready
or not considered to be something that we would recommend as a GNU
extension at this time.

While most of the final code was authored by Nina or Iain, many of
the design suggestions came from Ville (as do some of the follow-on
patches for GNU extensions).  Ville also reviewed most of the
patches on the branch.  The principal authors listed on patches is
somewhat arbitrary.

------

After discussion at the GNU cauldron with Jason, we concluded that
there was no merit in trying to retain operation of the abandoned
C++2a implementation - it is unmaintained and clearly unused since
significant bugs are unreported.

We have elected to remove the C++2a implementation first and then
treat the C++26 implementation as new.  While we attempted to re-
use code where possible, the designs are quite different and to
try and view the new one as a patch on the old would be very
confusing.

The splits in the patches are somewhat uneven
 Base :
 1 - Remove C++2a implementation.
 2 - Add a contract scope (this is a small patch, but is the only
     thing that touches name lookup files).
 3 - The largest patch; which implements the basic model without
     constrification.
 4 - A (possibly temporary) patch that wraps contract failure
     calls to std::terminate() in a no-ipa wrapper. This works
     around BZ-121936 by hiding the no-return.
 5 - Apply constification.  This was kept as a separate patch on
     the basis that it was potentially contentious and might be
     adjusted in National Body resolutions; it seems useful to keep
     it separate for review, even if it will be squashed into the
     main patch for application.
 6 - The base libstdc++ patch (and removal of the C++2a edition).
     Since the ABI is not fully specified, we are continuing to
     provide the functions as part of the "extension" library.
 7 - Testsuite; we have attempted to test each clause in the spec.

 Proposed GNU extensions:
 8 - Allow contract checks to be implemented as outlined functions
     This provides mechanisms to work around some issues that were
     seen when optimisation of contract checks and functions that
     they might call could result in elision of checks.
 9 - Add caller-side contract checks.
     This can, in many cases, ensure that a contract check with a
     decided semantic is applied.

Clerical/merge errors are almost certainly mine.

The code has been regularly tested on Linux and macOS.

The objective is for this to be considered for GCC-16,

thanks
Iain

------------

Iain Sandoe (5):
  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.
  libstdc++, contracts: Add base P2900R14 contracts support.
  c++, contracts: Add tests for base C++26 contracts.

Nina Ranns (4):
  c++, contracts: Work around GCC IPA bug, PR121936 by wrapping
    terminate.
  c++, contracts: Apply P200R14 constification.
  c++, contracts: Allow contract checks as outlined functions.
  c++, contracts: Add caller-side contract checks, and controls.

 gcc/c-family/c-common.cc                      |    1 +
 gcc/c-family/c-common.h                       |    2 +-
 gcc/c-family/c-cppbuiltin.cc                  |    6 +-
 gcc/c-family/c.opt                            |   80 +-
 gcc/config/darwin.h                           |    6 +
 gcc/cp/call.cc                                |   41 +-
 gcc/cp/class.cc                               |    5 +
 gcc/cp/constexpr.cc                           |   19 +-
 gcc/cp/contracts.cc                           | 4201 ++++++++++-------
 gcc/cp/contracts.h                            |  317 +-
 gcc/cp/coroutines.cc                          |    3 -
 gcc/cp/cp-gimplify.cc                         |  179 +-
 gcc/cp/cp-objcp-common.cc                     |   33 -
 gcc/cp/cp-tree.def                            |    6 +-
 gcc/cp/cp-tree.h                              |   60 +-
 gcc/cp/decl.cc                                |  159 +-
 gcc/cp/decl2.cc                               |   27 +-
 gcc/cp/lambda.cc                              |    3 +
 gcc/cp/mangle.cc                              |   34 +-
 gcc/cp/module.cc                              |    9 +-
 gcc/cp/name-lookup.cc                         |    4 +-
 gcc/cp/name-lookup.h                          |    1 +
 gcc/cp/parser.cc                              |  767 +--
 gcc/cp/pt.cc                                  |  128 +-
 gcc/cp/search.cc                              |   26 -
 gcc/cp/semantics.cc                           |   35 +
 gcc/cp/tree.cc                                |   27 +-
 .../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 +
 .../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     |   55 +
 .../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    |  126 +
 .../contracts/cpp26/dcl.contract.func.p6.C    |   21 +
 .../contracts/cpp26/dcl.contract.func.p7.C    |  347 ++
 .../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     |   21 +
 .../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          |   91 +
 .../contracts/cpp26/expr.prim.id.unqual.p7.C  |  114 +
 .../function-contract-specifier-seq-error.C   |   50 +
 .../cpp26/function-contract-specifier-seq.C   |  122 +
 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     |   56 -
 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    |    8 +-
 gcc/testsuite/g++.dg/coroutines/pr110872.C    |    8 +-
 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  |   20 -
 .../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  |    2 +-
 gcc/testsuite/g++.dg/warn/Wkeyword-macro-8.C  |    2 +-
 gcc/tree-core.h                               |    3 +
 libstdc++-v3/include/Makefile.am              |    2 +-
 libstdc++-v3/include/Makefile.in              |    2 +-
 libstdc++-v3/include/experimental/contract    |   83 -
 libstdc++-v3/include/std/contracts            |  111 +
 libstdc++-v3/include/std/source_location      |   10 +
 libstdc++-v3/src/experimental/Makefile.am     |    4 +-
 libstdc++-v3/src/experimental/Makefile.in     |    6 +-
 libstdc++-v3/src/experimental/contract.cc     |   78 -
 libstdc++-v3/src/experimental/contract26.cc   |  154 +
 .../contracts/invoke_default_cvh.cc           |   40 +
 .../contracts/invoke_default_cvh2.cc          |   72 +
 248 files changed, 7637 insertions(+), 9456 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.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.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.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/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.39.5 (Apple Git-154)

Reply via email to