#include "config.h"#include "system.h"#include "coretypes.h"#include "tm.h"#include "toplev.h"#include "rtl.h"#include "tree.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 "intl.h"#include "obstack.h"#include "hashtab.h"#include "params.h"#include "target.h"#include "timevar.h"#include "tree-pass.h"

Go to the source code of this file.
| #define INSN_CUID | ( | INSN | ) | (uid_cuid[INSN_UID (INSN)]) |
Definition at line 169 of file postreload-gcse.c.
Definition at line 220 of file postreload-gcse.c.
References expr_equiv_p(), expr_obstack, expr_table, FIRST_PSEUDO_REGISTER, FOR_BB_INSNS, FOR_EACH_BB, gcc_obstack_init, get_max_uid(), hash_expr_for_htab(), htab_create(), i, occr::insn, INSN_P, INSN_UID, MAX, modifies_mem_obstack, NULL, obstack_alloc, occr_obstack, uid_cuid, unoccr_obstack, XCNEWVEC, and xmalloc().
| static bool bb_has_well_behaved_predecessors | ( | basic_block | bb | ) | [static] |
Definition at line 968 of file postreload-gcse.c.
References BB_END, EDGE_ABNORMAL, EDGE_COUNT, EDGE_CRITICAL_P, edge::flags, FOR_EACH_EDGE, JUMP_TABLE_DATA_P, and edge::src.
Definition at line 798 of file postreload-gcse.c.
References FOR_BB_INSNS, FOR_EACH_BB, GET_CODE, hash_scan_set(), modifies_mem::insn, INSN_P, PATTERN, record_opr_changes(), reset_opr_set_tables(), and SET.
Definition at line 1311 of file postreload-gcse.c.
References delete_redundant_insns_1(), dump_file, expr_table, fprintf(), htab_traverse(), and NULL.
Definition at line 1286 of file postreload-gcse.c.
References expr::avail_occr, delete_insn(), occr::deleted_p, dump_file, fprintf(), occr::insn, occr::next, NULL, print_rtl_single(), and stats.
Definition at line 458 of file postreload-gcse.c.
References dump_hash_table_entry(), expr_table, fprintf(), htab_collisions(), htab_elements, htab_size, and htab_traverse().
Definition at line 435 of file postreload-gcse.c.
References expr::avail_occr, expr::expr, fprintf(), expr::hash, occr::insn, occr::next, print_rtl(), and print_rtl_single().
| static void eliminate_partially_redundant_load | ( | basic_block | bb, | |
| rtx | insn, | |||
| struct expr * | expr | |||
| ) | [static] |
Definition at line 1014 of file postreload-gcse.c.
References expr::avail_occr, BB_END, gcc_target::cannot_modify_jumps_p, cleanup(), constrain_operands(), copy_insn(), copy_rtx(), delete_insn(), occr::deleted_p, dest, edge::dest, dump_file, EDGE_CRITICAL_P, extract_insn(), flag_branch_probabilities, FOR_EACH_EDGE, fprintf(), gcc_assert, GCSE_AFTER_RELOAD_CRITICAL_FRACTION, GCSE_AFTER_RELOAD_PARTIAL_FRACTION, gen_move_insn(), get_avail_load_store_reg(), get_bb_avail_insn(), insert_insn_on_edge(), occr::insn, unoccr::insn, unoccr::next, occr::next, NEXT_INSN, NULL, NULL_RTX, obstack_alloc, obstack_free, optimize_size, PATTERN, unoccr::pred, print_rtl(), print_rtl_single(), reg_killed_on_edge(), reg_set_between_after_reload_p(), reg_set_or_used_since_bb_start(), reg_used_on_edge(), REGNO, SET_DEST, set_noop_p(), edge::src, stats, targetm, and unoccr_obstack.
Definition at line 1211 of file postreload-gcse.c.
References bb_has_well_behaved_predecessors(), commit_edge_insertions(), eliminate_partially_redundant_load(), ENTRY_BLOCK_PTR, EXIT_BLOCK_PTR, flag_non_call_exceptions, FOR_BB_BETWEEN, FOR_BB_INSNS, general_operand(), GET_CODE, GET_MODE, unoccr::insn, INSN_P, lookup_expr_in_table(), may_trap_p(), MEM_P, MEM_VOLATILE_P, NONJUMP_INSN_P, NULL, oprs_unchanged_p(), PATTERN, probably_cold_bb_p(), record_opr_changes(), REG_P, reset_opr_set_tables(), SET, SET_DEST, SET_SRC, side_effects_p(), and src.
Definition at line 309 of file postreload-gcse.c.
References exp_equiv_p(), expr::expr, gcc_assert, and expr::hash.
Definition at line 565 of file postreload-gcse.c.
References GET_CODE, GET_MODE, MEM_P, mems_conflict_p, rtx_addr_varies_p(), true_dependence(), and XEXP.
Definition at line 266 of file postreload-gcse.c.
References expr_obstack, expr_table, free(), htab_delete(), modifies_mem_obstack, NULL, obstack_free, occr_obstack, uid_cuid, and unoccr_obstack.
Definition at line 1322 of file postreload-gcse.c.
References alloc_mem(), compute_hash_table(), delete_redundant_insns(), dump_file, dump_hash_table(), eliminate_partially_redundant_loads(), end_alias_analysis(), expr_table, fprintf(), free_mem(), htab_elements, init_alias_analysis(), memset, and stats.
Definition at line 952 of file postreload-gcse.c.
References gcc_assert, PATTERN, REG_P, SET_DEST, and SET_SRC.
| static struct occr * get_bb_avail_insn | ( | basic_block | bb, | |
| struct occr * | occr | |||
| ) | [static, read] |
Definition at line 991 of file postreload-gcse.c.
References BLOCK_FOR_INSN, occr::insn, occr::next, and NULL.
Definition at line 736 of file postreload-gcse.c.
References can_copy_p, dest, FIRST_STACK_REG, flag_float_store, FLOAT_MODE_P, general_operand(), GET_MODE, insert_expr_in_table(), INSN_CUID, JUMP_P, LAST_STACK_REG, load_killed_in_block_p(), MEM_P, oprs_unchanged_p(), PATTERN, REG_P, REGNO, SET_DEST, set_noop_p(), SET_SRC, src, STACK_REGS, and XEXP.
Definition at line 325 of file postreload-gcse.c.
References expr::avail_occr, BLOCK_NUM, occr::deleted_p, expr::expr, expr_obstack, expr_table, expr::hash, hash_expr(), htab_find_slot_with_hash(), INSERT, occr::insn, occr::next, NULL, obstack_alloc, obstack_free, and occr_obstack.
Definition at line 596 of file postreload-gcse.c.
References CALL_P, find_mem_conflicts(), modifies_mem::insn, INSN_CUID, mems_conflict_p, modifies_mem::next, note_stores(), and PATTERN.
Definition at line 404 of file postreload-gcse.c.
References expr::avail_occr, expr::expr, expr_obstack, expr_table, expr::hash, hash_expr(), htab_find_slot_with_hash(), INSERT, NULL, obstack_alloc, and obstack_free.
Definition at line 480 of file postreload-gcse.c.
References CONST, FIRST_PSEUDO_REGISTER, gcc_assert, GET_CODE, GET_RTX_FORMAT, GET_RTX_LENGTH, i, INSN_CUID, load_killed_in_block_p(), MEM, oprs_unchanged_p(), PC, REG, REGNO, XEXP, XVECEXP, and XVECLEN.
Definition at line 649 of file postreload-gcse.c.
References modifies_mem::insn, modifies_mem_obstack, modifies_mem::next, and obstack_alloc.
Definition at line 665 of file postreload-gcse.c.
References GET_CODE, GET_MODE, MEM_P, push_operand(), record_last_mem_set_info(), record_last_reg_set_info(), REG_P, REGNO, STACK_POINTER_REGNUM, and SUBREG_REG.
Definition at line 705 of file postreload-gcse.c.
References CALL_P, CONST_OR_PURE_CALL_P, FIRST_PSEUDO_REGISTER, note_stores(), PATTERN, record_last_mem_set_info(), record_last_reg_set_info(), record_last_set_info(), REG_INC, REG_NOTE_KIND, REG_NOTES, REGNO, regs_invalidated_by_call, TEST_HARD_REG_BIT, and XEXP.
Definition at line 831 of file postreload-gcse.c.
References modifies_mem::insn, INSN_P, NEXT_INSN, and reg_set_p().
Definition at line 865 of file postreload-gcse.c.
References CALL_P, call_used_regs, find_reg_fusage(), FIND_REG_INC_NOTE, FIRST_PSEUDO_REGISTER, gcc_assert, modifies_mem::insn, INSN_P, NEXT_INSN, NULL_RTX, REG_P, REGNO, and set_of().
| static bool reg_set_or_used_since_bb_start | ( | rtx | reg, | |
| basic_block | bb, | |||
| rtx | up_to_insn | |||
| ) | [static] |
Definition at line 932 of file postreload-gcse.c.
References BB_HEAD, modifies_mem::insn, INSN_CUID, NULL_RTX, PREV_INSN, reg_set_between_after_reload_p(), reg_used_between_after_reload_p(), REGNO, and start.
Definition at line 899 of file postreload-gcse.c.
References CALL_P, call_used_regs, find_reg_fusage(), FIND_REG_INC_NOTE, FIRST_PSEUDO_REGISTER, gcc_assert, modifies_mem::insn, INSN_P, NEXT_INSN, NULL_RTX, PATTERN, reg_overlap_mentioned_p(), REG_P, REGNO, and USE.
Definition at line 848 of file postreload-gcse.c.
References modifies_mem::insn, INSN_P, NEXT_INSN, PATTERN, and reg_overlap_mentioned_p().
Definition at line 693 of file postreload-gcse.c.
References FIRST_PSEUDO_REGISTER, memset, modifies_mem_obstack, NULL, and obstack_free.
| static unsigned int rest_of_handle_gcse2 | ( | void | ) | [static] |
Definition at line 1369 of file postreload-gcse.c.
References delete_trivially_dead_insns(), gcse_after_reload_main(), get_insns(), max_reg_num(), and rebuild_jump_labels().
| int copies_inserted |
Definition at line 86 of file postreload-gcse.c.
struct obstack expr_obstack [static] |
Definition at line 110 of file postreload-gcse.c.
htab_t expr_table [static] |
Definition at line 95 of file postreload-gcse.c.
| int insns_deleted |
Definition at line 87 of file postreload-gcse.c.
int mems_conflict_p [static] |
Definition at line 558 of file postreload-gcse.c.
struct modifies_mem* modifies_mem_list [static] |
Definition at line 156 of file postreload-gcse.c.
struct obstack modifies_mem_obstack [static] |
Definition at line 162 of file postreload-gcse.c.
struct modifies_mem* modifies_mem_obstack_bottom [static] |
Definition at line 163 of file postreload-gcse.c.
| int moves_inserted |
Definition at line 85 of file postreload-gcse.c.
struct obstack occr_obstack [static] |
Definition at line 126 of file postreload-gcse.c.
Initial value:
{
"gcse2",
gate_handle_gcse2,
rest_of_handle_gcse2,
NULL,
NULL,
0,
TV_GCSE_AFTER_RELOAD,
0,
0,
0,
0,
TODO_dump_func |
TODO_verify_flow | TODO_ggc_collect,
'J'
}
Definition at line 1377 of file postreload-gcse.c.
Referenced by init_optimization_passes().
int* reg_avail_info [static] |
Definition at line 148 of file postreload-gcse.c.
struct { ... } stats [static] |
int* uid_cuid [static] |
Definition at line 168 of file postreload-gcse.c.
struct obstack unoccr_obstack [static] |
Definition at line 137 of file postreload-gcse.c.
1.5.6