aboutsummaryrefslogtreecommitdiff
path: root/gcc/cp/except.c
diff options
context:
space:
mode:
authorJan Hubicka <hubicka@ucw.cz>2017-06-09 20:36:50 +0200
committerJan Hubicka <hubicka@gcc.gnu.org>2017-06-09 18:36:50 +0000
commitcb59f689a37fc39178b9ac5fa595c63b3d7eddc0 (patch)
tree20113d73599fd0ff67d931b5c31ceee4a1749191 /gcc/cp/except.c
parentd225aa745d015e453ae4d47307b486b5c21824fb (diff)
downloadgcc-cb59f689a37fc39178b9ac5fa595c63b3d7eddc0.zip
gcc-cb59f689a37fc39178b9ac5fa595c63b3d7eddc0.tar.gz
gcc-cb59f689a37fc39178b9ac5fa595c63b3d7eddc0.tar.bz2
builtin-attrs.def (ATTR_NORETURN_NOTHROW_LEAF_COLD_LIST, [...]): New.
* builtin-attrs.def (ATTR_NORETURN_NOTHROW_LEAF_COLD_LIST, ATTR_CONST_NORETURN_NOTHROW_LEAF_COLD_LIST, ATTR_TMPURE_NORETURN_NOTHROW_LEAF_COLD_LIST): New. * builtins.def (abort, trap, unreachable): Declare cold. * calls.c (flags_from_decl_or_type): Lookup ECF_COLD. * tree-core.h (ECF_COLD): New. * tree.c (set_call_expr_flags): Handle ECF_COLD. (build_common_builtin_nodes): Mark unreachable and abort as cold. * class.c (build_vtbl_initializer): Mark dvirt_fn as cold. * decl.c (cxx_init_decl_processing, push_throw_library_fn): Likewise. (excpet.c): Mark terminate as cold. * gcc.dg/predict-14.c: Avoid cold function detection. * gcc.target/i386/umod-3.c: Likewise. From-SVN: r249070
Diffstat (limited to 'gcc/cp/except.c')
-rw-r--r--gcc/cp/except.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/gcc/cp/except.c b/gcc/cp/except.c
index 1795e6f..ab7ab5d 100644
--- a/gcc/cp/except.c
+++ b/gcc/cp/except.c
@@ -54,9 +54,10 @@ init_exception_processing (void)
push_namespace (std_identifier);
tmp = build_function_type_list (void_type_node, NULL_TREE);
terminate_fn = build_cp_library_fn_ptr ("terminate", tmp,
- ECF_NOTHROW | ECF_NORETURN);
- TREE_THIS_VOLATILE (terminate_fn) = 1;
- TREE_NOTHROW (terminate_fn) = 1;
+ ECF_NOTHROW | ECF_NORETURN
+ | ECF_COLD);
+ gcc_checking_assert (TREE_THIS_VOLATILE (terminate_fn)
+ && TREE_NOTHROW (terminate_fn));
pop_namespace ();
/* void __cxa_call_unexpected(void *); */