aboutsummaryrefslogtreecommitdiff
path: root/libstdc++-v3/include/std/utility
diff options
context:
space:
mode:
Diffstat (limited to 'libstdc++-v3/include/std/utility')
-rw-r--r--libstdc++-v3/include/std/utility19
1 files changed, 19 insertions, 0 deletions
diff --git a/libstdc++-v3/include/std/utility b/libstdc++-v3/include/std/utility
index 8a85ccf..3ae1852 100644
--- a/libstdc++-v3/include/std/utility
+++ b/libstdc++-v3/include/std/utility
@@ -98,6 +98,7 @@
#define __glibcxx_want_tuple_element_t
#define __glibcxx_want_tuples_by_type
#define __glibcxx_want_unreachable
+#define __glibcxx_want_observable_checkpoint
#define __glibcxx_want_tuple_like
#define __glibcxx_want_constrained_equality
#include <bits/version.h>
@@ -234,6 +235,24 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
}
#endif
+
+#ifdef __cpp_lib_observable_checkpoint // C++ >= 26
+ /// Informs the compiler that prior actions are considered observable.
+ /**
+ * This may be used to limit the extent to which optimisations based on the
+ * assumed unreachability of undefined behaviour can propagate to earlier
+ * code.
+ *
+ * @since C++26
+ */
+ [[__gnu__::__always_inline__]]
+ inline void
+ observable_checkpoint() noexcept
+ {
+ return __builtin_observable_checkpoint();
+ }
+#endif
+
_GLIBCXX_END_NAMESPACE_VERSION
} // namespace