GCC Middle and Back End API Reference
|
#include <ira-int.h>
Data Fields | |
basic_block | bb |
struct loop * | loop |
ira_loop_tree_node_t | subloop_next |
ira_loop_tree_node_t | next |
ira_loop_tree_node_t | subloops |
ira_loop_tree_node_t | children |
ira_loop_tree_node_t | parent |
int | level |
int | loop_num |
bool | to_remove_p |
ira_allocno_t * | regno_allocno_map |
bool | entered_from_non_parent_p |
int | reg_pressure [N_REG_CLASSES] |
bitmap | all_allocnos |
bitmap | border_allocnos |
bitmap | modified_regnos |
bitmap | local_copies |
In general case, IRA is a regional allocator. The regions are nested and form a tree. Currently regions are natural loops. The following structure describes loop tree node (representing basic block or loop). We need such tree because the loop tree from cfgloop.h is not convenient for the optimization: basic blocks are not a part of the tree from cfgloop.h. We also use the nodes for storing additional information about basic blocks/loops for the register allocation purposes.
bitmap ira_loop_tree_node::all_allocnos |
basic_block ira_loop_tree_node::bb |
Referenced by add_copies(), add_loop_to_tree(), change_loop(), color_pass(), create_bb_allocnos(), create_loop_tree_node_allocnos(), entered_from_non_parent_p(), finish_loop_tree_node(), form_loop_tree(), ira_loop_tree_body_rev_postorder(), ira_traverse_loop_tree(), low_pressure_loop_node_p(), move_spill_restore(), print_loop_title(), process_bb_node_for_costs(), process_bb_node_for_hard_reg_moves(), process_bb_node_lives(), propagate_modified_regnos(), remove_uneccesary_loop_nodes_from_loop_tree(), and setup_loop_tree_level().
bitmap ira_loop_tree_node::border_allocnos |
ira_loop_tree_node_t ira_loop_tree_node::children |
bool ira_loop_tree_node::entered_from_non_parent_p |
Referenced by setup_entered_from_non_parent_p(), and store_can_be_removed_p().
int ira_loop_tree_node::level |
Referenced by setup_loop_tree_level().
bitmap ira_loop_tree_node::local_copies |
struct loop* ira_loop_tree_node::loop |
int ira_loop_tree_node::loop_num |
bitmap ira_loop_tree_node::modified_regnos |
ira_loop_tree_node_t ira_loop_tree_node::next |
ira_loop_tree_node_t ira_loop_tree_node::parent |
Referenced by add_loop_to_tree(), add_ranges_and_copies(), calculate_allocno_spill_cost(), change_loop(), copy_info_to_removed_store_destinations(), create_cap_allocno(), create_loop_allocnos(), entered_from_non_parent_p(), form_loop_tree(), generate_edge_moves(), ira_parent_allocno(), loop_compare_func(), loop_is_inside_p(), move_spill_restore(), print_loop_title(), process_bb_node_lives(), propagate_modified_regnos(), remove_low_level_allocnos(), remove_uneccesary_loop_nodes_from_loop_tree(), remove_unnecessary_allocnos(), set_allocno_reg(), store_can_be_removed_p(), and subloop_tree_node_p().
int ira_loop_tree_node::reg_pressure[N_REG_CLASSES] |
ira_allocno_t* ira_loop_tree_node::regno_allocno_map |
Referenced by add_loop_to_tree(), add_range_and_copies_from_move_list(), calculate_allocno_spill_cost(), change_loop(), color_pass(), conflict_by_live_ranges_p(), copy_info_to_removed_store_destinations(), create_loop_allocnos(), create_loop_tree_nodes(), find_costs_and_classes(), finish_loop_tree_node(), finish_loop_tree_nodes(), form_loop_tree(), generate_edge_moves(), init_loop_tree_node(), ira_create_allocno(), ira_flattening(), ira_parent_allocno(), ira_traverse_loop_tree(), more_one_region_p(), move_spill_restore(), propagate_allocno_info(), rebuild_regno_allocno_maps(), remove_low_level_allocnos(), remove_unnecessary_allocnos(), set_allocno_reg(), setup_min_max_allocno_live_range_point(), store_can_be_removed_p(), and update_costs().
ira_loop_tree_node_t ira_loop_tree_node::subloop_next |
ira_loop_tree_node_t ira_loop_tree_node::subloops |
bool ira_loop_tree_node::to_remove_p |