aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree.cc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/tree.cc')
-rw-r--r--gcc/tree.cc9
1 files changed, 8 insertions, 1 deletions
diff --git a/gcc/tree.cc b/gcc/tree.cc
index 18abd1f..446261a 100644
--- a/gcc/tree.cc
+++ b/gcc/tree.cc
@@ -10012,7 +10012,7 @@ set_call_expr_flags (tree decl, int flags)
/* Looping const or pure is implied by noreturn.
There is currently no way to declare looping const or looping pure alone. */
gcc_assert (!(flags & ECF_LOOPING_CONST_OR_PURE)
- || ((flags & ECF_NORETURN) && (flags & (ECF_CONST | ECF_PURE))));
+ || (flags & (ECF_CONST | ECF_PURE)));
}
@@ -10057,6 +10057,7 @@ build_common_builtin_nodes (void)
if (!builtin_decl_explicit_p (BUILT_IN_UNREACHABLE)
|| !builtin_decl_explicit_p (BUILT_IN_TRAP)
|| !builtin_decl_explicit_p (BUILT_IN_UNREACHABLE_TRAP)
+ || !builtin_decl_explicit_p (BUILT_IN_OBSERVABLE_CHKPT)
|| !builtin_decl_explicit_p (BUILT_IN_ABORT))
{
ftype = build_function_type (void_type_node, void_list_node);
@@ -10080,6 +10081,12 @@ build_common_builtin_nodes (void)
local_define_builtin ("__builtin_trap", ftype, BUILT_IN_TRAP,
"__builtin_trap",
ECF_NORETURN | ECF_NOTHROW | ECF_LEAF | ECF_COLD);
+ if (!builtin_decl_explicit_p (BUILT_IN_OBSERVABLE_CHKPT))
+ local_define_builtin ("__builtin_observable_checkpoint", ftype,
+ BUILT_IN_OBSERVABLE_CHKPT,
+ "__builtin_observable_checkpoint",
+ ECF_NOTHROW | ECF_LEAF | ECF_CONST
+ | ECF_LOOPING_CONST_OR_PURE);
}
if (!builtin_decl_explicit_p (BUILT_IN_MEMCPY)