From: Jonathan Wakely Date: Wed, 28 Jan 2026 12:17:14 +0000 (+0000) Subject: libstdc++: Do not allow contract26.cc to build without -fcontracts X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f362763f626e0ecca072b9ce8a3f89e5c5a114d8;p=thirdparty%2Fgcc.git libstdc++: Do not allow contract26.cc to build without -fcontracts It seems prefereable to get a hard error if this file is built incorrectly, rather than failing to define any symbols. libstdc++-v3/ChangeLog: * src/experimental/contract26.cc: Use #error if built without contracts support enabled. * include/std/source_location: Remove stray whitespace. --- diff --git a/libstdc++-v3/include/std/source_location b/libstdc++-v3/include/std/source_location index 3a631c31c1e..170753fdde2 100644 --- a/libstdc++-v3/include/std/source_location +++ b/libstdc++-v3/include/std/source_location @@ -94,7 +94,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION constexpr source_location (const void *__t) : _M_impl (static_cast (__t)) {} - + #ifdef __cpp_lib_contracts /* To enable use of the source __impl*. */ friend class std::contracts::contract_violation; diff --git a/libstdc++-v3/src/experimental/contract26.cc b/libstdc++-v3/src/experimental/contract26.cc index d32a2ca13e2..007a9fcbf58 100644 --- a/libstdc++-v3/src/experimental/contract26.cc +++ b/libstdc++-v3/src/experimental/contract26.cc @@ -25,7 +25,10 @@ #include -#ifdef __cpp_lib_contracts +#ifndef __cpp_lib_contracts +# error "This file requires C++26 contracts support to be enabled" +#endif + #if _GLIBCXX_HOSTED && _GLIBCXX_VERBOSE # include # include @@ -154,4 +157,3 @@ _Z41invoke_default_contract_violation_handlerRKNSt9contracts18contract_violation { invoke_default_contract_violation_handler(violation); } #endif -#endif // __cpp_lib_contracts