[gcc r16-7114] libstdc++: Do not allow contract26.cc to build without -fcontracts
Jonathan Wakely
redi@gcc.gnu.org
Wed Jan 28 12:24:07 GMT 2026
https://gcc.gnu.org/g:f362763f626e0ecca072b9ce8a3f89e5c5a114d8
commit r16-7114-gf362763f626e0ecca072b9ce8a3f89e5c5a114d8
Author: Jonathan Wakely <jwakely@redhat.com>
Date: Wed Jan 28 12:17:14 2026 +0000
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:
---
libstdc++-v3/include/std/source_location | 2 +-
libstdc++-v3/src/experimental/contract26.cc | 6 ++++--
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/libstdc++-v3/include/std/source_location b/libstdc++-v3/include/std/source_location
index 3a631c31c1e3..170753fdde2a 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 <const __impl*>(__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 d32a2ca13e2f..007a9fcbf586 100644
--- a/libstdc++-v3/src/experimental/contract26.cc
+++ b/libstdc++-v3/src/experimental/contract26.cc
@@ -25,7 +25,10 @@
#include <contracts>
-#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 <iostream>
# include <cxxabi.h>
@@ -154,4 +157,3 @@ _Z41invoke_default_contract_violation_handlerRKNSt9contracts18contract_violation
{ invoke_default_contract_violation_handler(violation); }
#endif
-#endif // __cpp_lib_contracts
More information about the Libstdc++-cvs
mailing list