void init_exception_processing (void) { tree tmp; /* void std::terminate (); */ push_namespace (std_identifier); tmp = build_function_type (void_type_node, void_list_node); terminate_node = build_cp_library_fn_ptr ("terminate", tmp); TREE_THIS_VOLATILE (terminate_node) = 1; TREE_NOTHROW (terminate_node) = 1; pop_namespace (); /* void __cxa_call_unexpected(void *); */ tmp = tree_cons (NULL_TREE, ptr_type_node, void_list_node); tmp = build_function_type (void_type_node, tmp); call_unexpected_node = push_throw_library_fn (get_identifier ("__cxa_call_unexpected"), tmp); eh_personality_libfunc = init_one_libfunc (USING_SJLJ_EXCEPTIONS ? "__gxx_personality_sj0" : "__gxx_personality_v0"); lang_eh_runtime_type = build_eh_type_type; lang_protect_cleanup_actions = &cp_protect_cleanup_actions; }
void init_rtti_processing () { push_namespace (std_identifier); type_info_type_node = xref_tag (class_type_node, get_identifier ("type_info"), 1); pop_namespace (); tinfo_decl_type = build_qualified_type (type_info_type_node, TYPE_QUAL_CONST); }
void init_rtti_processing () { push_namespace (std_identifier); type_info_type_node = xref_tag (class_type, get_identifier ("type_info"), /*attributes=*/NULL_TREE, 1); pop_namespace (); type_info_ptr_type = build_pointer_type (build_qualified_type (type_info_type_node, TYPE_QUAL_CONST)); create_tinfo_types (); }
void init_rtti_processing () { if (flag_honor_std) push_namespace (get_identifier ("std")); type_info_type_node = xref_tag (class_type_node, get_identifier ("type_info"), 1); if (flag_honor_std) pop_namespace (); tinfo_fn_id = get_identifier ("__tf"); tinfo_fn_type = build_function_type (build_reference_type (build_qualified_type (type_info_type_node, TYPE_QUAL_CONST)), void_list_node); }
void init_rtti_processing (void) { tree type_info_type; push_namespace (std_identifier); type_info_type = xref_tag (class_type, get_identifier ("type_info"), /*tag_scope=*/ts_current, false); pop_namespace (); const_type_info_type_node = build_qualified_type (type_info_type, TYPE_QUAL_CONST); type_info_ptr_type = build_pointer_type (const_type_info_type_node); unemitted_tinfo_decls = VEC_alloc (tree, 124); create_tinfo_types (); }
void init_exception_processing (void) { tree tmp; /* void std::terminate (); */ push_namespace (std_identifier); tmp = build_function_type_list (void_type_node, NULL_TREE); terminate_node = build_cp_library_fn_ptr ("terminate", tmp); TREE_THIS_VOLATILE (terminate_node) = 1; TREE_NOTHROW (terminate_node) = 1; pop_namespace (); /* void __cxa_call_unexpected(void *); */ tmp = build_function_type_list (void_type_node, ptr_type_node, NULL_TREE); call_unexpected_node = push_throw_library_fn (get_identifier ("__cxa_call_unexpected"), tmp); }
void init_exception_processing (void) { tree tmp; /* void std::terminate (); */ 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 | ECF_COLD); gcc_checking_assert (TREE_THIS_VOLATILE (terminate_fn) && TREE_NOTHROW (terminate_fn)); pop_namespace (); /* void __cxa_call_unexpected(void *); */ tmp = build_function_type_list (void_type_node, ptr_type_node, NULL_TREE); call_unexpected_fn = push_throw_library_fn (get_identifier ("__cxa_call_unexpected"), tmp); }
void init_exception_processing () { /* void vtype () */ tree vtype = build_function_type (void_type_node, void_list_node); if (flag_honor_std) push_namespace (get_identifier ("std")); terminate_node = build_cp_library_fn_ptr ("terminate", vtype); TREE_THIS_VOLATILE (terminate_node) = 1; TREE_NOTHROW (terminate_node) = 1; if (flag_honor_std) pop_namespace (); set_exception_lang_code (EH_LANG_C_plus_plus); set_exception_version_code (1); /* If we use setjmp/longjmp EH, arrange for all cleanup actions to be protected with __terminate. */ protect_cleanup_actions_with_terminate = 1; }