head 1.1; branch 1.1.1; access ; symbols gcc-14-3-0:1.1.1.1 FSF:1.1.1; locks ; strict; comment @# @; 1.1 date 2025.09.13.23.45.49; author mrg; state Exp; branches 1.1.1.1; next ; commitid KwhwN4krNWa6XBaG; 1.1.1.1 date 2025.09.13.23.45.49; author mrg; state Exp; branches ; next ; commitid KwhwN4krNWa6XBaG; desc @@ 1.1 log @Initial revision @ text @// Contracts support header for -*- C++ -*- // Copyright (C) 2019-2024 Free Software Foundation, Inc. // // This file is part of GCC. // // GCC 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. // // GCC 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 // . /** @@file contract * This is a Standard C++ Library header. */ #ifndef _GLIBCXX_CONTRACT #define _GLIBCXX_CONTRACT 1 #pragma GCC system_header #if __cplusplus >= 201703L #include #include namespace std _GLIBCXX_VISIBILITY(default) { _GLIBCXX_BEGIN_NAMESPACE_VERSION namespace experimental { // From P1332 enum class contract_violation_continuation_mode { never_continue, maybe_continue }; class contract_violation { const char* _M_file; const char* _M_function; const char* _M_comment; const char* _M_level; const char* _M_role; uint_least32_t _M_line; signed char _M_continue; public: // From N4820 uint_least32_t line_number() const noexcept { return _M_line; } string_view file_name() const noexcept { return _M_file; } string_view function_name() const noexcept { return _M_function; } string_view comment() const noexcept { return _M_comment; } string_view assertion_level() const noexcept { return _M_level; } // From P1332 string_view assertion_role() const noexcept { return _M_role; } contract_violation_continuation_mode continuation_mode() const noexcept { return static_cast(_M_continue); } }; } // namespace experimental _GLIBCXX_END_NAMESPACE_VERSION } // namespace std // To override the contract violation handler, define //void ::handle_contract_violation (const std::experimental::contract_violation &); #endif // C++17 #endif // _GLIBCXX_CONTRACT @ 1.1.1.1 log @initial import of GCC 14.3.0. major changes in GCC 13: - improved sanitizer - zstd debug info compression - LTO improvements - SARIF based diagnostic support - new warnings: -Wxor-used-as-pow, -Wenum-int-mismatch, -Wself-move, -Wdangling-reference - many new -Wanalyzer* specific warnings - enhanced warnings: -Wpessimizing-move, -Wredundant-move - new attributes to mark file descriptors, c++23 "assume" - several C23 features added - several C++23 features added - many new features for Arm, x86, RISC-V major changes in GCC 14: - more strict C99 or newer support - ia64* marked deprecated (but seemingly still in GCC 15.) - several new hardening features - support for "hardbool", which can have user supplied values of true/false - explicit support for stack scrubbing upon function exit - better auto-vectorisation support - added clang-compatible __has_feature and __has_extension - more C23, including -std=c23 - several C++26 features added - better diagnostics in C++ templates - new warnings: -Wnrvo, Welaborated-enum-base - many new features for Arm, x86, RISC-V - possible ABI breaking change for SPARC64 and small structures with arrays of floats. @ text @@