#include "config.h"#include "system.h"#include "rtl.h"#include "tree.h"#include "flags.h"#include "function.h"#include "expr.h"#include "libfuncs.h"#include "insn-config.h"#include "except.h"#include "integrate.h"#include "hard-reg-set.h"#include "basic-block.h"#include "output.h"#include "dwarf2asm.h"#include "dwarf2out.h"#include "dwarf2.h"#include "toplev.h"#include "hashtab.h"#include "intl.h"#include "ggc.h"#include "tm_p.h"#include "target.h"#include "langhooks.h"#include "gt-except.h"

Go to the source code of this file.
| enum reachable_code |
Definition at line 3187 of file except.c.
References action_record::filter, and action_record::next.
Referenced by convert_to_eh_region_ranges(), and sjlj_assign_call_site_values().
Definition at line 3197 of file except.c.
References action_record::filter, and action_record::next.
Referenced by convert_to_eh_region_ranges(), and sjlj_assign_call_site_values().
| static int add_action_record | ( | htab_t | ar_hash, | |
| int | filter, | |||
| int | next | |||
| ) | [static] |
Definition at line 3205 of file except.c.
References cfun, action_record::filter, htab_find_slot(), INSERT, action_record::next, NULL, push_sleb128(), tmp, VARRAY_ACTIVE_SIZE, and xmalloc().
Referenced by collect_one_action_chain().
| static int add_call_site | ( | rtx | landing_pad, | |
| int | action | |||
| ) | [static] |
Definition at line 3341 of file except.c.
References call_site_base, cfun, ggc_realloc, and size.
Referenced by convert_to_eh_region_ranges(), and sjlj_assign_call_site_values().
Definition at line 1205 of file except.c.
References abort, cfun, ggc_alloc, htab_find_slot(), INSERT, and LABEL_PRESERVE_P.
Referenced by find_exception_handler_labels().
Definition at line 1582 of file except.c.
References add_ttypes_entry(), cfun, htab_find_slot(), INSERT, n, NULL, push_uleb128(), TREE_CHAIN, TREE_VALUE, VARRAY_ACTIVE_SIZE, VARRAY_PUSH_UCHAR, and xmalloc().
Referenced by assign_filter_values().
| static void add_reachable_handler | ( | struct reachable_info * | info, | |
| struct eh_region * | lp_region, | |||
| struct eh_region * | region | |||
| ) | [static] |
Definition at line 2576 of file except.c.
References alloc_INSN_LIST(), cfun, and NULL_RTX.
Referenced by reachable_next_level().
Definition at line 1554 of file except.c.
References cfun, htab_find_slot_with_hash(), INSERT, n, NULL, TYPE_HASH, VARRAY_ACTIVE_SIZE, VARRAY_PUSH_TREE, and xmalloc().
Referenced by add_ehspec_entry(), and assign_filter_values().
Definition at line 1461 of file except.c.
References htab_find_slot_with_hash(), INSERT, NULL, NULL_TREE, runtime, tree_cons, and TYPE_HASH.
Referenced by expand_eh_region_end_allowed(), expand_start_catch(), gen_eh_region_allowed(), and gen_eh_region_catch().
Definition at line 1620 of file except.c.
References add_ehspec_entry(), add_ttypes_entry(), build_int_2, cfun, ehspec_filter_eq(), ehspec_filter_hash(), free(), htab_create(), htab_delete(), i, NULL, NULL_TREE, r, TREE_CHAIN, tree_cons, TREE_VALUE, ttypes_filter_eq(), ttypes_filter_hash(), VARRAY_TREE_INIT, and VARRAY_UCHAR_INIT.
Referenced by finish_eh_generation().
Definition at line 1689 of file except.c.
References abort, c, cfun, emit_barrier(), emit_cmp_and_jump_insns(), emit_insn_before(), emit_jump(), emit_jump_insn(), emit_label(), end_sequence(), EQ, GEN_INT, gen_label_rtx(), gen_rtx_RESX, get_insns(), i, NULL, NULL_RTX, region, start_sequence(), TREE_CHAIN, tree_low_cst(), TREE_VALUE, and word_mode.
Referenced by finish_eh_generation().
Definition at line 2884 of file except.c.
Referenced by can_throw_external(), and set_nothrow_function_flags().
Definition at line 2823 of file except.c.
Referenced by can_throw_internal(), compute_defs_uses_and_gen(), control_flow_insn_p(), df_ri_bb_compute(), find_dead_or_set_registers(), find_invariant_insn(), fixup_abnormal_edges(), insert_stores(), merge_if_block(), move_btr_def(), perhaps_ends_bb_p(), prescan_loop(), propagate_one_insn(), purge_dead_edges(), reload(), sched_analyze_insn(), and update_equiv_regs().
Definition at line 2545 of file except.c.
References lang_eh_type_covers, TREE_CHAIN, and TREE_VALUE.
Referenced by reachable_next_level().
Definition at line 903 of file except.c.
References cfun, ggc_alloc_cleared, i, and NULL.
Referenced by convert_from_eh_region_ranges(), and lower_eh_constructs().
Definition at line 3238 of file except.c.
References abort, add_action_record(), c, filter(), NULL, TREE_CHAIN, TREE_INT_CST_LOW, and TREE_VALUE.
Referenced by collect_one_action_chain(), convert_to_eh_region_ranges(), and sjlj_assign_call_site_values().
Definition at line 1805 of file except.c.
References cfun, delete_insn(), emit_insn_before(), emit_jump(), emit_library_call(), end_sequence(), get_insns(), i, INSN_DELETED_P, LCT_THROW, ptr_mode, region, start_sequence(), and unwind_resume_libfunc.
Referenced by finish_eh_generation().
Definition at line 1187 of file except.c.
Referenced by rest_of_compilation(), and tree_expand_cfg().
Definition at line 1103 of file except.c.
References abort, alloc_EXPR_LIST(), cfun, find_reg_note(), flag_non_call_exceptions, GEN_INT, GET_CODE, insn, INSN_P, may_trap_p(), next, NEXT_INSN, NOTE_EH_HANDLER, NOTE_INSN_EH_REGION_BEG, NOTE_INSN_EH_REGION_END, NOTE_LINE_NUMBER, NULL_RTX, PATTERN, r, REG_EH_REGION, REG_NOTES, remove_insn(), sp, USE, and XEXP.
Referenced by convert_from_eh_region_ranges(), and convert_from_eh_region_ranges_1().
Definition at line 1272 of file except.c.
Referenced by optimize_sibling_and_tail_recursive_calls(), and suitable_for_tail_call_opt_p().
| int doing_eh | ( | int | do_warn | ) |
Definition at line 365 of file except.c.
Referenced by build_throw(), expand_eh_region_end_allowed(), expand_eh_region_end_cleanup(), expand_eh_region_end_fixup(), expand_eh_region_end_must_not_throw(), expand_eh_region_end_throw(), expand_eh_region_start(), expand_end_all_catch(), expand_end_catch(), expand_end_catch_block(), expand_start_all_catch(), expand_start_catch(), expand_start_catch_block(), gate_handle_eh(), gen_eh_region(), maybe_end_try(), maybe_start_try(), rest_of_compilation(), and rest_of_handle_eh().
| static struct eh_region* duplicate_eh_region_1 | ( | struct eh_region * | o, | |
| struct inline_remap * | map | |||
| ) | [static, read] |
Definition at line 1290 of file except.c.
References abort, cfun, CODE_LABEL_NUMBER, get_label_from_map(), ggc_alloc_cleared, inline_remap::insn_map, INSN_UID, n, and NULL.
Referenced by duplicate_eh_regions().
| int duplicate_eh_regions | ( | struct function * | ifun, | |
| struct inline_remap * | map | |||
| ) |
Definition at line 1374 of file except.c.
References cfun, cur, duplicate_eh_region_1(), duplicate_eh_region_2(), free(), i, NULL, p, root, and xcalloc().
Referenced by copy_cfg_body(), expand_inline_function(), and move_sese_region_to_fn().
Definition at line 1846 of file except.c.
References call_used_regs, cfun, EH_RETURN_DATA_REGNO, emit_insn(), emit_insn_before(), emit_label(), emit_move_insn(), end_sequence(), gen_exception_receiver(), gen_label_rtx(), gen_rtx_ASM_INPUT, gen_rtx_CLOBBER, gen_rtx_REG(), get_insns(), HAVE_exception_receiver, i, INVALID_REGNUM, Pmode, ptr_mode, r, region, start_sequence(), and word_mode.
Referenced by finish_eh_generation().
Definition at line 3568 of file except.c.
References ASM_GENERATE_INTERNAL_LABEL, call_site_base, cfun, CODE_LABEL_NUMBER, cs, current_function_func_begin_label, dw2_asm_output_data(), dw2_asm_output_data_uleb128(), dw2_asm_output_delta(), dw2_asm_output_delta_uleb128(), i, IDENTIFIER_POINTER, and n.
Referenced by output_function_exception_table().
| static int dw2_size_of_call_site_table | ( | void | ) | [static] |
Definition at line 3534 of file except.c.
References cfun, cs, i, n, size, and size_of_uleb128().
Referenced by output_function_exception_table().
Definition at line 2335 of file except.c.
References CODE_LABEL_NUMBER.
Referenced by find_exception_handler_labels().
Definition at line 1525 of file except.c.
References type_list_equal().
Referenced by assign_filter_values().
Definition at line 1538 of file except.c.
References h, TREE_CHAIN, TREE_VALUE, and TYPE_HASH.
Referenced by assign_filter_values().
Definition at line 3095 of file except.c.
References cfun, convert_memory_address(), copy_to_reg(), emit_jump(), emit_move_insn(), expand_expr(), gen_label_rtx(), GET_MODE, Pmode, and tmp.
Referenced by expand_builtin().
Definition at line 522 of file except.c.
References cfun, emit_note(), NOTE_EH_HANDLER, NOTE_INSN_EH_REGION_END, and NULL.
Referenced by expand_eh_region_end_allowed(), expand_eh_region_end_cleanup(), expand_eh_region_end_fixup(), expand_eh_region_end_must_not_throw(), expand_eh_region_end_throw(), expand_end_catch(), and expand_start_all_catch().
Definition at line 717 of file except.c.
References add_type_for_runtime(), const0_rtx, do_pending_stack_adjust(), doing_eh(), emit_jump(), emit_label(), expand_eh_region_end(), expand_expr(), EXPAND_NORMAL, gen_label_rtx(), region, TREE_CHAIN, and TREE_VALUE.
Referenced by genrtl_eh_spec_block().
Definition at line 541 of file except.c.
References cfun, const0_rtx, do_pending_stack_adjust(), doing_eh(), emit_barrier(), emit_jump(), emit_jump_insn(), emit_label(), emit_move_insn(), expand_eh_region_end(), expand_eh_region_end_must_not_throw(), expand_eh_region_start(), expand_expr(), flag_non_call_exceptions, gen_label_rtx(), gen_reg_rtx(), gen_rtx_RESX, get_exception_filter(), get_exception_pointer(), lang_protect_cleanup_actions, NULL_TREE, ptr_mode, region, and word_mode.
Referenced by expand_cleanups(), expand_expr(), and genrtl_try_block().
Definition at line 835 of file except.c.
References doing_eh(), and expand_eh_region_end().
Referenced by expand_cleanups().
Definition at line 780 of file except.c.
References const0_rtx, doing_eh(), emit_jump(), emit_label(), expand_eh_region_end(), expand_expr(), EXPAND_NORMAL, gen_label_rtx(), and region.
Referenced by cxx_expand_expr(), and expand_eh_region_end_cleanup().
| void expand_eh_region_start | ( | ) |
Definition at line 488 of file except.c.
References cfun, doing_eh(), emit_note(), ggc_alloc_cleared, NOTE_EH_HANDLER, NOTE_INSN_EH_REGION_BEG, and NULL.
Referenced by cxx_expand_expr(), expand_cleanups(), expand_decl_cleanup(), expand_eh_region_end_cleanup(), expand_expr(), expand_start_catch(), expand_start_java_handler(), genrtl_eh_spec_block(), genrtl_try_block(), and java_lang_expand_expr().
| void expand_end_all_catch | ( | ) |
Definition at line 695 of file except.c.
References cfun, doing_eh(), and emit_label().
Referenced by expand_end_java_handler(), genrtl_try_block(), and java_lang_expand_expr().
| void expand_end_catch | ( | ) |
Definition at line 679 of file except.c.
References cfun, doing_eh(), emit_jump(), and expand_eh_region_end().
Referenced by expand_end_java_handler(), genrtl_handler(), and java_lang_expand_expr().
| void expand_start_all_catch | ( | ) |
Definition at line 608 of file except.c.
References cfun, doing_eh(), emit_jump(), expand_eh_region_end(), gen_label_rtx(), and region.
Referenced by expand_end_java_handler(), genrtl_try_block(), and java_lang_expand_expr().
Definition at line 631 of file except.c.
References add_type_for_runtime(), c, cfun, doing_eh(), emit_label(), expand_eh_region_start(), gen_label_rtx(), NULL_TREE, TREE_CHAIN, TREE_CODE, tree_cons, and TREE_VALUE.
Referenced by expand_end_java_handler(), genrtl_handler(), and java_lang_expand_expr().
Definition at line 1231 of file except.c.
Referenced by finish_eh_generation(), rest_of_compilation(), and tree_expand_cfg().
Definition at line 2293 of file except.c.
Referenced by rest_of_compilation(), and rest_of_handle_eh().
| void for_each_eh_label | ( | callback | ) |
Definition at line 2512 of file except.c.
References callback(), cfun, for_each_eh_label_1(), and htab_traverse().
Referenced by find_and_verify_loops(), and set_initial_label_offsets().
Definition at line 2520 of file except.c.
References callback(), PARAMS, and void.
Referenced by for_each_eh_label().
Definition at line 884 of file except.c.
References cfun, filter(), gen_reg_rtx(), and word_mode.
Referenced by expand_eh_region_end_cleanup(), expand_expr_real_1(), and finish_eh_generation().
Definition at line 868 of file except.c.
Referenced by expand_eh_region_end_cleanup(), expand_expr(), expand_expr_real_1(), expand_inline_function(), and finish_eh_generation().
| static GTY | ( | (param_is(union tree_node)) | ) | [static] |
| struct ehl_map_entry GTY | ( | () | ) | [read, write] |
Definition at line 477 of file except.c.
Referenced by allocate_struct_function(), copy_cfg_body(), move_sese_region_to_fn(), and prepare_function_start().
Definition at line 1476 of file except.c.
References htab_find_slot_with_hash(), NO_INSERT, TREE_VALUE, and TYPE_HASH.
Referenced by output_function_exception_table(), and output_ttype().
Definition at line 2473 of file except.c.
Referenced by cfg_layout_merge_blocks(), flow_delete_block_noexpunge(), rtl_delete_block(), and rtl_merge_blocks().
| void note_eh_region_may_contain_throw | ( | ) |
Definition at line 852 of file except.c.
Referenced by emit_call_1(), lower_eh_constructs_1(), and note_current_region_may_contain_throw().
Definition at line 3665 of file except.c.
Referenced by rest_of_compilation(), and rest_of_handle_final().
| static void push_sleb128 PARAMS | ( | (varray_type *, int) | ) | [static] |
| static void push_uleb128 PARAMS | ( | (varray_type *, unsigned int) | ) | [static] |
| static int add_call_site PARAMS | ( | (rtx, int) | ) | [static] |
| static int add_action_record PARAMS | ( | (htab_t, int, int) | ) | [static] |
| static enum reachable_code reachable_next_level PARAMS | ( | (struct eh_region *, tree, struct reachable_info *) | ) | [static] |
| static void add_reachable_handler PARAMS | ( | (struct reachable_info *, struct eh_region *, struct eh_region *) | ) | [static] |
| static void sjlj_assign_call_site_values PARAMS | ( | (rtx, struct sjlj_lp_info *) | ) | [static] |
| static bool sjlj_find_directly_reachable_regions PARAMS | ( | (struct sjlj_lp_info *) | ) | [static] |
| static struct eh_region* duplicate_eh_region_1 PARAMS | ( | (struct eh_region *, struct inline_remap *) | ) | [static, read] |
| tree lang_eh_runtime_type PARAMS | ( | (tree) | ) |
| int lang_eh_type_covers PARAMS | ( | (tree a, tree b) | ) |
| tree lang_protect_cleanup_actions PARAMS | ( | (void) | ) | [read] |
Definition at line 77 of file cplus-dem.c.
| static void push_sleb128 | ( | varray_type * | data_area, | |
| int | value | |||
| ) | [static] |
Definition at line 3511 of file except.c.
References VARRAY_PUSH_UCHAR.
Referenced by add_action_record().
| static void push_uleb128 | ( | varray_type * | data_area, | |
| unsigned int | value | |||
| ) | [static] |
Definition at line 3495 of file except.c.
References VARRAY_PUSH_UCHAR.
Referenced by add_ehspec_entry().
| static enum reachable_code reachable_next_level | ( | struct eh_region * | region, | |
| tree | type_thrown, | |||
| struct reachable_info * | info | |||
| ) | [static] |
Definition at line 2599 of file except.c.
References abort, add_reachable_handler(), c, check_handled(), lang_eh_type_covers, NULL, NULL_TREE, ret, RNL_BLOCKED, RNL_CAUGHT, RNL_MAYBE_CAUGHT, RNL_NOT_CAUGHT, TREE_CHAIN, tree_cons, TREE_VALUE, reachable_info::types_allowed, and reachable_info::types_caught.
Referenced by can_throw_external(), can_throw_external_1(), can_throw_internal(), can_throw_internal_1(), foreach_reachable_handler(), reachable_handlers(), and sjlj_find_directly_reachable_regions().
Definition at line 2383 of file except.c.
References cfun, EXECUTE_IF_SET_IN_BITMAP, i, lab, and p.
Referenced by connect_post_landing_pads(), maybe_remove_eh_handler(), remove_eh_handler(), remove_fixup_regions(), and remove_unreachable_regions().
Definition at line 2361 of file except.c.
References abort, cfun, htab_clear_slot(), htab_find_slot(), NO_INSERT, NULL, and tmp.
Referenced by remove_eh_handler().
| static void remove_fixup_regions | ( | ) | [static] |
Definition at line 969 of file except.c.
References cfun, find_reg_note(), GEN_INT, get_insns(), i, insn, INSN_P, INTVAL, NEXT_INSN, NULL, NULL_TREE, p, REG_EH_REGION, remove_eh_handler(), remove_note(), bfd_link_order::u, and XEXP.
Referenced by convert_from_eh_region_ranges().
Definition at line 1039 of file except.c.
References abort, cfun, free(), get_max_uid(), i, insn, INSN_UID, NEXT_INSN, r, remove_eh_handler(), and xcalloc().
Referenced by convert_from_eh_region_ranges().
| static void resolve_fixup_regions | ( | ) | [static] |
| static void sjlj_assign_call_site_values | ( | rtx | dispatch_label, | |
| struct sjlj_lp_info * | lp_info | |||
| ) | [static] |
Definition at line 1978 of file except.c.
References sjlj_lp_info::action_index, action_record_eq(), action_record_hash(), add_call_site(), call_site_base, sjlj_lp_info::call_site_index, cfun, collect_one_action_chain(), sjlj_lp_info::dispatch_index, free(), GEN_INT, htab_create(), htab_delete(), i, index(), r, and VARRAY_UCHAR_INIT.
Referenced by sjlj_build_landing_pads().
Definition at line 2265 of file except.c.
References assign_stack_local(), cfun, free(), gen_label_rtx(), int_size_in_bytes(), sjlj_assign_call_site_values(), sjlj_emit_dispatch_table(), sjlj_emit_function_enter(), sjlj_emit_function_exit(), sjlj_find_directly_reachable_regions(), sjlj_mark_call_sites(), TYPE_ALIGN, TYPE_MODE, and xcalloc().
Referenced by finish_eh_generation().
| static void sjlj_emit_dispatch_table | ( | rtx | dispatch_label, | |
| struct sjlj_lp_info * | lp_info | |||
| ) | [static] |
Definition at line 2200 of file except.c.
References adjust_address, cfun, convert_memory_address(), convert_to_mode(), copy_to_reg(), emit_cmp_and_jump_insns(), emit_insn_before(), emit_label(), emit_move_insn(), end_sequence(), EQ, expand_builtin_setjmp_receiver(), GEN_INT, get_insns(), i, integer_type_node, mem, NULL_RTX, Pmode, start_sequence(), TYPE_MODE, UNITS_PER_WORD, and word_mode.
Referenced by sjlj_build_landing_pads().
Definition at line 2107 of file except.c.
References adjust_address, ASM_GENERATE_INTERNAL_LABEL, assemble_external_libcall(), buf, cfun, const0_rtx, current_function_funcdef_no, eh_personality_libfunc, emit_cmp_and_jump_insns(), emit_insn_after(), emit_library_call(), emit_library_call_value(), emit_move_insn(), emit_note(), end_sequence(), expand_builtin_setjmp_setup(), gen_rtx_EQ, gen_rtx_SYMBOL_REF, GET_CODE, get_insns(), ggc_strdup, integer_type_node, LCT_NORMAL, LCT_RETURNS_TWICE, mem, NE, NEXT_INSN, NOTE_EXPECTED_VALUE, NOTE_INSN_EXPECTED_VALUE, NOTE_INSN_FUNCTION_BEG, NOTE_LINE_NUMBER, NULL, NULL_RTX, plus_constant, Pmode, setjmp_libfunc, start_sequence(), TYPE_MODE, unwind_sjlj_register_libfunc, x, and XEXP.
Referenced by sjlj_build_landing_pads().
Definition at line 2180 of file except.c.
References cfun, emit_insn_after(), emit_library_call(), end_sequence(), get_insns(), LCT_NORMAL, Pmode, start_sequence(), unwind_sjlj_unregister_libfunc, and XEXP.
Referenced by sjlj_build_landing_pads().
| static bool sjlj_find_directly_reachable_regions | ( | struct sjlj_lp_info * | lp_info | ) | [static] |
Definition at line 1929 of file except.c.
References cfun, find_reg_note(), get_insns(), insn, INSN_P, INTVAL, NEXT_INSN, NULL_RTX, NULL_TREE, rc, reachable_next_level(), REG_EH_REGION, region, RNL_CAUGHT, RNL_MAYBE_CAUGHT, RNL_NOT_CAUGHT, and XEXP.
Referenced by sjlj_build_landing_pads().
| static void sjlj_mark_call_sites | ( | struct sjlj_lp_info * | lp_info | ) | [static] |
Definition at line 2042 of file except.c.
References adjust_address, before, cfun, emit_insn_before(), emit_move_insn(), end_sequence(), find_first_parameter_load(), find_reg_note(), flag_non_call_exceptions, GEN_INT, GET_CODE, get_insns(), insn, INSN_P, integer_type_node, INTVAL, may_trap_p(), mem, NEXT_INSN, NULL_RTX, p, PATTERN, REG_EH_REGION, region, start_sequence(), TYPE_MODE, and XEXP.
Referenced by sjlj_build_landing_pads().
Definition at line 3620 of file except.c.
References call_site_base, cfun, cs, dw2_asm_output_data_uleb128(), i, INTVAL, and n.
Referenced by output_function_exception_table().
| static int sjlj_size_of_call_site_table | ( | void | ) | [static] |
Definition at line 3550 of file except.c.
References cfun, cs, i, INTVAL, n, size, and size_of_uleb128().
Referenced by output_function_exception_table().
Definition at line 1453 of file except.c.
References TREE_PURPOSE, and TYPE_HASH.
Referenced by init_eh().
Definition at line 1512 of file except.c.
References TYPE_HASH.
Referenced by assign_filter_values().
int call_site_base [static] |
Definition at line 105 of file except.c.
Referenced by add_call_site(), dw2_output_call_site_table(), sjlj_assign_call_site_values(), and sjlj_output_call_site_table().
Definition at line 87 of file except.c.
Referenced by arm_expand_prologue(), can_throw_external(), control_flow_insn_p(), convert_from_eh_region_ranges_1(), convert_to_eh_region_ranges(), count_reg_usage(), darwin_override_options(), distribute_notes(), eliminate_partially_redundant_loads(), emit_input_reload_insns(), emit_libcall_block(), emit_output_reload_insns(), expand_eh_region_end_cleanup(), expand_expr_real(), find_invariant_insn(), find_moveable_store(), finish_function(), fixup_abnormal_edges(), insn_dead_p(), insn_live_p(), java_init_options(), make_edges(), mark_stmt_if_obviously_necessary(), maybe_encapsulate_block(), override_options(), prepare_cmp_insn(), prescan_loop(), process_options(), regmove_optimize(), reload_as_needed(), rest_of_handle_postreload(), s390_emit_prologue(), simple_mem(), sjlj_mark_call_sites(), thumb_expand_prologue(), tree_could_throw_p(), and try_split().
1.5.6