GCC Middle and Back End API Reference
|
Go to the source code of this file.
Data Structures | |
struct | eh_landing_pad_d |
struct | eh_catch_d |
struct | eh_region_d |
union | eh_region_d::eh_region_u |
struct | eh_region_d::eh_region_u::eh_region_u_try |
struct | eh_region_d::eh_region_u::eh_region_u_allowed |
struct | eh_region_d::eh_region_u::eh_region_u_must_not_throw |
struct | eh_status |
union | eh_status::eh_status_u |
struct | throw_stmt_node |
Typedefs | |
typedef struct eh_landing_pad_d * | eh_landing_pad |
typedef struct eh_catch_d * | eh_catch |
typedef struct eh_region_d * | eh_region |
typedef tree(* | duplicate_eh_regions_map )(tree, void *) |
Enumerations | |
enum | eh_region_type { ERT_CLEANUP, ERT_TRY, ERT_ALLOWED_EXCEPTIONS, ERT_MUST_NOT_THROW } |
enum | eh_personality_kind { eh_personality_none, eh_personality_any, eh_personality_lang } |
typedef struct eh_catch_d* eh_catch |
typedef struct eh_landing_pad_d* eh_landing_pad |
typedef struct eh_region_d* eh_region |
enum eh_personality_kind |
enum eh_region_type |
void add_type_for_runtime | ( | tree | ) |
void assign_filter_values | ( | void | ) |
Generate the action filter values to be used for CATCH and ALLOWED_EXCEPTIONS regions. When using dwarf2 exception regions, we use lots of landing pads, and so every type or list can share the same filter value, which saves table space.
References add_ehspec_entry(), add_ttypes_entry(), eh_region_d::eh_region_u::allowed, eh_status::eh_status_u::arm_eabi, build_int_cst(), cfun, hash_table< Descriptor, Allocator >::create(), hash_table< Descriptor, Allocator >::dispose(), function::eh, eh_region_d::eh_region_u::eh_try, eh_status::ehspec_data, ERT_ALLOWED_EXCEPTIONS, ERT_TRY, eh_region_d::eh_region_u::eh_region_u_allowed::filter, eh_catch_d::filter_list, eh_region_d::eh_region_u::eh_region_u_try::first_catch, eh_catch_d::next_catch, eh_status::eh_status_u::other, eh_status::region_array, targetm, eh_status::ttype_data, eh_region_d::type, eh_catch_d::type_list, eh_region_d::eh_region_u::eh_region_u_allowed::type_list, eh_region_d::u, vec_alloc(), and vec_safe_iterate().
Referenced by execute_lower_eh_dispatch().
bool current_function_has_exception_handlers | ( | void | ) |
Returns true if the current function has exception handling regions.
References cfun, function::eh, and eh_status::region_tree.
Referenced by is_cfg_nonregular(), and suitable_for_tail_call_opt_p().
void debug_eh_tree | ( | struct function * | ) |
void dump_eh_tree | ( | FILE * | , |
struct function * | |||
) |
|
read |
Duplicate the EH regions from IFUN rooted at COPY_REGION into the current function and root the tree below OUTER_REGION. The special case of COPY_REGION of NULL means all regions. Remap labels using MAP/MAP_DATA callback. Return a pointer map that allows the caller to remap uses of both EH regions and EH landing pads.
References cfun, duplicate_eh_regions_1(), duplicate_eh_regions_data::eh_map, get_eh_region_from_lp_number(), duplicate_eh_regions_data::label_map, duplicate_eh_regions_data::label_map_data, map, eh_region_d::next_peer, pointer_map_create(), and verify_eh_tree().
Referenced by copy_cfg_body(), and move_sese_region_to_fn().
Return the region that is outer to both REGION_A and REGION_B in IFUN.
References bitmap_bit_p(), bitmap_clear(), bitmap_set_bit(), eh_region_d::index, eh_region_d::outer, sbitmap_alloc(), and sbitmap_free().
Referenced by find_outermost_region_in_block().
|
inlinestatic |
Pre-order iteration within the eh_region tree.
References eh_region_d::inner, eh_region_d::next_peer, and eh_region_d::outer.
rtx expand_builtin_dwarf_sp_column | ( | void | ) |
Hook used by __throw.
Referenced by expand_builtin().
Set up the epilogue with the magic bits we'll need to return to the exception handler.
References copy_to_reg(), emit_jump(), emit_move_insn(), expand_expr(), EXPAND_NORMAL, and gen_label_rtx().
Referenced by expand_builtin().
void expand_builtin_init_dwarf_reg_sizes | ( | tree | ) |
void expand_builtin_unwind_init | ( | void | ) |
Do any necessary initialization to access arbitrary stack frames. On the SPARC, this means flushing the register windows.
Referenced by expand_builtin().
void expand_dw2_landing_pad_for_region | ( | eh_region | ) |
void expand_eh_return | ( | void | ) |
Expand __builtin_eh_return. This exit path from the function loads up the eh return data registers, adjusts the stack, and branches to a given PC other than the normal return address.
References clobber_return_register(), emit_insn(), emit_jump(), emit_label(), emit_move_insn(), error(), and gen_label_rtx().
Referenced by expand_function_end().
void finish_eh_generation | ( | void | ) |
After initial rtl generation, call back to finish generating exception support code.
References break_superblocks(), commit_edge_insertions(), edge_def::dest, dw2_build_landing_pads(), edge_def::flags, get_eh_landing_pad_from_rtx(), edge_def::insns, label_rtx(), eh_landing_pad_d::landing_pad, eh_landing_pad_d::post_landing_pad, edge_def::edge_def_insns::r, redirect_edge_succ(), single_succ_edge(), sjlj_build_landing_pads(), basic_block_def::succs, and UI_SJLJ.
Referenced by gimple_expand_cfg().
void for_each_eh_label | ( | void(*)(rtx) | callback | ) |
Invokes CALLBACK for every exception handler label. Only used by old loop hackery; should not be used by new code.
Invokes CALLBACK for every exception handler landing pad label. Only used by reload hackery; should not be used by new code.
References cfun, function::eh, eh_landing_pad_d::landing_pad, eh_status::lp_array, and vec_safe_iterate().
Referenced by set_initial_label_offsets().
enum eh_personality_kind function_needs_eh_personality | ( | struct function * | ) |
eh_landing_pad gen_eh_landing_pad | ( | eh_region | ) |
eh_landing_pad get_eh_landing_pad_from_number | ( | int | ) |
eh_landing_pad get_eh_landing_pad_from_number_fn | ( | struct function * | , |
int | |||
) |
eh_landing_pad get_eh_landing_pad_from_rtx | ( | const_rtx | ) |
eh_region get_eh_region_from_lp_number | ( | int | ) |
eh_region get_eh_region_from_number | ( | int | ) |
|
read |
void init_eh_for_function | ( | void | ) |
References cfun, function::eh, eh_status::lp_array, eh_status::region_array, and vec_safe_push().
Referenced by allocate_struct_function(), initialize_cfun(), and move_sese_region_to_fn().
void make_reg_eh_region_note | ( | rtx | insn, |
int | ecf_flags, | ||
int | lp_nr | ||
) |
void make_reg_eh_region_note_nothrow_nononlocal | ( | rtx | ) |
void output_function_exception_table | ( | const char * | ) |
void remove_eh_handler | ( | eh_region | ) |
void remove_eh_landing_pad | ( | eh_landing_pad | ) |
void remove_unreachable_eh_regions | ( | sbitmap | ) |
void set_eh_throw_stmt_table | ( | struct function * | , |
struct htab * | |||
) |
void sjlj_emit_function_exit_after | ( | rtx | ) |
void verify_eh_tree | ( | struct function * | ) |