GCC Middle and Back End API Reference
|
Data Structures | |
struct | allocation_object_def |
struct | alloc_pool_descriptor |
struct | alloc_pool_hasher |
struct | output_info |
Typedefs | |
typedef struct allocation_object_def | allocation_object |
Functions | |
static struct alloc_pool_descriptor * | allocate_pool_descriptor () |
alloc_pool | create_alloc_pool () |
void | empty_alloc_pool () |
void | free_alloc_pool () |
void | free_alloc_pool_if_empty () |
void * | pool_alloc () |
void | pool_free () |
int | print_alloc_pool_statistics (alloc_pool_descriptor **slot, struct output_info *i) |
void | dump_alloc_pool_statistics () |
Variables | |
static ALLOC_POOL_ID_TYPE | last_id |
static hash_table < alloc_pool_hasher > | alloc_pool_hash |
typedef struct allocation_object_def allocation_object |
The internal allocation object.
|
staticread |
For given name, return descriptor, create new if needed.
References hash_table< Descriptor, Allocator >::create(), hash_table< Descriptor, Allocator >::find_slot_with_hash(), hash_table< Descriptor, Allocator >::is_created(), and alloc_pool_descriptor::name.
Referenced by create_alloc_pool(), empty_alloc_pool(), pool_alloc(), and pool_free().
alloc_pool create_alloc_pool | ( | ) |
Create a pool of things of size SIZE, with NUM in each block we allocate.
References allocate_pool_descriptor(), alloc_pool_def::block_list, alloc_pool_def::block_size, alloc_pool_def::blocks_allocated, alloc_pool_descriptor::created, allocation_object_def::data, alloc_pool_def::elt_size, alloc_pool_descriptor::elt_size, alloc_pool_def::elts_allocated, alloc_pool_def::elts_free, alloc_pool_def::elts_per_block, alloc_pool_def::id, last_id, alloc_pool_def::name, alloc_pool_descriptor::name, alloc_pool_def::returned_free_list, alloc_pool_def::virgin_elts_remaining, and alloc_pool_def::virgin_free_list.
Referenced by allocate_vn_table(), asan_mem_ref_get_alloc_pool(), copyprop_hardreg_forward(), cselib_init(), df_chain_alloc(), df_scan_alloc(), dse_step0(), dse_step1(), et_new_occ(), et_new_tree(), execute_cse_reciprocals(), expand_case(), expand_sjlj_dispatch_table(), init_alias_vars(), init_insn_regs(), init_pre(), init_reassoc(), init_reg_info(), initialize_original_copy_tables(), initiate_allocnos(), initiate_copies(), initiate_cost_vectors(), inline_summary_alloc(), ipa_profile_generate_summary(), ipa_profile_read_summary(), ipa_set_jf_constant(), ipcp_driver(), lra_live_ranges_init(), sched_deps_init(), sra_initialize(), tree_ssa_strlen(), vt_emit_notes(), and vt_initialize().
void dump_alloc_pool_statistics | ( | void | ) |
Output per-alloc_pool memory usage statistics.
References hash_table< Descriptor, Allocator >::is_created(), print_alloc_pool_statistics(), output_info::total_allocated, output_info::total_created, and hash_table< Descriptor, Allocator >::traverse().
Referenced by dump_memory_report().
void empty_alloc_pool | ( | ) |
Free all memory allocated for the given memory pool.
References allocate_pool_descriptor(), alloc_pool_def::block_list, alloc_pool_def::blocks_allocated, alloc_pool_descriptor::current, alloc_pool_def::elt_size, alloc_pool_def::elts_allocated, alloc_pool_def::elts_free, free(), alloc_pool_def::name, alloc_pool_list_def::next, alloc_pool_def::returned_free_list, alloc_pool_def::virgin_elts_remaining, and alloc_pool_def::virgin_free_list.
Referenced by free_alloc_pool(), and process_scc().
void free_alloc_pool | ( | ) |
Free all memory allocated for the given memory pool and the pool itself.
References empty_alloc_pool(), free(), and memset().
Referenced by copyprop_hardreg_forward(), cselib_finish(), delete_points_to_sets(), df_chain_free(), df_chain_remove_problem(), df_scan_free_internal(), dse_step1(), dse_step7(), execute_cse_reciprocals(), expand_case(), expand_sjlj_dispatch_table(), fini_pre(), fini_reassoc(), finish_allocnos(), finish_copies(), finish_cost_vectors(), finish_insn_regs(), finish_reg_info(), free_alloc_pool_if_empty(), free_mem_ref_resources(), free_original_copy_tables(), free_vn_table(), inline_free_summary(), ipa_free_all_structures_after_iinln(), ipa_free_all_structures_after_ipa_cp(), ipa_profile(), lra_live_ranges_finish(), sra_deinitialize(), tree_ssa_strlen(), and vt_finalize().
void free_alloc_pool_if_empty | ( | ) |
Frees the alloc_pool, if it is empty and zero *POOL in this case.
References free_alloc_pool().
Referenced by et_free_pools(), and sched_deps_finish().
void* pool_alloc | ( | ) |
Allocates one element from the pool specified.
References allocate_pool_descriptor(), alloc_pool_descriptor::allocated, alloc_pool_def::block_list, alloc_pool_def::block_size, alloc_pool_def::blocks_allocated, alloc_pool_descriptor::current, allocation_object_def::data, alloc_pool_def::elt_size, alloc_pool_def::elts_allocated, alloc_pool_def::elts_free, alloc_pool_def::elts_per_block, alloc_pool_def::id, alloc_pool_def::name, alloc_pool_list_def::next, alloc_pool_descriptor::peak, alloc_pool_def::returned_free_list, alloc_pool_def::virgin_elts_remaining, and alloc_pool_def::virgin_free_list.
Referenced by _list_alloc(), account_time_size(), add_case_node(), add_repeat_to_ops_vec(), add_to_ops_vec(), add_value_source(), add_value_to_lattice(), asan_mem_ref_new(), attrs_list_copy(), attrs_list_insert(), bitmap_set_new(), build_accesses_from_assign(), check_mem_read_rtx(), compute_avail(), compute_bb_predicates(), copy_live_range(), copy_original_table_set(), copy_phi(), copy_reference(), create_access_1(), create_artificial_child_access(), create_dep_node(), create_deps_list(), create_live_range(), dataflow_set_merge(), df_chain_create(), df_grow_reg_info(), df_insn_create_insn_record(), df_ref_create_structure(), df_ref_record(), dse_step1(), edge_set_predicate(), emit_notes_for_differences_1(), et_new_occ(), et_new_tree(), get_group_info(), get_ops(), get_or_alloc_expr_for(), get_or_alloc_expr_for_constant(), get_or_alloc_expr_for_name(), insert_into_intersection(), ipa_edge_duplication_hook(), ipa_set_jf_constant(), ira_allocate_cost_vector(), ira_create_allocno(), ira_create_copy(), ira_create_live_range(), ira_create_object(), loc_exp_insert_dep(), lra_create_copy(), maybe_optimize_range_tests(), merge_agg_lats_step(), new_constraint(), new_cselib_val(), new_elt_list(), new_elt_loc_list(), new_insn_reg(), new_strinfo(), new_var_info(), occ_new(), phi_translate_1(), record_store(), replace_oldest_value_reg(), replace_read(), scan_insn(), set_cond_stmt_execution_predicate(), set_hint_predicate(), set_slot_part(), set_switch_stmt_execution_predicate(), shared_hash_unshare(), unshare_variable(), variable_from_dropped(), variable_merge_over_cur(), variable_union(), variable_was_changed(), visit_reference_op_call(), vn_phi_insert(), vn_reference_insert(), vn_reference_insert_pieces(), and vt_initialize().
void pool_free | ( | ) |
Puts PTR back on POOL's free list.
References allocate_pool_descriptor(), alloc_pool_descriptor::current, allocation_object_def::data, alloc_pool_def::elt_size, alloc_pool_def::elts_allocated, alloc_pool_def::elts_free, alloc_pool_def::id, memset(), alloc_pool_def::name, alloc_pool_list_def::next, and alloc_pool_def::returned_free_list.
Referenced by _list_remove(), add_value_to_lattice(), attrs_list_clear(), canonicalize_values_star(), clobber_slot_part(), copy_original_table_clear(), dataflow_set_preserve_mem_locs(), dataflow_set_remove_mem_locs(), delete_dead_store_insn(), delete_dep_node(), delete_slot_part(), df_chain_unlink(), df_chain_unlink_1(), df_free_collection_rec(), df_free_ref(), df_insn_info_delete(), df_mw_hardreg_chain_delete(), df_mw_hardreg_chain_delete_eq_uses(), df_sort_and_compress_mws(), drop_overlapping_mem_locs(), dse_step1(), edge_set_predicate(), estimate_function_body_sizes(), et_free_tree(), et_free_tree_force(), et_split(), finish_allocno(), finish_copy(), free_bb(), free_debug_insn_changes(), free_deps_list(), free_insn_reg(), free_live_range(), free_read_records(), free_store_info(), free_strinfo(), get_or_alloc_expr_for(), ira_finish_live_range(), ira_free_allocno_costs(), ira_free_cost_vector(), lra_free_copies(), lra_merge_live_ranges(), notify_dependents_of_changed_value(), remove_duplicate_values(), replace_read(), reset_inline_edge_summary(), reset_inline_summary(), set_hint_predicate(), set_slot_part(), shared_hash_destroy(), unchain_one_elt_list(), unchain_one_elt_loc_list(), unchain_one_value(), var_reg_delete(), var_reg_delete_and_set(), var_regno_delete(), variable_htab_free(), and variable_post_merge_new_vals().
int print_alloc_pool_statistics | ( | alloc_pool_descriptor ** | slot, |
struct output_info * | i | ||
) |
Called via hash_table.traverse. Output alloc_pool descriptor pointed out by SLOT and update statistics.
References alloc_pool_descriptor::allocated, alloc_pool_descriptor::created, alloc_pool_descriptor::current, alloc_pool_descriptor::elt_size, alloc_pool_descriptor::name, alloc_pool_descriptor::peak, output_info::total_allocated, and output_info::total_created.
Referenced by dump_alloc_pool_statistics().
|
static |
Hashtable mapping alloc_pool names to descriptors.
|
static |
Last used ID.
Referenced by create_alloc_pool().