};
};
+ftms = {
+ name = observable_checkpoint;
+ values = {
+ v = 202506;
+ cxxmin = 26;
+ extra_cond = "__has_builtin(__builtin_observable_checkpoint)";
+ };
+};
+
ftms = {
name = algorithm_default_value_type;
values = {
#endif /* !defined(__cpp_lib_unreachable) */
#undef __glibcxx_want_unreachable
+#if !defined(__cpp_lib_observable_checkpoint)
+# if (__cplusplus > 202302L) && (__has_builtin(__builtin_observable_checkpoint))
+# define __glibcxx_observable_checkpoint 202506L
+# if defined(__glibcxx_want_all) || defined(__glibcxx_want_observable_checkpoint)
+# define __cpp_lib_observable_checkpoint 202506L
+# endif
+# endif
+#endif /* !defined(__cpp_lib_observable_checkpoint) && defined(__glibcxx_want_observable_checkpoint) */
+#undef __glibcxx_want_observable_checkpoint
+
#if !defined(__cpp_lib_algorithm_default_value_type)
# if (__cplusplus > 202302L)
# define __glibcxx_algorithm_default_value_type 202403L
#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>
}
#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
#if __cpp_lib_unreachable
using std::unreachable;
#endif
+#if __cpp_lib_observable_checkpoint
+ using std::observable_checkpoint;
+#endif
}
// <valarray>