mirror of
https://gcc.gnu.org/git/gcc.git
synced 2026-02-22 12:00:03 -05:00
What we need to do here (and, of course, in the code synthesis that produces the objects) needs to be interoperable with other platforms that share ABI. For the present, this means Itanium and to interoperate with clang and libc++. The model we have followed in the development is essentially the same as the model used for the C++2a edition. However there is some concern that the read-only data footprint of this is potentially high and alternate schemes are in discussion with the clang folks. Since the layout of the violation object is ABI let's leave this in experimental until an agreed solution is fixed. Remove the cxx2a support at the same time, GCC no longer supports this mode. libstdc++-v3/ChangeLog: * include/Makefile.am: Add contract include. * include/Makefile.in: Regenerate. * include/bits/version.def: Add ftm for contracts. * include/bits/version.h: Regenerate. * include/precompiled/stdc++.h: Add contracts header. * include/std/source_location: Befriend the contract_violation class so that we can initialise a source_location from an existing __impl *. * src/c++23/std.cc.in: Add contracts support. * src/experimental/Makefile.am: Add new contract violation implementation, remove the old one. * src/experimental/Makefile.in: Regenerate. * include/experimental/contract: Removed. * src/experimental/contract.cc: Removed. * include/std/contracts: New file. * src/experimental/contract26.cc: New file. * testsuite/18_support/contracts/invoke_default_cvh.cc: New test. * testsuite/18_support/contracts/invoke_default_cvh2.cc: New test. Co-Authored-by: Iain Sandoe <iain@sandoe.co.uk> Co-Authored-by: Ville Voutilainen <ville.voutilainen@gmail.com> Signed-off-by: Nina Ranns <dinka.ranns@gmail.com>
245 lines
4.9 KiB
C++
245 lines
4.9 KiB
C++
// C++ includes used for precompiling -*- C++ -*-
|
|
|
|
// Copyright (C) 2003-2026 Free Software Foundation, Inc.
|
|
//
|
|
// This file is part of the GNU ISO C++ Library. This library is free
|
|
// software; you can redistribute it and/or modify it under the
|
|
// terms of the GNU General Public License as published by the
|
|
// Free Software Foundation; either version 3, or (at your option)
|
|
// any later version.
|
|
|
|
// This library is distributed in the hope that it will be useful,
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
// GNU General Public License for more details.
|
|
|
|
// Under Section 7 of GPL version 3, you are granted additional
|
|
// permissions described in the GCC Runtime Library Exception, version
|
|
// 3.1, as published by the Free Software Foundation.
|
|
|
|
// You should have received a copy of the GNU General Public License and
|
|
// a copy of the GCC Runtime Library Exception along with this program;
|
|
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
|
// <http://www.gnu.org/licenses/>.
|
|
|
|
/** @file stdc++.h
|
|
* This is an implementation file for a precompiled header.
|
|
*/
|
|
|
|
// 17.4.1.2 Headers
|
|
|
|
// C
|
|
// Don't include cassert, it's not suitable for PCH or header unit.
|
|
#include <cctype>
|
|
#include <cfloat>
|
|
#include <climits>
|
|
#include <csetjmp>
|
|
#include <cstdarg>
|
|
#include <cstddef>
|
|
#include <cstdlib>
|
|
|
|
#if __cplusplus >= 201103L
|
|
#include <cstdint>
|
|
#if __cplusplus < 201703L
|
|
#include <ciso646>
|
|
#endif
|
|
#endif
|
|
|
|
// C++
|
|
// #include <bitset>
|
|
// #include <complex>
|
|
#include <algorithm>
|
|
#include <bitset>
|
|
#include <functional>
|
|
#include <iterator>
|
|
#include <limits>
|
|
#include <memory>
|
|
#include <new>
|
|
#include <numeric>
|
|
#include <typeinfo>
|
|
#include <utility>
|
|
|
|
#if __cplusplus >= 201103L
|
|
#include <array>
|
|
#include <atomic>
|
|
#include <initializer_list>
|
|
#include <ratio>
|
|
#include <scoped_allocator>
|
|
#include <tuple>
|
|
#include <typeindex>
|
|
#include <type_traits>
|
|
#endif
|
|
|
|
#if __cplusplus >= 201402L
|
|
#endif
|
|
|
|
#if __cplusplus >= 201703L
|
|
#include <any>
|
|
// #include <execution>
|
|
#include <optional>
|
|
#include <variant>
|
|
#include <string_view>
|
|
#endif
|
|
|
|
#if __cplusplus >= 202002L
|
|
#include <bit>
|
|
#include <compare>
|
|
#include <concepts>
|
|
#include <numbers>
|
|
#include <ranges>
|
|
#include <span>
|
|
#include <source_location>
|
|
#include <version>
|
|
#if __cpp_impl_coroutine
|
|
# include <coroutine>
|
|
#endif
|
|
#endif
|
|
|
|
#if __cplusplus > 202002L
|
|
#include <expected>
|
|
#include <stdatomic.h>
|
|
#endif
|
|
|
|
#if _GLIBCXX_HOSTED
|
|
// C
|
|
#include <cctype>
|
|
#include <cerrno>
|
|
#include <cfloat>
|
|
#include <climits>
|
|
#include <clocale>
|
|
#include <cmath>
|
|
#include <csetjmp>
|
|
#include <csignal>
|
|
#include <cstdarg>
|
|
#include <cstddef>
|
|
#include <cstdio>
|
|
#include <cstdlib>
|
|
#include <cstring>
|
|
#include <ctime>
|
|
#include <cwchar>
|
|
#include <cwctype>
|
|
|
|
#if __cplusplus >= 201103L
|
|
#include <cfenv>
|
|
#include <cinttypes>
|
|
#include <cstdint>
|
|
#include <cuchar>
|
|
#if __cplusplus < 201703L
|
|
#include <ccomplex>
|
|
#include <cstdalign>
|
|
#include <cstdbool>
|
|
#include <ctgmath>
|
|
#endif
|
|
#endif
|
|
|
|
// C++
|
|
#include <complex>
|
|
#include <deque>
|
|
#include <exception>
|
|
#include <fstream>
|
|
#include <functional>
|
|
#include <iomanip>
|
|
#include <ios>
|
|
#include <iosfwd>
|
|
#include <iostream>
|
|
#include <istream>
|
|
#include <iterator>
|
|
#include <limits>
|
|
#include <list>
|
|
#include <locale>
|
|
#include <map>
|
|
#include <memory>
|
|
#include <new>
|
|
#include <numeric>
|
|
#include <ostream>
|
|
#include <queue>
|
|
#include <set>
|
|
#include <sstream>
|
|
#include <stack>
|
|
#include <stdexcept>
|
|
#include <streambuf>
|
|
#include <string>
|
|
#include <typeinfo>
|
|
#include <utility>
|
|
#include <valarray>
|
|
#include <vector>
|
|
|
|
#if __cplusplus >= 201103L
|
|
#include <array>
|
|
#include <atomic>
|
|
#include <chrono>
|
|
#include <codecvt>
|
|
#include <condition_variable>
|
|
#include <forward_list>
|
|
#include <future>
|
|
#include <initializer_list>
|
|
#include <mutex>
|
|
#include <random>
|
|
#include <ratio>
|
|
#include <regex>
|
|
#include <scoped_allocator>
|
|
#include <system_error>
|
|
#include <thread>
|
|
#include <tuple>
|
|
#include <typeindex>
|
|
#include <type_traits>
|
|
#include <unordered_map>
|
|
#include <unordered_set>
|
|
#endif
|
|
|
|
#if __cplusplus >= 201402L
|
|
#include <shared_mutex>
|
|
#endif
|
|
|
|
#if __cplusplus >= 201703L
|
|
#include <any>
|
|
#include <charconv>
|
|
// #include <execution>
|
|
#include <filesystem>
|
|
#include <optional>
|
|
#include <memory_resource>
|
|
#include <variant>
|
|
#endif
|
|
|
|
#if __cplusplus >= 202002L
|
|
#include <barrier>
|
|
#include <bit>
|
|
#include <compare>
|
|
#include <concepts>
|
|
#include <format>
|
|
#include <latch>
|
|
#include <numbers>
|
|
#include <ranges>
|
|
#include <span>
|
|
#include <stop_token>
|
|
#include <semaphore>
|
|
#include <source_location>
|
|
#include <syncstream>
|
|
#include <version>
|
|
#endif
|
|
|
|
#if __cplusplus > 202002L
|
|
#include <expected>
|
|
#include <flat_map>
|
|
#include <flat_set>
|
|
#include <generator>
|
|
#include <mdspan>
|
|
#include <print>
|
|
#include <spanstream>
|
|
#include <stacktrace>
|
|
#include <stdatomic.h>
|
|
#include <stdfloat>
|
|
#endif
|
|
|
|
#if __cplusplus > 202302L
|
|
#include <contracts>
|
|
#include <debugging>
|
|
#include <inplace_vector>
|
|
#include <meta>
|
|
#include <text_encoding>
|
|
#include <stdbit.h>
|
|
#include <stdckdint.h>
|
|
#endif
|
|
|
|
#endif // HOSTED
|