#include "config.h"#include "system.h"#include "toplev.h"#include "rtl.h"#include "tm_p.h"#include "regs.h"#include "hard-reg-set.h"#include "flags.h"#include "real.h"#include "insn-config.h"#include "recog.h"#include "basic-block.h"#include "output.h"#include "function.h"#include "expr.h"#include "except.h"#include "ggc.h"#include "params.h"#include "cselib.h"#include "obstack.h"#include "gt-gcse.h"

Go to the source code of this file.
| #define ANTIC_STORE_LIST | ( | x | ) | ((x)->loads) |
Definition at line 7112 of file gcse.c.
Referenced by build_store_vectors(), compute_store_table(), find_moveable_store(), remove_reachable_equiv_notes(), and replace_store_insn().
| #define AVAIL_STORE_LIST | ( | x | ) | ((x)->stores) |
Definition at line 7113 of file gcse.c.
Referenced by build_store_vectors(), compute_store_table(), delete_store(), and find_moveable_store().
| #define CUID_INSN | ( | CUID | ) | (cuid_insn[CUID]) |
| #define MAX_NESTED_LIBCALLS 9 |
| #define MAX_USES 8 |
| #define REG_SET_TABLE_SLOP 100 |
Definition at line 5615 of file gcse.c.
References gen_rtx_INSN_LIST, GET_CODE, GET_RTX_FORMAT, GET_RTX_LENGTH, i, LABEL_NUSES, LABEL_P, LABEL_REF_NONLOCAL_P, REG_LABEL, REG_NOTES, XEXP, XVECEXP, and XVECLEN.
Referenced by add_label_notes(), insert_insn_end_bb(), and move_movables().
Definition at line 4401 of file gcse.c.
References end, find_reg_equal_equiv_note(), PREV_INSN, reg_mentioned_p(), REG_P, reg_set_between_p(), replace_rtx(), and XEXP.
Referenced by do_local_cprop().
| static void alloc_avail_expr_mem | ( | int | n_blocks, | |
| int | n_exprs | |||
| ) | [static] |
Definition at line 3028 of file gcse.c.
References sbitmap_vector_alloc(), and sbitmap_vector_zero().
Referenced by one_classic_gcse_pass().
| static void alloc_code_hoist_mem | ( | int | n_blocks, | |
| int | n_exprs | |||
| ) | [static] |
Definition at line 6021 of file gcse.c.
References sbitmap_vector_alloc().
Referenced by one_code_hoisting_pass().
| static void alloc_cprop_mem | ( | int | n_blocks, | |
| int | n_sets | |||
| ) | [static] |
Definition at line 3683 of file gcse.c.
References sbitmap_vector_alloc().
Referenced by one_cprop_pass().
Definition at line 989 of file gcse.c.
References BITMAP_XMALLOC, canon_modify_mem_list, canon_modify_mem_list_set, cuid_insn, CUID_INSN, get_max_uid(), gmalloc(), i, insn, INSN_P, INSN_UID, last_basic_block, max_cuid, max_gcse_regno, max_uid, memset, modify_mem_list, modify_mem_list_set, n, NEXT_INSN, reg_set_bitmap, sbitmap_vector_alloc(), and uid_cuid.
Referenced by bypass_jumps(), gcse_main(), and gmalloc().
| static void alloc_hash_table | ( | int | n_insns, | |
| struct hash_table * | table, | |||
| int | set_p | |||
| ) | [static] |
Definition at line 2567 of file gcse.c.
References gmalloc(), n, hash_table::set_p, hash_table::size, and hash_table::table.
Referenced by one_classic_gcse_pass(), one_code_hoisting_pass(), one_cprop_pass(), and one_pre_gcse_pass().
| static void alloc_pre_mem | ( | int | n_blocks, | |
| int | n_exprs | |||
| ) | [static] |
Definition at line 4870 of file gcse.c.
References NULL, and sbitmap_vector_alloc().
Referenced by one_pre_gcse_pass().
| static void alloc_rd_mem | ( | int | n_blocks, | |
| int | n_insns | |||
| ) | [static] |
Definition at line 2897 of file gcse.c.
References sbitmap_vector_alloc(), and sbitmap_vector_zero().
Referenced by one_classic_gcse_pass().
| static void alloc_reg_set_mem | ( | int | n_regs | ) | [static] |
Definition at line 1200 of file gcse.c.
References gcc_obstack_init, gmalloc(), memset, n, reg_set_obstack, reg_set_table_size, and REG_SET_TABLE_SLOP.
Referenced by bypass_jumps(), gcse_main(), gmalloc(), and local_cprop_pass().
Definition at line 7119 of file gcse.c.
References alloc_INSN_LIST(), ANTIC_STORE_LIST, AVAIL_STORE_LIST, b, BLOCK_FOR_INSN, BLOCK_NUM, dump_sbitmap_vector(), first_ls_expr(), FOR_EACH_BB, fprintf(), free_INSN_LIST_list(), gcse_file, gen_reg_rtx(), GET_MODE, basic_block_def::head, basic_block_def::index, ls_expr::index, insn, last_basic_block, next_ls_expr(), NULL, NULL_RTX, ls_expr::pattern, print_ldst_list(), ptr, r, replace_store_insn(), sbitmap_vector_alloc(), sbitmap_vector_zero(), SET_BIT, store_killed_after(), store_killed_before(), ls_expr::stores, TEST_BIT, and XEXP.
Referenced by store_motion().
| static int bypass_block | ( | basic_block | bb, | |
| rtx | setcc, | |||
| rtx | jump | |||
| ) | [static] |
Definition at line 4664 of file gcse.c.
References BLOCK_FOR_INSN, CC0_P, change, copy_insn(), edge::dest, dest, FALLTHRU_EDGE, find_bypass_set(), find_reg_equal_equiv_note(), find_used_regs(), fprintf(), gcse_file, GET_CODE, i, basic_block_def::index, insert_insn_on_edge(), insn, INSN_UID, max_gcse_regno, note_uses(), NULL, PATTERN, pc_rtx, pc_set(), edge::pred, edge::pred_next, print_rtl(), redirect_edge_and_branch(), reg_killed_on_edge(), reg_use::reg_rtx, reg_use_table, REGNO, SET_DEST, SET_SRC, simplify_replace_rtx(), src, edge::src, edge::succ, edge::succ_next, and XEXP.
Referenced by bypass_conditional_jumps().
| static int bypass_conditional_jumps | ( | void | ) | [static] |
Definition at line 4776 of file gcse.c.
References any_condjump_p(), bypass_block(), CC0_P, changed, commit_edge_insertions(), dest, basic_block_def::end, ENTRY_BLOCK_PTR, EXIT_BLOCK_PTR, FOR_BB_BETWEEN, GET_CODE, basic_block_def::head, insn, INSN_P, NEXT_INSN, NULL, NULL_RTX, onlyjump_p(), PATTERN, basic_block_def::pred, edge::pred_next, REG_P, SET, and SET_DEST.
Referenced by one_cprop_pass().
| static int can_disregard_other_sets | ( | struct reg_set ** | addr_this_reg, | |
| rtx | insn, | |||
| int | for_combine | |||
| ) | [static] |
Definition at line 3364 of file gcse.c.
References def_reaches_here_p(), GET_CODE, reg_set::insn, reg_set::next, PATTERN, rtx_equal_p(), and SET_SRC.
Referenced by handle_avail_expr().
Definition at line 2380 of file gcse.c.
References alloc_EXPR_LIST(), bitmap_set_bit(), BLOCK_NUM, canon_modify_mem_list, canon_modify_mem_list_set, canon_rtx(), dest, get_addr(), GET_CODE, insn, MEM, and XEXP.
Referenced by record_last_mem_set_info().
| static int classic_gcse | ( | ) | [static] |
Definition at line 3570 of file gcse.c.
References expr::bitmap_index, changed, basic_block_def::end, ENTRY_BLOCK_PTR, EXIT_BLOCK_PTR, expr_hash_table, FIRST_PSEUDO_REGISTER, FOR_BB_BETWEEN, GET_CODE, handle_avail_expr(), basic_block_def::head, basic_block_def::index, reg_set::insn, INSN_P, lookup_expr(), mark_oprs_set(), NEXT_INSN, NULL, oprs_not_set_p(), PATTERN, REG, REGNO, reset_opr_set_tables(), SET, SET_DEST, SET_SRC, src, TEST_BIT, and want_to_gcse_p().
Referenced by one_classic_gcse_pass().
Definition at line 2703 of file gcse.c.
References bitmap_clear(), canon_modify_mem_list, canon_modify_mem_list_set, EXECUTE_IF_SET_IN_BITMAP, free_insn_expr_list_list(), free_INSN_LIST_list(), i, modify_mem_list, and modify_mem_list_set.
Referenced by compute_hash_table_work(), free_modify_mem_tables(), and reset_opr_set_tables().
| static void compute_ae_gen | ( | struct hash_table * | expr_hash_table | ) | [static] |
Definition at line 3056 of file gcse.c.
References expr::avail_occr, expr::bitmap_index, BLOCK_NUM, i, occr::insn, occr::next, expr::next_same_hash, and SET_BIT.
Referenced by one_classic_gcse_pass().
| static void compute_ae_kill | ( | sbitmap * | ae_gen, | |
| sbitmap * | ae_kill, | |||
| struct hash_table * | expr_hash_table | |||
| ) | [static] |
Definition at line 3139 of file gcse.c.
References expr::bitmap_index, expr::expr, expr_killed_p(), FOR_EACH_BB, i, basic_block_def::index, expr::next_same_hash, SET_BIT, hash_table::size, hash_table::table, and TEST_BIT.
Referenced by one_classic_gcse_pass().
Definition at line 924 of file gcse.c.
References can_copy_p, emit_insn(), end_sequence(), gen_rtx_REG(), gen_rtx_SET, GET_MODE_CLASS, i, insn, LAST_VIRTUAL_REGISTER, memset, MODE_CC, NULL, NUM_MACHINE_MODES, PATTERN, recog(), and start_sequence().
Referenced by can_copy_p(), and gcse_main().
Definition at line 6092 of file gcse.c.
References calculate_dominance_info(), CDI_DOMINATORS, compute_code_hoist_vbeinout(), compute_local_properties(), compute_transpout(), expr_hash_table, fprintf(), and gcse_file.
Referenced by one_code_hoisting_pass().
Definition at line 6057 of file gcse.c.
References changed, EXIT_BLOCK_PTR, FOR_EACH_BB_REVERSE, fprintf(), gcse_file, basic_block_def::index, last_basic_block, basic_block_def::next_bb, sbitmap_a_or_b_and_c_cg(), sbitmap_intersection_of_succs(), and sbitmap_vector_zero().
Referenced by compute_code_hoist_data().
Definition at line 3846 of file gcse.c.
References compute_available(), compute_local_properties(), NULL, and set_hash_table.
Referenced by one_cprop_pass().
| static void compute_hash_table | ( | struct hash_table * | table | ) | [static] |
Definition at line 2600 of file gcse.c.
References compute_hash_table_work(), and memset.
Referenced by gcse_after_reload_main(), one_classic_gcse_pass(), one_code_hoisting_pass(), one_cprop_pass(), and one_pre_gcse_pass().
| static void compute_hash_table_work | ( | struct hash_table * | table | ) | [static] |
Definition at line 2481 of file gcse.c.
References clear_modify_mem_tables(), basic_block_def::end, find_reg_note(), FIRST_PSEUDO_REGISTER, FOR_EACH_BB, free(), GET_CODE, gmalloc(), hash_scan_insn(), basic_block_def::head, i, insn, INSN_P, last_basic_block, last_bb, mark_call(), max_gcse_regno, NEXT_INSN, NON_SAVING_SETJMP, note_stores(), NULL, NULL_RTX, PATTERN, record_last_reg_set_info(), record_last_set_info(), REG_LIBCALL, REG_RETVAL, REG_SETJMP, regs_invalidated_by_call, sbitmap_vector_zero(), and TEST_HARD_REG_BIT.
Referenced by compute_hash_table().
| static void compute_kill_rd | ( | ) | [static] |
Definition at line 2942 of file gcse.c.
References CUID_INSN, FIRST_PSEUDO_REGISTER, FOR_EACH_BB, GET_CODE, handle_rd_kill_set(), i, basic_block_def::index, reg_set::insn, max_cuid, PATTERN, REG, REGNO, regs_invalidated_by_call, SET, SET_DEST, TEST_BIT, TEST_HARD_REG_BIT, XEXP, XVECEXP, and XVECLEN.
Referenced by one_classic_gcse_pass().
Definition at line 6591 of file gcse.c.
References alloc_INSN_LIST(), dest, basic_block_def::end, FOR_EACH_BB, GET_CODE, GET_RTX_CLASS, basic_block_def::head, insn, ls_expr::invalid, invalidate_any_buried_refs(), ldst_entry(), ls_expr::loads, MEM, NEXT_INSN, NULL, PATTERN, ptr, REG, SET, SET_DEST, SET_SRC, simple_mem(), src, and ls_expr::stores.
Referenced by one_pre_gcse_pass().
| static void compute_local_properties | ( | sbitmap * | transp, | |
| sbitmap * | comp, | |||
| sbitmap * | antloc, | |||
| struct hash_table * | table | |||
| ) | [static] |
Definition at line 1124 of file gcse.c.
References expr::antic_occr, expr::avail_occr, expr::bitmap_index, BLOCK_NUM, compute_transp(), occr::copied_p, occr::deleted_p, expr::expr, i, indx, occr::insn, last_basic_block, occr::next, expr::next_same_hash, NULL, expr::reaching_reg, sbitmap_vector_ones(), sbitmap_vector_zero(), SET_BIT, hash_table::set_p, hash_table::size, and hash_table::table.
Referenced by compute_code_hoist_data(), compute_cprop_data(), and compute_pre_data().
Definition at line 4919 of file gcse.c.
References expr::bitmap_index, compute_local_properties(), EDGE_ABNORMAL, expr::expr, expr_hash_table, edge::flags, FOR_EACH_BB, gcse_file, basic_block_def::index, last_basic_block, may_trap_p(), hash_table::n_elems, expr::next_same_hash, NULL, pre_edge_lcm(), basic_block_def::pred, edge::pred_next, sbitmap_a_or_b(), sbitmap_alloc(), sbitmap_difference(), sbitmap_free, sbitmap_not(), sbitmap_vector_free, sbitmap_vector_zero(), sbitmap_zero(), SET_BIT, hash_table::size, hash_table::table, and ui.
Referenced by one_pre_gcse_pass().
| static void compute_rd | ( | ) | [static] |
Definition at line 2997 of file gcse.c.
References changed, FOR_EACH_BB, fprintf(), gcse_file, basic_block_def::index, sbitmap_copy(), sbitmap_union_of_diff_cg(), and sbitmap_union_of_preds().
Referenced by one_classic_gcse_pass().
Definition at line 1272 of file gcse.c.
References reg_set::insn, INSN_P, NEXT_INSN, note_stores(), PATTERN, and record_set_info().
Referenced by bypass_jumps(), gcse_main(), gmalloc(), and local_cprop_pass().
| static int compute_store_table | ( | void | ) | [static] |
Definition at line 6917 of file gcse.c.
References basic_block_def::end, enumerate_ldsts(), find_moveable_store(), find_reg_note(), FIRST_PSEUDO_REGISTER, FOR_EACH_BB, fprintf(), gcse_file, GET_CODE, basic_block_def::index, insn, INSN_P, last_basic_block, max_gcse_regno, max_reg_num(), NON_SAVING_SETJMP, note_stores(), NULL, NULL_RTX, PATTERN, PREV_INSN, print_ldst_list(), reg_set_info(), REG_SETJMP, regs_invalidated_by_call, ret, sbitmap_vector_alloc(), sbitmap_vector_zero(), SET, SET_BIT, and TEST_HARD_REG_BIT.
Referenced by store_motion().
Definition at line 3711 of file gcse.c.
References BLOCK_NUM, canon_modify_mem_list, canon_true_dependence(), CONST, dest, FIRST_PSEUDO_REGISTER, FOR_EACH_BB, GET_CODE, GET_MODE, GET_RTX_FORMAT, GET_RTX_LENGTH, i, basic_block_def::index, reg_set::insn, MEM, reg_set::next, NULL, PC, r, REG, REGNO, RESET_BIT, rtx_addr_varies_p(), SET_BIT, TEST_BIT, XEXP, XVECEXP, and XVECLEN.
Referenced by compute_local_properties(), and compute_transp().
Definition at line 5662 of file gcse.c.
References expr::bitmap_index, CONSTANT_POOL_ADDRESS_P, basic_block_def::end, expr::expr, expr_hash_table, FOR_EACH_BB, GET_CODE, i, basic_block_def::index, last_basic_block, MEM, expr::next_same_hash, RESET_BIT, sbitmap_vector_ones(), hash_table::size, hash_table::table, and XEXP.
Referenced by compute_code_hoist_data().
Definition at line 3262 of file gcse.c.
References abort, BLOCK_FOR_INSN, expr_reaches_here_p(), occr::insn, INSN_CUID, occr::next, and NULL.
Referenced by handle_avail_expr().
Definition at line 4133 of file gcse.c.
References any_condjump_p(), BLOCK_FOR_INSN, CC0_P, cprop_jump(), dest, GET_CODE, NEXT_INSN, NULL, onlyjump_p(), REG_P, SET_DEST, single_set, and try_replace_reg().
Referenced by cprop_insn(), and do_local_cprop().
| static int cprop | ( | int | alter_jumps | ) | [static] |
Definition at line 4500 of file gcse.c.
References changed, cprop_insn(), basic_block_def::end, ENTRY_BLOCK_PTR, EXIT_BLOCK_PTR, FOR_BB_BETWEEN, fprintf(), gcse_file, GET_CODE, basic_block_def::head, reg_use::insn, INSN_P, mark_oprs_set(), NEXT_INSN, NULL, and reset_opr_set_tables().
| static int cprop_insn | ( | rtx | insn, | |
| int | alter_jumps | |||
| ) | [static] |
Definition at line 4174 of file gcse.c.
References abort, changed, const_prop_count, CONSTANT_P, constprop_register(), copy_prop_count, find_avail_set(), find_reg_equal_equiv_note(), find_used_regs(), FIRST_PSEUDO_REGISTER, fprintf(), gcse_file, GET_CODE, INSN_P, INSN_UID, max_gcse_regno, note_uses(), NULL, oprs_not_set_p(), PATTERN, print_rtl(), REG, reg_use::reg_rtx, reg_use_table, REGNO, SET, SET_SRC, src, try_replace_reg(), and XEXP.
Referenced by cprop().
| static int cprop_jump | ( | basic_block | bb, | |
| rtx | setcc, | |||
| rtx | jump, | |||
| rtx | from, | |||
| rtx | src | |||
| ) | [static] |
Definition at line 4059 of file gcse.c.
References CC0_P, const_prop_count, delete_insn(), emit_barrier_after(), fprintf(), gcse_file, GET_CODE, INSN_UID, modified_between_p(), modified_in_p(), NULL, pc_rtx, pc_set(), print_rtl(), purge_dead_edges(), REGNO, rtx_equal_p(), run_jump_opt_after_gcse, SET_DEST, SET_SRC, simplify_replace_rtx(), single_set, and validate_change().
Referenced by constprop_register().
| int delete_null_pointer_checks | ( | f | ) |
Definition at line 5903 of file gcse.c.
References any_condjump_p(), CONST0_RTX, delete_null_pointer_checks_1(), basic_block_def::end, EQ, FIRST_PSEUDO_REGISTER, FOR_EACH_BB, free(), get_bitmap_width(), GET_CODE, get_condition(), GET_MODE, basic_block_def::index, last_basic_block, last_insn, null_pointer_info::max_reg, max_reg, max_reg_num(), MIN, null_pointer_info::min_reg, n_basic_blocks, n_edges, NE, null_pointer_info::nonnull_killed, null_pointer_info::nonnull_local, onlyjump_p(), REG, REGNO, sbitmap_vector_alloc(), sbitmap_vector_free, xcalloc(), and XEXP.
Referenced by rest_of_compilation().
| static int delete_null_pointer_checks_1 | ( | unsigned int * | block_reg, | |
| sbitmap * | nonnull_avin, | |||
| sbitmap * | nonnull_avout, | |||
| struct null_pointer_info * | npi | |||
| ) | [static] |
Definition at line 5731 of file gcse.c.
References compute_available(), current_block, null_pointer_info::current_block, delete_insn(), emit_barrier_after(), emit_jump_insn_after(), basic_block_def::end, FOR_EACH_BB, gen_jump(), GET_CODE, get_condition(), basic_block_def::head, basic_block_def::index, insn, INSN_P, invalidate_nonnull_info(), JUMP_LABEL, LABEL_NUSES, last_basic_block, last_insn, null_pointer_info::max_reg, MEM, null_pointer_info::min_reg, NE, NEXT_INSN, null_pointer_info::nonnull_killed, null_pointer_info::nonnull_local, note_stores(), PATTERN, prev_nonnote_insn(), purge_dead_edges(), REG, REGNO, sbitmap_vector_zero(), SET_BIT, SET_DEST, SET_SRC, single_set, TEST_BIT, and XEXP.
Referenced by delete_null_pointer_checks().
| static void delete_store | ( | struct ls_expr * | expr, | |
| basic_block | bb | |||
| ) | [static] |
Definition at line 7366 of file gcse.c.
References AVAIL_STORE_LIST, BLOCK_FOR_INSN, gen_reg_rtx(), GET_MODE, i, NULL_RTX, replace_store_insn(), and XEXP.
Referenced by store_motion().
Definition at line 4318 of file gcse.c.
References abort, adjust_libcall_notes(), asm_noperands(), const_prop_count, CONSTANT_P, constprop_register(), copy_prop_count, cselib_lookup(), cselib_val, find_reg_note(), FIRST_PSEUDO_REGISTER, fprintf(), gcse_file, GET_CODE, GET_MODE, INSN_UID, MEM, NULL, NULL_RTX, PATTERN, print_rtl(), REG, REG_EQUIV, REG_P, REGNO, try_replace_reg(), USE, val, and XEXP.
Referenced by local_cprop_pass().
| static void dump_hash_table | ( | FILE * | file, | |
| const char * | name, | |||
| struct hash_table * | table | |||
| ) | [static] |
Definition at line 2302 of file gcse.c.
References expr::bitmap_index, expr::expr, fprintf(), free(), i, hash_table::n_elems, expr::next_same_hash, NULL, print_rtl(), hash_table::size, hash_table::table, xcalloc(), and xmalloc().
Referenced by gcse_after_reload_main(), one_classic_gcse_pass(), one_code_hoisting_pass(), one_cprop_pass(), and one_pre_gcse_pass().
| static int enumerate_ldsts | ( | void | ) | [static] |
Definition at line 6495 of file gcse.c.
References ls_expr::index, n, ls_expr::next, NULL, and ptr.
Referenced by compute_store_table().
Definition at line 1796 of file gcse.c.
References abort, AND, ASM_OPERANDS_INPUT, ASM_OPERANDS_INPUT_CONSTRAINT, ASM_OPERANDS_INPUT_LENGTH, ASM_OPERANDS_OUTPUT_CONSTRAINT, ASM_OPERANDS_OUTPUT_IDX, ASM_OPERANDS_TEMPLATE, EQ, GET_CODE, GET_MODE, GET_RTX_FORMAT, GET_RTX_LENGTH, i, INTVAL, MEM, MEM_ALIAS_SET, MEM_VOLATILE_P, NE, PC, PLUS, REG, REGNO, strcmp(), XEXP, XINT, XOR, XSTR, XVECEXP, XVECLEN, and XWINT.
Referenced by alloc_mem(), expr_equiv_p(), find_rtx_in_ldst(), insert_expr_in_table(), insert_set_in_table(), ldst_entry(), lookup_expr(), lookup_set(), mems_conflict_for_gcse_p(), pre_insert_copy_insn(), pre_ldst_expr_eq(), remove_reachable_equiv_notes(), replace_store_insn(), store_killed_in_insn(), and trim_ld_motion_mems().
| static int expr_killed_p | ( | rtx | x, | |
| basic_block | bb | |||
| ) | [static] |
Definition at line 3076 of file gcse.c.
References CONST, GET_CODE, get_max_uid(), GET_RTX_FORMAT, GET_RTX_LENGTH, i, basic_block_def::index, load_killed_in_block_p(), MEM, PC, REG, REGNO, TEST_BIT, XEXP, XVECEXP, and XVECLEN.
Referenced by compute_ae_kill(), and expr_killed_p().
| static int expr_reaches_here_p | ( | struct occr * | occr, | |
| struct expr * | expr, | |||
| basic_block | bb, | |||
| int | check_self_loop | |||
| ) | [static] |
Definition at line 3241 of file gcse.c.
References expr_reaches_here_p_work(), free(), last_basic_block, visited, and xcalloc().
Referenced by computing_insn().
| static int expr_reaches_here_p_work | ( | struct occr * | occr, | |
| struct expr * | expr, | |||
| basic_block | bb, | |||
| int | check_self_loop, | |||
| char * | visited | |||
| ) | [static] |
Definition at line 3179 of file gcse.c.
References expr::bitmap_index, BLOCK_NUM, basic_block_def::index, NULL, basic_block_def::pred, edge::pred_next, edge::src, and TEST_BIT.
Referenced by expr_reaches_here_p(), and expr_reaches_here_p_work().
Definition at line 3985 of file gcse.c.
References abort, BLOCK_NUM, CONSTANT_P, GET_CODE, lookup_set(), next_set(), NULL_RTX, oprs_not_set_p(), REG, REGNO, SET, set_hash_table, SET_SRC, src, and TEST_BIT.
Referenced by cprop_insn().
Definition at line 4596 of file gcse.c.
References abort, CONSTANT_P, GET_CODE, lookup_set(), next_set(), NULL_RTX, REG, REGNO, result, SET, set_hash_table, SET_SRC, src, and TEST_BIT.
Referenced by bypass_block().
Definition at line 6993 of file gcse.c.
References GET_CODE, GET_RTX_FORMAT, GET_RTX_LENGTH, i, load_kills_store(), MEM, ret, SET, SET_SRC, XEXP, XVECEXP, and XVECLEN.
Referenced by find_loads(), and store_killed_in_insn().
Definition at line 6887 of file gcse.c.
References alloc_INSN_LIST(), dest, GET_CODE, GET_MODE, ldst_entry(), MEM, MEM_VOLATILE_P, PATTERN, ptr, rtx_varies_p(), SET, SET_DEST, SET_SRC, ls_expr::stores, and XEXP.
Referenced by compute_store_table().
Definition at line 6480 of file gcse.c.
References expr_equiv_p(), ls_expr::invalid, ls_expr::next, NULL, ls_expr::pattern, and ptr.
Referenced by mems_conflict_for_gcse_p(), and update_ld_motion_stores().
Definition at line 3873 of file gcse.c.
References GET_CODE, GET_RTX_FORMAT, GET_RTX_LENGTH, i, MAX_USES, REG_P, reg_use::reg_rtx, reg_use_table, x, XEXP, XVECEXP, and XVECLEN.
Referenced by bypass_block(), cprop_insn(), find_used_regs(), and local_cprop_find_used_regs().
Definition at line 6509 of file gcse.c.
Referenced by build_store_vectors(), compute_store_table(), ldst_entry(), print_ldst_list(), store_motion(), and trim_ld_motion_mems().
| static void free_avail_expr_mem | ( | ) | [static] |
Definition at line 3045 of file gcse.c.
References sbitmap_vector_free.
Referenced by one_classic_gcse_pass().
Definition at line 6037 of file gcse.c.
References free_dominance_info(), and sbitmap_vector_free.
Referenced by one_code_hoisting_pass().
Definition at line 3696 of file gcse.c.
References sbitmap_vector_free.
Referenced by one_cprop_pass().
Definition at line 1040 of file gcse.c.
References BITMAP_XFREE, canon_modify_mem_list_set, cuid_insn, free(), free_modify_mem_tables(), modify_mem_list_set, reg_set_bitmap, sbitmap_vector_free, and uid_cuid.
Referenced by bypass_jumps(), gcse_main(), and gmalloc().
| static void free_hash_table | ( | struct hash_table * | table | ) | [static] |
Definition at line 2590 of file gcse.c.
References free().
Referenced by one_classic_gcse_pass(), one_code_hoisting_pass(), one_cprop_pass(), and one_pre_gcse_pass().
Definition at line 2684 of file gcse.c.
References free_EXPR_LIST_node(), free_INSN_LIST_node(), GET_CODE, next, NULL, and XEXP.
Referenced by clear_modify_mem_tables().
Definition at line 6415 of file gcse.c.
References free(), and free_INSN_LIST_list().
Referenced by compute_store_table(), free_ldst_mems(), and trim_ld_motion_mems().
Definition at line 6427 of file gcse.c.
References free_ldst_entry(), ls_expr::next, NULL, and tmp.
Referenced by free_store_memory(), and one_pre_gcse_pass().
Definition at line 2720 of file gcse.c.
References canon_modify_mem_list, clear_modify_mem_tables(), free(), and modify_mem_list.
Referenced by free_gcse_mem(), gcse_main(), and gmalloc().
Definition at line 4891 of file gcse.c.
References NULL, and sbitmap_vector_free.
Referenced by one_pre_gcse_pass().
| static void free_rd_mem | ( | ) | [static] |
Definition at line 2916 of file gcse.c.
References sbitmap_vector_free.
Referenced by one_classic_gcse_pass().
Definition at line 1214 of file gcse.c.
References free(), NULL, obstack_free, and reg_set_obstack.
Referenced by bypass_jumps(), gcse_main(), gmalloc(), and local_cprop_pass().
Definition at line 7396 of file gcse.c.
References free_ldst_mems(), NULL, and sbitmap_vector_free.
Referenced by store_motion().
| static char* gcse_alloc | ( | unsigned long | size | ) | [static] |
Definition at line 976 of file gcse.c.
References bytes_used, gcse_obstack, and obstack_alloc.
Referenced by gcse_main(), gmalloc(), insert_expr_in_table(), and insert_set_in_table().
Definition at line 5400 of file gcse.c.
References copy_insn_1(), emit_insn_after(), find_reg_equal_equiv_note(), gen_move_insn(), REG_EQUAL, rtx_equal_p(), SET_DEST, SET_SRC, set_unique_reg_note(), single_set, and XEXP.
Referenced by hoist_code(), and pre_delete().
Definition at line 712 of file gcse.c.
Referenced by rest_of_compilation(), and rest_of_handle_gcse().
| static int get_bitmap_width | ( | int | n, | |
| int | x, | |||
| int | y | |||
| ) | [static] |
Definition at line 1071 of file gcse.c.
References SBITMAP_ELT_BITS, SBITMAP_ELT_TYPE, and SBITMAP_SET_SIZE.
Referenced by delete_null_pointer_checks().
| static char* gmalloc | ( | unsigned int | size | ) | [static] |
Definition at line 954 of file gcse.c.
References bytes_used, and xmalloc().
Referenced by alloc_gcse_mem(), alloc_hash_table(), alloc_reg_set_mem(), compute_hash_table_work(), and gcse_main().
| static char* grealloc | ( | char * | ptr, | |
| unsigned int | size | |||
| ) | [static] |
| static GTY | ( | () | ) | [static] |
Definition at line 1298 of file gcse.c.
References added_clobbers_hard_reg_p(), const0_rtx, FIRST_PSEUDO_REGISTER, gen_rtx_REG(), gen_rtx_SET, general_operand(), GET_CODE, GET_MODE, make_insn_raw(), NEXT_INSN, PATTERN, PREV_INSN, PUT_MODE, recog(), REG, SET_DEST, SET_SRC, and word_mode.
Definition at line 3412 of file gcse.c.
References abort, can_disregard_other_sets(), changed, computing_insn(), emit_insn_after(), fprintf(), gcse_create_count, gcse_file, gcse_subst_count, gen_reg_rtx(), gen_rtx_SET, GET_CODE, GET_MODE, INSN_UID, max_gcse_regno, reg_set::next, NEXT_INSN, NULL, PATTERN, record_one_set(), REG, REGNO, SET_DEST, SET_SRC, single_set, and validate_change().
Referenced by classic_gcse().
| static void handle_rd_kill_set | ( | rtx | insn, | |
| int | regno, | |||
| basic_block | bb | |||
| ) | [static] |
Definition at line 2927 of file gcse.c.
References BLOCK_NUM, basic_block_def::index, reg_set::insn, INSN_CUID, reg_set::next, and SET_BIT.
Referenced by compute_kill_rd().
| static unsigned int hash_expr | ( | rtx | x, | |
| enum machine_mode | mode, | |||
| int * | do_not_record_p, | |||
| int | hash_table_size | |||
| ) | [static] |
Definition at line 1558 of file gcse.c.
References hash_expr_1().
Referenced by insert_expr_in_table(), lookup_expr(), and lookup_expr_in_table().
| static unsigned int hash_expr_1 | ( | rtx | x, | |
| enum machine_mode | mode, | |||
| int * | do_not_record_p | |||
| ) | [static] |
Definition at line 1591 of file gcse.c.
References abort, ASM_OPERANDS_INPUT, ASM_OPERANDS_INPUT_CONSTRAINT, ASM_OPERANDS_INPUT_LENGTH, ASM_OPERANDS_OUTPUT_CONSTRAINT, ASM_OPERANDS_OUTPUT_IDX, ASM_OPERANDS_TEMPLATE, CODE_LABEL_NUMBER, CONST_DOUBLE_HIGH, CONST_DOUBLE_LOW, CONST_VECTOR_ELT, CONST_VECTOR_NUNITS, GET_CODE, GET_MODE, GET_RTX_FORMAT, GET_RTX_LENGTH, h, hash_string_1(), i, int, INTVAL, MEM, MEM_VOLATILE_P, p, PC, REG, REGNO, units, unsigned, XEXP, XINT, XSTR, XVECEXP, XVECLEN, and XWINT.
Referenced by hash_expr(), and hash_expr_1().
| static void hash_scan_insn | ( | rtx | insn, | |
| struct hash_table * | table, | |||
| int | in_libcall_block | |||
| ) | [static] |
Definition at line 2266 of file gcse.c.
References GET_CODE, hash_scan_call(), hash_scan_clobber(), hash_scan_set(), i, PATTERN, SET, x, XVECEXP, and XVECLEN.
Referenced by compute_hash_table_work().
| static void hash_scan_set | ( | rtx | pat, | |
| rtx | insn, | |||
| struct hash_table * | table | |||
| ) | [static] |
Definition at line 2161 of file gcse.c.
References BLOCK_END, BLOCK_NUM, can_copy_p, CONSTANT_P, dest, find_reg_equal_equiv_note(), find_reg_note(), FIRST_PSEUDO_REGISTER, gen_rtx_SET, GET_CODE, GET_MODE, hash_scan_call(), insert_expr_in_table(), insert_set_in_table(), JUMP_P, MEM, next_nonnote_insn(), NULL_RTX, oprs_anticipatable_p(), oprs_available_p(), REG, REG_EH_REGION, REG_EQUIV, REGNO, SET_DEST, set_noop_p(), hash_table::set_p, SET_SRC, single_set, src, tmp, want_to_gcse_p(), and XEXP.
Referenced by compute_hash_table(), compute_hash_table_work(), and hash_scan_insn().
| static unsigned int hash_set | ( | int | regno, | |
| int | hash_table_size | |||
| ) | [static] |
| static unsigned hash_string_1 | ( | char * | ps | ) | const [inline, static] |
Definition at line 6167 of file gcse.c.
References abort, expr::antic_occr, expr::bitmap_index, BLOCK_FOR_INSN, delete_insn(), occr::deleted_p, expr_hash_table, FOR_EACH_BB, free(), gcse_emit_move_after(), gen_reg_rtx(), get_dominated_by(), GET_MODE, hoist_expr_reaches_here_p(), i, basic_block_def::index, insert_insn_end_bb(), occr::insn, last_basic_block, simple_bitmap_def::n_bits, hash_table::n_elems, occr::next, expr::next_same_hash, NULL, expr::reaching_reg, sbitmap_vector_zero(), SET_BIT, SET_DEST, single_set, hash_table::size, hash_table::table, TEST_BIT, and xcalloc().
Referenced by one_code_hoisting_pass().
| static int hoist_expr_reaches_here_p | ( | basic_block | expr_bb, | |
| int | expr_index, | |||
| basic_block | bb, | |||
| char * | visited | |||
| ) | [static] |
Definition at line 6116 of file gcse.c.
References ENTRY_BLOCK_PTR, free(), basic_block_def::index, last_basic_block, NULL, basic_block_def::pred, edge::pred_next, edge::src, TEST_BIT, and xcalloc().
Referenced by hoist_code(), and hoist_expr_reaches_here_p().
| static void insert_expr_in_table | ( | rtx | x, | |
| enum machine_mode | mode, | |||
| rtx | insn, | |||
| int | antic_p, | |||
| int | avail_p, | |||
| struct hash_table * | table | |||
| ) | [static] |
Definition at line 1946 of file gcse.c.
References expr::antic_occr, expr::avail_occr, expr::bitmap_index, BLOCK_NUM, bytes_used, expr::expr, expr_equiv_p(), gcse_alloc(), hash_expr(), occr::insn, last_expr, hash_table::n_elems, occr::next, expr::next_same_hash, NULL, hash_table::size, and hash_table::table.
Referenced by hash_scan_set().
| static void insert_insn_end_bb | ( | struct expr * | expr, | |
| basic_block | bb, | |||
| int | pre | |||
| ) | [static] |
Definition at line 5094 of file gcse.c.
References abort, add_label_notes(), EDGE_ABNORMAL, emit_insn_after(), emit_insn_before(), basic_block_def::end, find_first_parameter_load(), find_reg_note(), edge::flags, fprintf(), gcse_create_count, gcse_file, GET_CODE, basic_block_def::head, basic_block_def::index, insn, INSN_P, INSN_UID, NEXT_INSN, NOTE_INSN_BASIC_BLOCK_P, note_stores(), NULL_RTX, PATTERN, prev_nonnote_insn(), prev_real_insn(), process_insert_insn(), record_set_info(), REG_CC_SETTER, REGNO, sets_cc0_p(), basic_block_def::succ, edge::succ_next, TEST_BIT, and XEXP.
Referenced by hoist_code(), and pre_edge_insert().
| static void insert_insn_start_bb | ( | rtx | insn, | |
| basic_block | bb | |||
| ) | [static] |
Definition at line 7238 of file gcse.c.
References before, emit_insn_after(), basic_block_def::end, fprintf(), gcse_file, GET_CODE, basic_block_def::head, basic_block_def::index, NEXT_INSN, NOTE_INSN_BASIC_BLOCK, NOTE_LINE_NUMBER, prev, PREV_INSN, and print_inline_rtx().
Referenced by insert_store().
| static void insert_set_in_table | ( | rtx | x, | |
| rtx | insn, | |||
| struct hash_table * | table | |||
| ) | [static] |
Definition at line 2075 of file gcse.c.
References abort, expr::antic_occr, expr::avail_occr, expr::bitmap_index, BLOCK_NUM, bytes_used, copy_rtx(), expr::expr, expr_equiv_p(), gcse_alloc(), GET_CODE, hash_set(), occr::insn, last_expr, hash_table::n_elems, occr::next, expr::next_same_hash, NULL, REG, REGNO, SET, SET_DEST, hash_table::size, and hash_table::table.
Referenced by hash_scan_set().
Definition at line 7273 of file gcse.c.
References abort, edge::dest, EDGE_ABNORMAL, EDGE_INDEX, EDGE_INDEX_NO_EDGE, EXIT_BLOCK_PTR, edge::flags, fprintf(), gcse_file, gen_move_insn(), index(), insert_insn_on_edge(), insert_insn_start_bb(), insn, NULL_RTX, edge::pred_next, print_inline_rtx(), RESET_BIT, edge::src, TEST_BIT, and tmp.
Referenced by store_motion().
Definition at line 6557 of file gcse.c.
References GET_CODE, GET_RTX_FORMAT, GET_RTX_LENGTH, i, ls_expr::invalid, ldst_entry(), MEM, ptr, simple_mem(), XEXP, XVECEXP, and XVECLEN.
Referenced by compute_ld_motion_mems(), and invalidate_any_buried_refs().
Definition at line 5703 of file gcse.c.
References null_pointer_info::current_block, GET_CODE, basic_block_def::index, null_pointer_info::max_reg, null_pointer_info::min_reg, null_pointer_info::nonnull_killed, null_pointer_info::nonnull_local, npi, REG, REGNO, RESET_BIT, SET_BIT, and SUBREG_REG.
Referenced by delete_null_pointer_checks_1().
Definition at line 6384 of file gcse.c.
References ls_expr::expr, expr_equiv_p(), first_ls_expr(), ls_expr::hash_index, ls_expr::index, ls_expr::invalid, ls_expr::loads, ls_expr::next, next_ls_expr(), NULL, NULL_RTX, ls_expr::pattern, ptr, ls_expr::reaching_reg, ls_expr::stores, and xmalloc().
Referenced by compute_ld_motion_mems(), find_moveable_store(), and invalidate_any_buried_refs().
| static int load_killed_in_block_p | ( | basic_block | bb, | |
| int | uid_limit, | |||
| rtx | x, | |||
| int | avail_p | |||
| ) | [static] |
Definition at line 1486 of file gcse.c.
References GET_CODE, INSN_CUID, mems_conflict_for_gcse_p(), modify_mem_list, note_stores(), NULL, PATTERN, and XEXP.
Referenced by expr_killed_p(), hash_scan_set(), oprs_not_set_p(), and oprs_unchanged_p().
Definition at line 6981 of file gcse.c.
References GET_MODE, rtx_addr_varies_p(), and true_dependence().
Referenced by find_loads().
Definition at line 4273 of file gcse.c.
References BITS_PER_WORD, find_used_regs(), GET_CODE, GET_MODE, GET_MODE_BITSIZE, SUBREG_REG, and x.
Referenced by local_cprop_pass().
| static void local_cprop_pass | ( | int | alter_jumps | ) | [static] |
Definition at line 4438 of file gcse.c.
References abort, alloc_reg_set_mem(), changed, compute_sets(), cselib_finish(), cselib_init(), cselib_process_insn(), delete_unreachable_blocks(), do_local_cprop(), find_reg_equal_equiv_note(), find_reg_note(), free_reg_set_mem(), get_insns(), insn, INSN_P, local_cprop_find_used_regs(), MAX_NESTED_LIBCALLS, max_reg_num(), NEXT_INSN, note_uses(), NULL, NULL_RTX, PATTERN, REG_LIBCALL, REG_RETVAL, reg_use::reg_rtx, reg_use_table, and XEXP.
Referenced by one_cprop_pass().
| static struct expr* lookup_expr | ( | rtx | pat, | |
| struct hash_table * | table | |||
| ) | [static, read] |
Definition at line 2617 of file gcse.c.
References expr::expr, expr_equiv_p(), GET_MODE, hash_expr(), expr::next_same_hash, NULL, hash_table::size, and hash_table::table.
Referenced by classic_gcse().
| static struct expr* lookup_set | ( | unsigned int | regno, | |
| rtx | pat, | |||
| struct hash_table * | table | |||
| ) | [static, read] |
Definition at line 2642 of file gcse.c.
References expr::expr, expr_equiv_p(), hash_set(), expr::next_same_hash, REGNO, SET_DEST, hash_table::size, and hash_table::table.
Referenced by find_avail_set(), and find_bypass_set().
Definition at line 2813 of file gcse.c.
References CONST_OR_PURE_CALL_P, and record_last_mem_set_info().
Referenced by compute_hash_table_work(), mark_oprs_set(), and mark_set().
Definition at line 2846 of file gcse.c.
References GET_CODE, record_last_mem_set_info(), REG, reg_set_bitmap, REGNO, SET_REGNO_REG_SET, and XEXP.
Referenced by mark_oprs_set().
Definition at line 2864 of file gcse.c.
References GET_CODE, i, mark_call(), mark_clobber(), mark_set(), PATTERN, SET, x, XVECEXP, and XVECLEN.
Referenced by classic_gcse(), and cprop().
Definition at line 2823 of file gcse.c.
References dest, GET_CODE, mark_call(), MEM, record_last_mem_set_info(), REG, reg_set_bitmap, REGNO, SET_DEST, SET_REGNO_REG_SET, SET_SRC, and XEXP.
Referenced by mark_oprs_set(), and mark_set_regs().
Definition at line 1446 of file gcse.c.
References find_rtx_in_ldst(), GET_CODE, GET_MODE, MEM, NULL, rtx_addr_varies_p(), true_dependence(), and XEXP.
Referenced by load_killed_in_block_p().
Definition at line 6517 of file gcse.c.
Referenced by build_store_vectors(), compute_store_table(), ldst_entry(), print_ldst_list(), and store_motion().
Definition at line 2669 of file gcse.c.
References expr::expr, expr::next_same_hash, REGNO, and SET_DEST.
Referenced by find_avail_set(), and find_bypass_set().
| static int one_classic_gcse_pass | ( | int | pass | ) | [static] |
Definition at line 3629 of file gcse.c.
References alloc_avail_expr_mem(), alloc_hash_table(), alloc_rd_mem(), bytes_used, changed, classic_gcse(), compute_ae_gen(), compute_ae_kill(), compute_available(), compute_hash_table(), compute_kill_rd(), compute_rd(), current_function_name, dump_hash_table(), expr_hash_table, fprintf(), free_avail_expr_mem(), free_hash_table(), free_rd_mem(), gcse_create_count, gcse_file, gcse_subst_count, last_basic_block, max_cuid, and hash_table::n_elems.
Referenced by gcse_main().
| static int one_code_hoisting_pass | ( | void | ) | [static] |
Definition at line 6333 of file gcse.c.
References alloc_code_hoist_mem(), alloc_hash_table(), changed, compute_code_hoist_data(), compute_hash_table(), dump_hash_table(), expr_hash_table, free_code_hoist_mem(), free_hash_table(), gcse_file, hoist_code(), last_basic_block, max_cuid, and hash_table::n_elems.
Referenced by gcse_main(), and gmalloc().
| static int one_cprop_pass | ( | int | pass, | |
| int | alter_jumps | |||
| ) | [static] |
Definition at line 4548 of file gcse.c.
References alloc_cprop_mem(), alloc_hash_table(), bypass_conditional_jumps(), bytes_used, changed, compute_cprop_data(), compute_hash_table(), const_prop_count, copy_prop_count, cprop(), current_function_name, delete_unreachable_blocks(), dump_hash_table(), fprintf(), free_cprop_mem(), free_hash_table(), gcse_file, last_basic_block, local_cprop_pass(), max_cuid, hash_table::n_elems, and set_hash_table.
Referenced by bypass_jumps(), gcse_main(), and gmalloc().
| static int one_pre_gcse_pass | ( | int | pass | ) | [static] |
Definition at line 5560 of file gcse.c.
References add_noreturn_fake_exit_edges(), alloc_hash_table(), alloc_pre_mem(), bytes_used, changed, compute_hash_table(), compute_ld_motion_mems(), compute_pre_data(), current_function_name, dump_hash_table(), expr_hash_table, flag_gcse_lm, fprintf(), free_edge_list(), free_hash_table(), free_ldst_mems(), free_pre_mem(), gcse_create_count, gcse_file, gcse_subst_count, last_basic_block, max_cuid, hash_table::n_elems, pre_gcse(), remove_fake_edges(), and trim_ld_motion_mems().
Referenced by gcse_main(), and gmalloc().
Definition at line 1533 of file gcse.c.
References oprs_unchanged_p().
Referenced by hash_scan_set().
Definition at line 1543 of file gcse.c.
References oprs_unchanged_p().
Referenced by hash_scan_set().
Definition at line 2749 of file gcse.c.
References BLOCK_FOR_INSN, CONST, GET_CODE, GET_RTX_FORMAT, GET_RTX_LENGTH, i, INSN_CUID, load_killed_in_block_p(), MEM, PC, REG, reg_set_bitmap, REGNO, REGNO_REG_SET_P, XEXP, XVECEXP, and XVECLEN.
Referenced by classic_gcse(), cprop_insn(), find_avail_set(), and oprs_not_set_p().
Definition at line 1351 of file gcse.c.
References CONST, reg_avail_info::first_set, GET_CODE, GET_RTX_FORMAT, GET_RTX_LENGTH, i, info, INSN_CUID, reg_avail_info::last_bb, reg_avail_info::last_set, load_killed_in_block_p(), MEM, PC, REG, REGNO, XEXP, XVECEXP, and XVECLEN.
Referenced by eliminate_partially_redundant_loads(), hash_scan_set(), oprs_anticipatable_p(), oprs_available_p(), and oprs_unchanged_p().
| static void delete_store PARAMS | ( | (struct ls_expr *, basic_block) | ) | [static] |
| static int store_killed_after PARAMS | ( | (rtx, rtx, basic_block) | ) | [static] |
| static int pre_expr_reaches_here_p_work PARAMS | ( | (basic_block, struct expr *, basic_block, char *) | ) | [static] |
| static int expr_reaches_here_p_work PARAMS | ( | (struct occr *, struct expr *, basic_block, int, char *) | ) | [static] |
| static int delete_null_pointer_checks_1 PARAMS | ( | (unsigned int *, sbitmap *, sbitmap *, struct null_pointer_info *) | ) | [static] |
| static int expr_reaches_here_p PARAMS | ( | (struct occr *, struct expr *, basic_block, int) | ) | [static] |
| static void compute_ae_kill PARAMS | ( | (sbitmap *, sbitmap *, struct hash_table *) | ) | [static] |
| static int expr_killed_p PARAMS | ( | (rtx, basic_block) | ) | [static] |
| static void handle_rd_kill_set PARAMS | ( | (rtx, int, basic_block) | ) | [static] |
| static int hoist_expr_reaches_here_p PARAMS | ( | (basic_block, int, basic_block, char *) | ) | [static] |
| static void insert_insn_end_bb PARAMS | ( | (struct expr *, basic_block, int) | ) | [static] |
| static int pre_expr_reaches_here_p PARAMS | ( | (basic_block, struct expr *, basic_block) | ) | [static] |
| static int bypass_block PARAMS | ( | (basic_block, rtx, rtx) | ) | [static] |
| static int load_killed_in_block_p PARAMS | ( | (basic_block, int, rtx, int) | ) | [static] |
| static int cprop_jump PARAMS | ( | (basic_block, rtx, rtx, rtx, rtx) | ) | [static] |
| static void compute_local_properties PARAMS | ( | (sbitmap *, sbitmap *, sbitmap *, struct hash_table *) | ) | [static] |
| static struct expr* lookup_set PARAMS | ( | (unsigned int, rtx, struct hash_table *) | ) | [static, read] |
| static struct expr* lookup_expr PARAMS | ( | (rtx, struct hash_table *) | ) | [static, read] |
| static void dump_hash_table PARAMS | ( | (FILE *, const char *, struct hash_table *) | ) | [static] |
| static void alloc_hash_table PARAMS | ( | (int, struct hash_table *, int) | ) | [static] |
| static void compute_hash_table PARAMS | ( | (struct hash_table *) | ) | [static] |
| static unsigned int hash_set PARAMS | ( | (int, int) | ) | [static] |
| static unsigned int hash_string_1 PARAMS | ( | (const char *) | ) | [static] |
Definition at line 635 of file mips-tfile.c.
| static unsigned int hash_expr_1 PARAMS | ( | (rtx, enum machine_mode, int *) | ) | [static] |
| static unsigned int hash_expr PARAMS | ( | (rtx, enum machine_mode, int *, int) | ) | [static] |
| static void insert_expr_in_table PARAMS | ( | (rtx, enum machine_mode, rtx, int, int, struct hash_table *) | ) | [static] |
| static void hash_scan_set PARAMS | ( | (rtx, rtx, struct hash_table *) | ) | [static] |
| static void hash_scan_insn PARAMS | ( | (rtx, struct hash_table *, int) | ) | [static] |
| static int get_bitmap_width PARAMS | ( | (int, int, int) | ) | [static] |
| static void alloc_reg_set_mem PARAMS | ( | (int) | ) | [static] |
| static char* gcse_alloc PARAMS | ( | (unsigned long) | ) | [static] |
| static char* grealloc PARAMS | ( | (char *, unsigned int) | ) | [static] |
| static char* gmalloc PARAMS | ( | (unsigned int) | ) | [static] |
Definition at line 77 of file cplus-dem.c.
| static int pre_delete | ( | void | ) | [static] |
Definition at line 5435 of file gcse.c.
References abort, expr::antic_occr, expr::bitmap_index, BLOCK_FOR_INSN, changed, delete_insn(), occr::deleted_p, expr_hash_table, fprintf(), gcse_emit_move_after(), gcse_file, gcse_subst_count, gen_reg_rtx(), GET_MODE, i, basic_block_def::index, indx, occr::insn, INSN_CUID, INSN_UID, occr::next, expr::next_same_hash, NULL, expr::reaching_reg, REGNO, SET_BIT, SET_DEST, single_set, hash_table::size, hash_table::table, and TEST_BIT.
Referenced by pre_gcse().
Definition at line 5226 of file gcse.c.
References expr::antic_occr, expr::bitmap_index, occr::deleted_p, EDGE_ABNORMAL, simple_bitmap_def::elms, expr_hash_table, edge::flags, fprintf(), gcse_create_count, gcse_file, i, index(), basic_block_def::index, INDEX_EDGE, INDEX_EDGE_PRED_BB, INDEX_EDGE_SUCC_BB, indx, insert(), insert_insn_end_bb(), insert_insn_on_edge(), occr::insn, int, hash_table::n_elems, occr::next, NULL, NULL_RTX, NUM_EDGES, process_insert_insn(), expr::reaching_reg, SBITMAP_ELT_BITS, SBITMAP_ELT_TYPE, sbitmap_vector_alloc(), sbitmap_vector_free, sbitmap_vector_zero(), SET_BIT, simple_bitmap_def::size, TEST_BIT, and update_ld_motion_stores().
Referenced by pre_gcse().
| static int pre_expr_reaches_here_p | ( | basic_block | occr_bb, | |
| struct expr * | expr, | |||
| basic_block | bb | |||
| ) | [static] |
Definition at line 5039 of file gcse.c.
References free(), last_basic_block, pre_expr_reaches_here_p_work(), visited, and xcalloc().
Referenced by pre_insert_copies().
| static int pre_expr_reaches_here_p_work | ( | basic_block | occr_bb, | |
| struct expr * | expr, | |||
| basic_block | bb, | |||
| char * | visited | |||
| ) | [static] |
Definition at line 4990 of file gcse.c.
References expr::bitmap_index, ENTRY_BLOCK_PTR, basic_block_def::index, NULL, basic_block_def::pred, edge::pred_next, edge::src, and TEST_BIT.
Referenced by pre_expr_reaches_here_p(), and pre_expr_reaches_here_p_work().
| static int pre_gcse | ( | void | ) | [static] |
Definition at line 5513 of file gcse.c.
References expr::bitmap_index, changed, commit_edge_insertions(), expr_hash_table, free(), i, max_cuid, hash_table::n_elems, expr::next_same_hash, NULL, pre_delete(), pre_edge_insert(), pre_insert_copies(), sbitmap_alloc(), sbitmap_free, sbitmap_zero(), hash_table::size, hash_table::table, and xcalloc().
Referenced by one_pre_gcse_pass().
Definition at line 5342 of file gcse.c.
References expr::antic_occr, expr::avail_occr, BLOCK_FOR_INSN, occr::copied_p, occr::deleted_p, expr_hash_table, i, occr::insn, INSN_CUID, occr::next, expr::next_same_hash, NULL, pre_expr_reaches_here_p(), pre_insert_copy_insn(), expr::reaching_reg, hash_table::size, hash_table::table, and TEST_BIT.
Referenced by pre_gcse().
Definition at line 5310 of file gcse.c.
References abort, BLOCK_NUM, emit_insn_after(), fprintf(), gcse_create_count, gcse_file, gen_move_insn(), indx, INSN_UID, record_one_set(), REGNO, SET_DEST, single_set, and update_ld_motion_stores().
Referenced by pre_insert_copies().
Definition at line 6444 of file gcse.c.
References first_ls_expr(), fprintf(), ls_expr::index, ls_expr::loads, next_ls_expr(), NULL, ls_expr::pattern, print_rtl(), ptr, and ls_expr::stores.
Referenced by build_store_vectors(), compute_store_table(), and trim_ld_motion_mems().
Definition at line 5059 of file gcse.c.
References abort, copy_rtx(), emit_insn(), emit_move_insn(), end_sequence(), exp, gen_rtx_SET, general_operand(), get_insns(), GET_MODE, insn_invalid_p(), and start_sequence().
Referenced by insert_insn_end_bb(), and pre_edge_insert().
Definition at line 2418 of file gcse.c.
References alloc_INSN_LIST(), bitmap_set_bit(), BLOCK_NUM, canon_list_insert(), canon_modify_mem_list, canon_modify_mem_list_set, GET_CODE, modify_mem_list, modify_mem_list_set, note_stores(), and PATTERN.
Referenced by mark_call(), mark_clobber(), mark_set(), record_last_set_info(), and record_opr_changes().
Definition at line 2358 of file gcse.c.
References reg_avail_info::first_set, basic_block_def::index, info, INSN_CUID, reg_avail_info::last_bb, reg_avail_info::last_set, and SET_BIT.
Referenced by compute_hash_table_work(), record_last_set_info(), and record_opr_changes().
Definition at line 2446 of file gcse.c.
References GET_CODE, GET_MODE, MEM, push_operand(), record_last_mem_set_info(), record_last_reg_set_info(), REG, REGNO, and SUBREG_REG.
Referenced by compute_hash_table_work(), and record_opr_changes().
Definition at line 1223 of file gcse.c.
References bytes_used, grealloc(), reg_set::insn, memset, reg_set::next, obstack_alloc, reg_set_obstack, reg_set_table_size, and REG_SET_TABLE_SLOP.
Referenced by handle_avail_expr(), pre_insert_copy_insn(), record_set_info(), and update_ld_motion_stores().
Definition at line 1256 of file gcse.c.
References FIRST_PSEUDO_REGISTER, GET_CODE, record_one_set(), REG, and REGNO.
Referenced by compute_sets(), and insert_insn_end_bb().
Definition at line 4640 of file gcse.c.
References insn, INSN_P, NEXT_INSN, and reg_set_p().
Referenced by bypass_block(), and eliminate_partially_redundant_load().
Definition at line 6785 of file gcse.c.
References GET_CODE, REG, REGNO, SET_BIT, and SUBREG_REG.
Referenced by compute_store_table().
| static void replace_store_insn | ( | rtx | reg, | |
| rtx | del, | |||
| basic_block | bb | |||
| ) | [static] |
Definition at line 7339 of file gcse.c.
References delete_insn(), emit_insn_after(), fprintf(), gcse_file, gen_move_insn(), basic_block_def::index, insn, PATTERN, print_inline_rtx(), and SET_SRC.
Referenced by build_store_vectors(), and delete_store().
Definition at line 2733 of file gcse.c.
References clear_modify_mem_tables(), CLEAR_REG_SET, and reg_set_bitmap.
Referenced by classic_gcse(), compute_hash_table(), cprop(), and eliminate_partially_redundant_loads().
| static int simple_mem | ( | rtx | x | ) | [static] |
Definition at line 6530 of file gcse.c.
References GET_CODE, GET_MODE, MEM, MEM_VOLATILE_P, rtx_varies_p(), and XEXP.
Referenced by compute_ld_motion_mems(), and invalidate_any_buried_refs().
| static int store_killed_after | ( | rtx | x, | |
| rtx | insn, | |||
| basic_block | bb | |||
| ) | [static] |
Definition at line 7061 of file gcse.c.
References basic_block_def::end, last, NEXT_INSN, store_killed_in_insn(), store_ops_ok(), and XEXP.
Referenced by build_store_vectors(), and find_moveable_store().
| static int store_killed_before | ( | rtx | x, | |
| rtx | insn, | |||
| basic_block | bb | |||
| ) | [static] |
Definition at line 7088 of file gcse.c.
References first, basic_block_def::head, PREV_INSN, store_killed_in_insn(), store_ops_ok(), and XEXP.
Referenced by build_store_vectors(), and find_moveable_store().
Definition at line 7030 of file gcse.c.
References CONST_OR_PURE_CALL_P, expr_equiv_p(), find_loads(), GET_CODE, GET_RTX_CLASS, MEM, PATTERN, pure_call_p(), SET, SET_DEST, and SET_SRC.
Referenced by store_killed_after(), and store_killed_before().
Definition at line 7423 of file gcse.c.
References add_noreturn_fake_exit_edges(), build_store_vectors(), commit_edge_insertions(), compute_store_table(), delete_store(), end_alias_analysis(), first_ls_expr(), FOR_EACH_BB, fprintf(), free_edge_list(), free_store_memory(), gcse_file, get_insns(), basic_block_def::index, ls_expr::index, INDEX_EDGE, init_alias_analysis(), insert_store(), next_ls_expr(), NULL, NUM_EDGES, pre_edge_rev_lcm(), print_rtl(), ptr, remove_fake_edges(), sbitmap_vector_free, TEST_BIT, and x.
Referenced by gcse_main(), and gmalloc().
| static int store_ops_ok | ( | rtx | x, | |
| basic_block | bb | |||
| ) | [static] |
Definition at line 6800 of file gcse.c.
References CONST, GET_CODE, GET_RTX_FORMAT, GET_RTX_LENGTH, i, basic_block_def::index, MEM, PC, REG, REGNO, TEST_BIT, XEXP, XVECEXP, and XVECLEN.
Referenced by store_killed_after(), store_killed_before(), and store_ops_ok().
Definition at line 6653 of file gcse.c.
References expr::expr, ls_expr::expr, expr_equiv_p(), expr_hash_table, first_ls_expr(), free_ldst_entry(), gcse_file, i, ls_expr::invalid, last, ls_expr::next, expr::next_same_hash, NULL, ls_expr::pattern, print_ldst_list(), ptr, hash_table::size, and hash_table::table.
Referenced by one_pre_gcse_pass().
Definition at line 3925 of file gcse.c.
References apply_change_group(), CONSTANT_P, copy_rtx(), find_reg_equal_equiv_note(), GET_CODE, num_changes_pending(), REG_EQUAL, reg_mentioned_p(), REG_P, remove_note(), rtx_equal_p(), SET_SRC, set_unique_reg_note(), simplify_replace_rtx(), simplify_rtx(), single_set, src, validate_change(), validate_replace_src_group(), and XEXP.
Referenced by constprop_register(), cprop_insn(), and do_local_cprop().
Definition at line 6720 of file gcse.c.
References copy, emit_insn_before(), find_rtx_in_ldst(), fprintf(), gcse_create_count, gcse_file, gen_move_insn(), insn, INSN_CODE, NULL_RTX, PATTERN, print_inline_rtx(), print_rtl(), record_one_set(), REGNO, SET_SRC, src, ls_expr::stores, and XEXP.
Referenced by pre_edge_insert(), pre_insert_copies(), and pre_insert_copy_insn().
int bytes_used [static] |
Definition at line 508 of file gcse.c.
Referenced by _dwarf_ld_sort_lines(), _xlate_do_local_reginfo(), _xlate_do_simple_32bit_header(), _xlate_do_simple_64bit_header(), bypass_jumps(), do_32bit_merge_header(), do_64bit_merge_header(), do_reginfo_merge(), ffelex_cfelex_(), ffelex_get_directive_line_(), gcalloc(), gcse_alloc(), gcse_main(), gmalloc(), insert_expr_in_table(), insert_set_in_table(), one_classic_gcse_pass(), one_cprop_pass(), one_pre_gcse_pass(), and record_one_set().
int can_copy_init_p [static] |
char can_copy_p[(int) NUM_MACHINE_MODES] [static] |
Definition at line 303 of file gcse.c.
Referenced by compute_can_copy(), hash_scan_set(), may_assign_reg_p(), and scan_loop().
rtx* canon_modify_mem_list [static] |
Definition at line 501 of file gcse.c.
Referenced by alloc_gcse_mem(), canon_list_insert(), clear_modify_mem_tables(), compute_transp(), free_modify_mem_tables(), gcse_main(), gmalloc(), and record_last_mem_set_info().
Definition at line 502 of file gcse.c.
Referenced by alloc_gcse_mem(), canon_list_insert(), clear_modify_mem_tables(), free_gcse_mem(), and record_last_mem_set_info().
sbitmap* comp [static] |
Definition at line 4843 of file gcse.c.
Referenced by avr_out_sbxx_branch(), CGEMIT_Print_Inst(), PARTITION_GRAPH::Complete_Partition_Graph(), dfs(), do_build_assign_ref(), do_with_relocs(), find_opt(), get_computation_cost_at(), hash_table_init(), hash_table_init_n(), invert_exp_1(), iq2000_output_conditional_branch(), joust(), mips_output_conditional_branch(), oasys_write_data(), op_iter_init_phidef(), op_iter_init_phiuse(), comp_same_pt::operator()(), REGION_search_block(), REGION_search_set(), reverse_comparison(), rewrite_use_address(), rewrite_use_compare(), rewrite_use_nonlinear_expr(), rtl_lv_add_condition_to_bb(), set_component_ssa_name(), TB_get_command(), TB_get_tree_code(), TI_ASM_DisAsm_Inst(), TI_ASM_Get_Bundle_Reloc_Value(), TI_ASM_Pack_Inst(), TI_ASM_Print_Inst(), TI_ASM_Set_Bundle_Reloc_Value(), TI_ASM_Unpack_Inst(), update_phi_components(), and validate_all_switches().
int const_prop_count [static] |
Definition at line 515 of file gcse.c.
Referenced by cprop_insn(), cprop_jump(), do_local_cprop(), and one_cprop_pass().
int copy_prop_count [static] |
Definition at line 517 of file gcse.c.
Referenced by cprop_insn(), do_local_cprop(), and one_cprop_pass().
sbitmap* cprop_absaltered [static] |
sbitmap* cprop_avin [static] |
sbitmap* cprop_avout [static] |
sbitmap* cprop_pavloc [static] |
basic_block current_bb [static] |
Definition at line 1292 of file gcse.c.
Referenced by DCE::Check_conditional_branches_pred(), print_rtl_slim_with_bb(), and DAG_BUILDER::Set_TN_BB_Bitset_Table().
FILE* debug_stderr [static] |
struct hash_table expr_hash_table [static] |
Definition at line 382 of file gcse.c.
Referenced by classic_gcse(), compute_code_hoist_data(), compute_pre_data(), compute_transpout(), hoist_code(), one_classic_gcse_pass(), one_code_hoisting_pass(), one_pre_gcse_pass(), pre_delete(), pre_edge_insert(), pre_gcse(), pre_insert_copies(), and trim_ld_motion_mems().
int gcse_create_count [static] |
Definition at line 513 of file gcse.c.
Referenced by handle_avail_expr(), insert_insn_end_bb(), one_classic_gcse_pass(), one_pre_gcse_pass(), pre_edge_insert(), pre_insert_copy_insn(), and update_ld_motion_stores().
Definition at line 279 of file gcse.c.
Referenced by build_store_vectors(), bypass_block(), bypass_jumps(), compute_code_hoist_data(), compute_code_hoist_vbeinout(), compute_pre_data(), compute_rd(), compute_store_table(), cprop(), cprop_insn(), cprop_jump(), do_local_cprop(), find_implicit_sets(), gcse_main(), gmalloc(), handle_avail_expr(), insert_insn_end_bb(), insert_insn_start_bb(), insert_store(), one_classic_gcse_pass(), one_code_hoisting_pass(), one_cprop_pass(), one_pre_gcse_pass(), pre_delete(), pre_edge_insert(), pre_insert_copy_insn(), remove_reachable_equiv_notes(), replace_store_insn(), store_motion(), trim_ld_motion_mems(), and update_ld_motion_stores().
rtx gcse_mem_operand [static] |
int gcse_mems_conflict_p [static] |
struct obstack gcse_obstack [static] |
Definition at line 298 of file gcse.c.
Referenced by bypass_jumps(), gcse_alloc(), gcse_main(), and gmalloc().
int gcse_subst_count [static] |
Definition at line 511 of file gcse.c.
Referenced by handle_avail_expr(), one_classic_gcse_pass(), one_pre_gcse_pass(), and pre_delete().
sbitmap* hoist_exprs [static] |
sbitmap* hoist_vbein [static] |
sbitmap* hoist_vbeout [static] |
int max_cuid [static] |
Definition at line 402 of file gcse.c.
Referenced by alloc_gcse_mem(), compute_kill_rd(), one_classic_gcse_pass(), one_code_hoisting_pass(), one_cprop_pass(), one_pre_gcse_pass(), and pre_gcse().
unsigned int max_gcse_regno [static] |
Definition at line 413 of file gcse.c.
Referenced by alloc_gcse_mem(), build_store_vectors(), bypass_block(), bypass_jumps(), compute_hash_table_work(), compute_store_table(), cprop_insn(), gcse_main(), gmalloc(), and handle_avail_expr().
rtx* modify_mem_list [static] |
Definition at line 497 of file gcse.c.
Referenced by alloc_gcse_mem(), clear_modify_mem_tables(), free_modify_mem_tables(), gcse_main(), gmalloc(), load_killed_in_block_p(), and record_last_mem_set_info().
Definition at line 498 of file gcse.c.
Referenced by alloc_gcse_mem(), clear_modify_mem_tables(), compute_transp(), free_gcse_mem(), and record_last_mem_set_info().
int num_stores [static] |
sbitmap* pre_delete_map [static] |
sbitmap* pre_insert_map [static] |
struct ls_expr* pre_ldst_mems = NULL [static] |
sbitmap* pre_optimal [static] |
sbitmap* pre_redundant [static] |
sbitmap pre_redundant_insns [static] |
sbitmap * reaching_defs [static] |
struct reg_avail_info* reg_avail_info [static] |
regset reg_set_bitmap [static] |
Definition at line 486 of file gcse.c.
Referenced by alloc_gcse_mem(), free_gcse_mem(), mark_clobber(), mark_set(), oprs_not_set_p(), and reset_opr_set_tables().
sbitmap* reg_set_in_block [static] |
struct obstack reg_set_obstack [static] |
Definition at line 1197 of file gcse.c.
Referenced by alloc_reg_set_mem(), free_reg_set_mem(), and record_one_set().
reg_set** reg_set_table [static] |
int reg_set_table_size [static] |
int reg_use_count [static] |
struct reg_use reg_use_table[MAX_USES] [static] |
Definition at line 3860 of file gcse.c.
Referenced by bypass_block(), cprop_insn(), find_used_regs(), and local_cprop_pass().
int run_jump_opt_after_gcse [static] |
struct hash_table set_hash_table [static] |
Definition at line 385 of file gcse.c.
Referenced by compute_cprop_data(), find_avail_set(), find_bypass_set(), and one_cprop_pass().
1.5.6