#include "config.h"#include "system.h"#include "coretypes.h"#include "tm.h"#include "rtl.h"#include "hard-reg-set.h"#include "regs.h"#include "fibheap.h"#include "output.h"#include "target.h"#include "expr.h"#include "flags.h"#include "insn-attr.h"#include "function.h"#include "except.h"#include "tm_p.h"#include "toplev.h"#include "tree-pass.h"

Go to the source code of this file.
| typedef struct btr_def_group_s * btr_def_group |
| typedef struct btr_user_s * btr_user |
| static btr_def add_btr_def | ( | fibheap_t | all_btr_defs, | |
| basic_block | bb, | |||
| int | insn_luid, | |||
| rtx | insn, | |||
| unsigned int | dest_reg, | |||
| int | other_btr_uses_before_def, | |||
| btr_def_group * | all_btr_def_groups | |||
| ) | [static] |
Definition at line 303 of file bt-load.c.
References basic_block_freq(), dump_file, fibheap_insert(), find_btr_def_group(), fprintf(), basic_block_def::index, INSN_UID, migrate_btrl_obstack, NULL, and obstack_alloc.
Definition at line 870 of file bt-load.c.
References btr_def_s::bb, btr_def_s::btr, btrs_live, btrs_live_at_end, dump_btrs_live(), dump_file, EXECUTE_IF_SET_IN_BITMAP, basic_block_def::index, btr_def_s::live_range, btr_def_s::own_end, and SET_HARD_REG_BIT.
| static void augment_live_range | ( | bitmap | live_range, | |
| HARD_REG_SET * | btrs_live_in_range, | |||
| basic_block | head_bb, | |||
| basic_block | new_bb, | |||
| int | full_range | |||
| ) | [static] |
Definition at line 902 of file bt-load.c.
References bitmap_bit_p(), bitmap_set_bit(), btrs_live, btrs_live_at_end, CDI_DOMINATORS, dominated_by_p(), dump_file, dump_hard_reg_set(), FOR_EACH_EDGE, fprintf(), free(), gcc_assert, basic_block_def::index, IOR_HARD_REG_SET, n_basic_blocks, new_block, edge::src, tos, worklist, and XNEWVEC.
| static int basic_block_freq | ( | basic_block | bb | ) | [static] |
| static int block_at_edge_of_live_range_p | ( | int | bb, | |
| btr_def | def | |||
| ) | [static] |
Definition at line 819 of file bt-load.c.
References BASIC_BLOCK, btr_def_s::bb, btr_user_s::bb, btr_user_s::next, NULL, btr_def_s::other_btr_uses_after_use, btr_def_s::other_btr_uses_before_def, and btr_def_s::uses.
Definition at line 1463 of file bt-load.c.
References gcc_target::branch_target_register_callee_saved, calculate_dominance_info(), CDI_DOMINATORS, cleanup_cfg(), CLEANUP_EXPENSIVE, free_dominance_info(), gcc_target::sched::issue_rate, issue_rate, life_analysis(), migrate_btr_defs(), NO_REGS, NULL, optimize, PROP_DEATH_NOTES, PROP_REG_INFO, gcc_target::sched, targetm, UPDATE_LIFE_GLOBAL_RM_NOTES, and update_life_info().
Definition at line 1014 of file bt-load.c.
References augment_live_range(), btr_def_s::bb, btr_user_s::bb, BB_END, BITMAP_ALLOC, bitmap_set_bit(), btr_def_s::btr, btrs_live, btrs_live_at_end, CLEAR_HARD_REG_BIT, CLEAR_HARD_REG_SET, COPY_HARD_REG_SET, EXECUTE_IF_SET_IN_BITMAP, basic_block_def::index, btr_user_s::insn, IOR_HARD_REG_SET, JUMP_P, btr_def_s::live_range, btr_user_s::next, NULL, btr_def_s::other_btr_uses_after_use, btr_def_s::other_btr_uses_before_def, and btr_def_s::uses.
Definition at line 780 of file bt-load.c.
References compute_defs_uses_and_gen(), compute_kill(), compute_out(), first_btr, free(), get_max_uid(), HARD_REG_SET, last_btr, link_btr_uses(), max_uid, n_basic_blocks, sbitmap_vector_alloc(), sbitmap_vector_free, sbitmap_vector_zero(), and XCNEWVEC.
| static int can_move_up | ( | basic_block | bb, | |
| rtx | insn, | |||
| int | n_insns | |||
| ) | [static] |
| static int choose_btr | ( | HARD_REG_SET | used_btrs | ) | [static] |
Definition at line 988 of file bt-load.c.
References all_btrs, FIRST_PSEUDO_REGISTER, GO_IF_HARD_REG_SUBSET, i, and TEST_HARD_REG_BIT.
Definition at line 842 of file bt-load.c.
References btr_def_s::bb, block_at_edge_of_live_range_p(), btr_def_s::btr, btrs_live, btrs_live_at_end, CLEAR_HARD_REG_BIT, dump_btrs_live(), dump_file, EXECUTE_IF_SET_IN_BITMAP, basic_block_def::index, btr_def_s::live_range, btr_def_s::other_btr_uses_after_use, btr_def_s::other_btr_uses_before_def, and btr_def_s::own_end.
Definition at line 1061 of file bt-load.c.
References augment_live_range(), btr_def_s::bb, btr_user_s::bb, BB_END, BITMAP_ALLOC, bitmap_copy(), BITMAP_FREE, btr_def_s::btr, btr_def_live_range(), CDI_DOMINATORS, choose_btr(), clear_btr_from_live_range(), COPY_HARD_REG_SET, delete_insn(), dominated_by_p(), dump_file, find_regno_note(), fprintf(), btr_def_s::group, HARD_REG_SET, btr_def_s::has_ambiguous_use, btr_def_s::insn, btr_user_s::insn, INSN_UID, JUMP_P, btr_def_s::live_range, btr_def_group_s::members, next, btr_user_s::next, btr_def_s::next_this_group, NULL, btr_def_s::other_btr_uses_after_use, REG_DEAD, REGNO, remove_note(), btr_user_s::use, and btr_def_s::uses.
| static void compute_defs_uses_and_gen | ( | fibheap_t | all_btr_defs, | |
| btr_def * | def_array, | |||
| btr_user * | use_array, | |||
| sbitmap * | btr_defset, | |||
| sbitmap * | bb_gen, | |||
| HARD_REG_SET * | btrs_written | |||
| ) | [static] |
Definition at line 449 of file bt-load.c.
References add_btr_def(), all_btrs, AND_HARD_REG_SET, BASIC_BLOCK, BB_END, defs_uses_info::bb_gen, BB_HEAD, defs_uses_info::btr_defset, btr_referenced_p(), btrs_live, btrs_live_at_end, defs_uses_info::btrs_live_in_block, defs_uses_info::btrs_written_in_block, CALL_P, call_used_reg_set, can_throw_internal(), CLEAR_HARD_REG_SET, COMPL_HARD_REG_SET, COPY_HARD_REG_SET, current_function_has_nonlocal_label, dump_btrs_live(), dump_file, first_btr, GET_CODE, basic_block_def::global_live_at_end, basic_block_def::global_live_at_start, HARD_REG_SET, i, info, insn, btr_user_s::insn, INSN_P, insn_sets_btr_p(), INSN_UID, IOR_HARD_REG_SET, JUMP_P, last, last_btr, n_basic_blocks, new_btr_user(), btr_user_s::next, NEXT_INSN, btr_def_s::next_this_bb, note_btr_set(), note_other_use_this_block(), note_stores(), NULL, NULL_RTX, NUM_FIXED_BLOCKS, btr_user_s::other_use_this_block, PATTERN, PREV_INSN, refers_to_regno_p(), REG_SET_TO_HARD_REG_SET, REGNO, regno_reg_rtx, REGNO_REG_SET_P, RETURN, sbitmap_difference(), sbitmap_vector_zero(), sbitmap_zero(), SET_BIT, SET_HARD_REG_BIT, TEST_HARD_REG_BIT, tmp, btr_user_s::use, defs_uses_info::users_this_bb, XVECEXP, and XVECLEN.
| static void compute_kill | ( | sbitmap * | bb_kill, | |
| sbitmap * | btr_defset, | |||
| HARD_REG_SET * | btrs_written | |||
| ) | [static] |
Definition at line 617 of file bt-load.c.
References all_btrs, first_btr, i, last_btr, n_basic_blocks, NUM_FIXED_BLOCKS, sbitmap_a_or_b(), sbitmap_vector_zero(), and TEST_HARD_REG_BIT.
| static void compute_out | ( | sbitmap * | bb_out, | |
| sbitmap * | bb_gen, | |||
| sbitmap * | bb_kill, | |||
| int | max_uid | |||
| ) | [static] |
Definition at line 637 of file bt-load.c.
References changed, i, n_basic_blocks, NUM_FIXED_BLOCKS, sbitmap_alloc(), sbitmap_copy(), sbitmap_free, sbitmap_union_of_diff_cg(), and sbitmap_union_of_preds().
| static void dump_btrs_live | ( | int | bb | ) | [static] |
| static void dump_hard_reg_set | ( | HARD_REG_SET | s | ) | [static] |
Definition at line 384 of file bt-load.c.
References dump_file, FIRST_PSEUDO_REGISTER, fprintf(), and TEST_HARD_REG_BIT.
| static void find_btr_def_group | ( | btr_def_group * | all_btr_def_groups, | |
| btr_def | def | |||
| ) | [static] |
Definition at line 267 of file bt-load.c.
References btr_def_s::group, btr_def_s::insn, insn_sets_btr_p(), btr_def_group_s::members, migrate_btrl_obstack, btr_def_group_s::next, btr_def_s::next_this_group, NULL, obstack_alloc, rtx_equal_p(), SET_SRC, single_set, and btr_def_group_s::src.
Definition at line 193 of file bt-load.c.
References all_btrs, btr_reference_found, GET_MODE, hard_regno_nregs, i, REG_P, REGNO, TEST_HARD_REG_BIT, and x.
Definition at line 258 of file bt-load.c.
References btr_reference_found, btr_referenced_p(), and NULL.
| static int insn_sets_btr_p | ( | rtx | insn, | |
| int | check_const, | |||
| int * | regno | |||
| ) | [static] |
Definition at line 227 of file bt-load.c.
References all_btrs, btr_referenced_p(), CONSTANT_P, dest, gcc_assert, GET_CODE, NONJUMP_INSN_P, NULL, REG_P, REGNO, SET_DEST, SET_SRC, single_set, src, TEST_HARD_REG_BIT, and XEXP.
| static void link_btr_uses | ( | btr_def * | def_array, | |
| btr_user * | use_array, | |||
| sbitmap * | bb_out, | |||
| sbitmap * | btr_defset, | |||
| int | max_uid | |||
| ) | [static] |
Definition at line 667 of file bt-load.c.
References all_btrs, BASIC_BLOCK, BB_END, BB_HEAD, btr_def_s::btr, CALL_P, call_used_reg_set, dump_file, EXECUTE_IF_SET_IN_SBITMAP, first_btr, btr_user_s::first_reaching_def, fprintf(), btr_def_s::has_ambiguous_use, i, insn, btr_user_s::insn, INSN_P, INSN_UID, last, last_btr, n_basic_blocks, btr_user_s::n_reaching_defs, btr_user_s::next, NEXT_INSN, NULL, NUM_FIXED_BLOCKS, btr_def_s::other_btr_uses_after_use, btr_user_s::other_use_this_block, reaching_defs, refers_to_regno_p(), REGNO, sbitmap_a_and_b(), sbitmap_a_or_b_and_c(), sbitmap_alloc(), sbitmap_difference(), sbitmap_free, sbitmap_union_of_preds(), sbitmap_zero(), SET_BIT, TEST_HARD_REG_BIT, btr_user_s::use, and btr_def_s::uses.
| static int migrate_btr_def | ( | btr_def | def, | |
| int | min_cost | |||
| ) | [static] |
Definition at line 1275 of file bt-load.c.
References augment_live_range(), basic_block_freq(), btr_def_s::bb, btr_user_s::bb, BITMAP_ALLOC, bitmap_copy(), BITMAP_FREE, btr_def_live_range(), can_move_up(), CDI_DOMINATORS, choose_btr(), btr_def_s::cost, dump_file, dump_hard_reg_set(), EDGE_COMPLEX, ENTRY_BLOCK_PTR, edge::flags, FOR_EACH_EDGE, fprintf(), get_immediate_dominator(), btr_def_s::group, HARD_REG_SET, btr_def_s::has_ambiguous_use, btr_def_s::insn, insn_default_latency(), INSN_UID, issue_rate, btr_def_s::live_range, btr_def_s::luid, btr_user_s::luid, move_btr_def(), btr_user_s::next, NULL, try(), and btr_def_s::uses.
Definition at line 1401 of file bt-load.c.
References all_btrs, BASIC_BLOCK, BITMAP_FREE, btrs_live, btrs_live_at_end, build_btr_def_use_webs(), call_used_regs, CDI_DOMINATORS, CLEAR_HARD_REG_SET, btr_def_s::cost, basic_block_def::count, dump_file, fibheap_delete(), fibheap_empty(), fibheap_extract_min(), fibheap_insert(), fibheap_min_key(), fibheap_new(), first_btr, FIRST_PSEUDO_REGISTER, fprintf(), free(), gcc_obstack_init, get_immediate_dominator(), HARD_REG_SET, HOST_WIDEST_INT, HOST_WIDEST_INT_PRINT_DEC, i, index(), INSN_UID, last_btr, btr_def_s::live_range, basic_block_def::loop_depth, migrate_btr_def(), migrate_btrl_obstack, n_basic_blocks, NULL, NUM_FIXED_BLOCKS, obstack_free, reg_class_contents, regs_ever_live, SET_HARD_REG_BIT, TEST_HARD_REG_BIT, and xcalloc().
| static void move_btr_def | ( | basic_block | new_def_bb, | |
| int | btr, | |||
| btr_def | def, | |||
| bitmap | live_range, | |||
| HARD_REG_SET * | btrs_live_in_range | |||
| ) | [static] |
Definition at line 1150 of file bt-load.c.
References add_btr_to_live_range(), b, basic_block_freq(), btr_def_s::bb, BB_END, BB_HEAD, bitmap_copy(), btr_def_s::btr, btrs_live, can_throw_internal(), clear_btr_from_live_range(), combine_btr_defs(), btr_def_s::cost, delete_insn(), dump_file, emit_insn_after(), fprintf(), gcc_assert, gen_move_insn(), gen_rtx_REG(), GET_MODE, basic_block_def::index, btr_def_s::insn, btr_user_s::insn, INSN_P, INSN_UID, JUMP_P, LABEL_P, btr_def_s::live_range, btr_def_s::luid, btr_user_s::next, NEXT_INSN, NULL, btr_def_s::other_btr_uses_before_def, PREV_INSN, regs_ever_live, replace_rtx(), SET_DEST, SET_SRC, single_set, src, TEST_HARD_REG_BIT, btr_user_s::use, and btr_def_s::uses.
| static btr_user new_btr_user | ( | basic_block | bb, | |
| int | insn_luid, | |||
| rtx | insn | |||
| ) | [static] |
Definition at line 337 of file bt-load.c.
References btr_user_s::bb, btr_referenced_p(), dump_file, find_btr_use(), btr_user_s::first_reaching_def, fprintf(), basic_block_def::index, btr_user_s::insn, INSN_UID, btr_user_s::luid, migrate_btrl_obstack, btr_user_s::n_reaching_defs, btr_user_s::next, NULL, NULL_RTX, obstack_alloc, btr_user_s::other_use_this_block, PATTERN, REGNO, and btr_user_s::use.
Definition at line 428 of file bt-load.c.
References all_btrs, defs_uses_info::bb_gen, defs_uses_info::btr_defset, defs_uses_info::btrs_live_in_block, defs_uses_info::btrs_written_in_block, first_btr, GET_MODE, hard_regno_nregs, info, note_other_use_this_block(), REG_P, REGNO, sbitmap_difference(), SET_HARD_REG_BIT, TEST_HARD_REG_BIT, and defs_uses_info::users_this_bb.
Definition at line 406 of file bt-load.c.
References btr_user_s::next, NULL, btr_user_s::other_use_this_block, REGNO, and btr_user_s::use.
| static unsigned int rest_of_handle_branch_target_load_optimize | ( | void | ) | [static] |
Definition at line 1504 of file bt-load.c.
References branch_target_load_optimize(), epilogue_completed, and warning.
rtx* btr_reference_found [static] |
HARD_REG_SET* btrs_live_at_end [static] |
int issue_rate [static] |
struct obstack migrate_btrl_obstack [static] |
Initial value:
{
"btl",
gate_handle_branch_target_load_optimize,
rest_of_handle_branch_target_load_optimize,
NULL,
NULL,
0,
0,
0,
0,
0,
0,
TODO_dump_func |
TODO_ggc_collect,
'd'
}
Definition at line 1525 of file bt-load.c.
Referenced by init_optimization_passes().
1.5.6