#include "config.h"#include "system.h"#include "rtl.h"#include "tm_p.h"#include "regs.h"#include "hard-reg-set.h"#include "basic-block.h"#include "flags.h"#include "real.h"#include "insn-config.h"#include "recog.h"#include "function.h"#include "expr.h"#include "toplev.h"#include "output.h"#include "ggc.h"#include "timevar.h"

Go to the source code of this file.
Data Types | |
| type | qty_table_elem |
| type | reg_eqv_elem |
| type | cse_reg_info |
| type | table_elt |
| type | cse_basic_block_data |
| type | cse_basic_block_data::branch_path |
| type | check_dependence_data |
| type | set |
Defines | |
| #define | REGHASH_SHIFT 7 |
| #define | REGHASH_SIZE (1 << REGHASH_SHIFT) |
| #define | REGHASH_MASK (REGHASH_SIZE - 1) |
| #define | REGHASH_FN(REGNO) (((REGNO) ^ ((REGNO) >> REGHASH_SHIFT)) & REGHASH_MASK) |
| #define | INSN_CUID(INSN) (uid_cuid[INSN_UID (INSN)]) |
| #define | HASH_SHIFT 5 |
| #define | HASH_SIZE (1 << HASH_SHIFT) |
| #define | HASH_MASK (HASH_SIZE - 1) |
| #define | HASH(X, M) |
| #define | FIXED_REGNO_P(N) |
| #define | CHEAP_REGNO(N) |
| #define | COST(X) (GET_CODE (X) == REG ? 0 : notreg_cost (X, SET)) |
| #define | COST_IN(X, OUTER) (GET_CODE (X) == REG ? 0 : notreg_cost (X, OUTER)) |
| #define | GET_CSE_REG_INFO(N) |
| #define | REG_TICK(N) ((GET_CSE_REG_INFO (N))->reg_tick) |
| #define | REG_IN_TABLE(N) ((GET_CSE_REG_INFO (N))->reg_in_table) |
| #define | SUBREG_TICKED(N) ((GET_CSE_REG_INFO (N))->subreg_ticked) |
| #define | REG_QTY(N) ((GET_CSE_REG_INFO (N))->reg_qty) |
| #define | REGNO_QTY_VALID_P(N) (REG_QTY (N) != (int) (N)) |
| #define | PATHLENGTH 10 |
| #define | FIXED_BASE_PLUS_P(X) |
| #define | NONZERO_BASE_PLUS_P(X) |
| #define | CHEAPER(X, Y) (preferrable ((X)->cost, (X)->regcost, (Y)->cost, (Y)->regcost) < 0) |
Functions/Subroutines | |
| static int notreg_cost | PARAMS ((rtx, enum rtx_code)) |
| static int approx_reg_cost_1 | PARAMS ((rtx *, void *)) |
| static int approx_reg_cost | PARAMS ((rtx)) |
| static int preferrable | PARAMS ((int, int, int, int)) |
| static void new_basic_block | PARAMS ((void)) |
| static void make_new_qty | PARAMS ((unsigned int, enum machine_mode)) |
| static void make_regs_eqv | PARAMS ((unsigned int, unsigned int)) |
| static void delete_reg_equiv | PARAMS ((unsigned int)) |
| static int insert_regs | PARAMS ((rtx, struct table_elt *, int)) |
| static void remove_from_table | PARAMS ((struct table_elt *, unsigned)) |
| static struct table_elt *lookup | PARAMS ((rtx, unsigned, enum machine_mode)) |
| static struct table_elt *insert | PARAMS ((rtx, struct table_elt *, unsigned, enum machine_mode)) |
| static void merge_equiv_classes | PARAMS ((struct table_elt *, struct table_elt *)) |
| static void invalidate | PARAMS ((rtx, enum machine_mode)) |
| static int cse_rtx_varies_p | PARAMS ((rtx, int)) |
| static void remove_invalid_subreg_refs | PARAMS ((unsigned int, unsigned int, enum machine_mode)) |
| static rtx use_related_value | PARAMS ((rtx, struct table_elt *)) |
| static unsigned canon_hash_string | PARAMS ((const char *)) |
| static int exp_equiv_p | PARAMS ((rtx, rtx, int, int)) |
| static rtx canon_reg | PARAMS ((rtx, rtx)) |
| static void find_best_addr | PARAMS ((rtx, rtx *, enum machine_mode)) |
| static enum rtx_code find_comparison_args | PARAMS ((enum rtx_code, rtx *, rtx *, enum machine_mode *, enum machine_mode *)) |
| static void record_jump_cond | PARAMS ((enum rtx_code, enum machine_mode, rtx, rtx, int)) |
| static void invalidate_skipped_set | PARAMS ((rtx, rtx, void *)) |
| static void cse_set_around_loop | PARAMS ((rtx, rtx, rtx)) |
| static rtx cse_basic_block | PARAMS ((rtx, rtx, struct branch_path *, int)) |
| static void count_reg_usage | PARAMS ((rtx, int *, rtx, int)) |
| void dump_class | PARAMS ((struct table_elt *)) |
| static bool insn_live_p | PARAMS ((rtx, int *)) |
| static bool set_live_p | PARAMS ((rtx, rtx, int *)) |
| void | dump_class (struct table_elt *classp) |
| static int | approx_reg_cost_1 (rtx *xp, void *data) |
| static int | approx_reg_cost (rtx x) |
| static int | preferrable (int cost_a, int regcost_a, int cost_b, int regcost_b) |
| static int | notreg_cost (rtx x, enum rtx_code outer) |
| int | rtx_cost (rtx x, outer_code) |
| int | address_cost (rtx x, enum machine_mode mode) |
| static struct cse_reg_info * | get_cse_reg_info (unsigned int regno) |
| static void | new_basic_block () |
| static void | make_new_qty (unsigned int reg, enum machine_mode mode) |
| static void | make_regs_eqv (unsigned int new, unsigned int old) |
| static void | delete_reg_equiv (unsigned int reg) |
| static int | mention_regs (rtx x) |
| static int | insert_regs (rtx x, struct table_elt *classp, int modified) |
| static void | remove_from_table (struct table_elt *elt, unsigned hash) |
| static struct table_elt * | lookup (rtx x, unsigned hash, enum machine_mode mode) |
| static struct table_elt * | lookup_for_remove (rtx x, unsigned hash, enum machine_mode mode) |
| static rtx | lookup_as_function (rtx x, enum rtx_code code) |
| static struct table_elt * | insert (rtx x, struct table_elt *classp, unsigned hash, enum machine_mode mode) |
| static void | merge_equiv_classes (struct table_elt *class1, struct table_elt *class2) |
| static void | flush_hash_table () |
| static int | check_dependence (rtx *x, void *data) |
| static void | invalidate (rtx x, enum machine_mode full_mode) |
| static void | remove_invalid_refs (unsigned int regno) |
| static void | remove_invalid_subreg_refs (unsigned int regno, unsigned int offset, enum machine_mode mode) |
| static void | rehash_using_reg (rtx x) |
| static void | invalidate_for_call () |
| static rtx | use_related_value (rtx x, struct table_elt *elt) |
| static unsigned | canon_hash_string (char *ps) const |
| static unsigned | canon_hash (rtx x, enum machine_mode mode) |
| static unsigned | safe_hash (rtx x, enum machine_mode mode) |
| static int | exp_equiv_p (rtx x, rtx y, int validate, int equal_values) |
| static int | cse_rtx_varies_p (rtx x, int from_alias) |
| static rtx | canon_reg (rtx x, rtx insn) |
| static void | find_best_addr (rtx insn, rtx *loc, enum machine_mode mode) |
| static enum rtx_code | find_comparison_args (enum rtx_code code, rtx *parg1, rtx *parg2, enum machine_mode *pmode1, enum machine_mode *pmode2) |
| static rtx | fold_rtx (rtx x, rtx insn) |
| static rtx | equiv_constant (rtx x) |
| rtx | gen_lowpart_if_possible (enum machine_mode mode, rtx x) |
| static void | record_jump_equiv (rtx insn, int taken) |
| static void | record_jump_cond (enum rtx_code code, enum machine_mode mode, rtx op0, rtx op1, int reversed_nonequality) |
| static void | cse_insn (rtx insn, rtx libcall_insn) |
| static void | invalidate_memory () |
| static int | addr_affects_sp_p (rtx addr) |
| static void | invalidate_from_clobbers (rtx x) |
| static rtx | cse_process_notes (rtx x, rtx object) |
| static void | cse_around_loop (rtx loop_start) |
| static void | invalidate_skipped_set (rtx dest, rtx set, data) |
| static void | invalidate_skipped_block (rtx start) |
| static void | cse_check_loop_start (rtx x, set, void *data) |
| static void | cse_set_around_loop (rtx x, rtx insn, rtx loop_start) |
| void | cse_end_of_basic_block (rtx insn, struct cse_basic_block_data *data, int follow_jumps, int after_loop, int skip_blocks) |
| int | cse_main (rtx f, int nregs, int after_loop, FILE *file) |
| static rtx | cse_basic_block (rtx from, rtx to, struct branch_path *next_branch, int around_loop) |
| static int | check_for_label_ref (rtx *rtl, void *data) |
| static void | count_reg_usage (rtx x, int *counts, rtx dest, int incr) |
| static bool | set_live_p (rtx set, insn, int *counts) |
| static bool | insn_live_p (rtx insn, int *counts) |
| static bool | dead_libcall_p (rtx insn, int *counts) |
| int | delete_trivially_dead_insns (rtx insns, int nreg) |
Variables | |
| static int | max_reg |
| static int | max_insn_uid |
| static int | max_qty |
| static int | next_qty |
| static struct qty_table_elem * | qty_table |
| static rtx | prev_insn |
| static rtx | this_insn |
| static struct reg_eqv_elem * | reg_eqv_table |
| static struct cse_reg_info * | cse_reg_info_free_list |
| static struct cse_reg_info * | cse_reg_info_used_list |
| static struct cse_reg_info * | cse_reg_info_used_list_end |
| static struct cse_reg_info * | reg_hash [REGHASH_SIZE] |
| static unsigned int | cached_regno |
| static struct cse_reg_info * | cached_cse_reg_info |
| static HARD_REG_SET | hard_regs_in_table |
| static int | cse_basic_block_start |
| static int | cse_basic_block_end |
| static int * | uid_cuid |
| static int | max_uid |
| static int | cse_altered |
| static int | cse_jumps_altered |
| static int | recorded_label_ref |
| static int | do_not_record |
| static int | hash_arg_in_memory |
| static struct table_elt * | table [HASH_SIZE] |
| static struct table_elt * | free_element_chain |
| static int | n_elements_made |
| static int | max_elements_made |
| static struct table_elt * | last_jump_equiv_class |
| static int | constant_pool_entries_cost |
| #define CHEAP_REGNO | ( | N | ) |
Value:
((N) == FRAME_POINTER_REGNUM || (N) == HARD_FRAME_POINTER_REGNUM \ || (N) == STACK_POINTER_REGNUM || (N) == ARG_POINTER_REGNUM \ || ((N) >= FIRST_VIRTUAL_REGISTER && (N) <= LAST_VIRTUAL_REGISTER) \ || ((N) < FIRST_PSEUDO_REGISTER \ && FIXED_REGNO_P (N) && REGNO_REG_CLASS (N) != NO_REGS))
Definition at line 496 of file cse.c.
Referenced by approx_reg_cost_1().
Definition at line 503 of file cse.c.
Referenced by cse_insn(), find_best_addr(), fold_rtx(), fold_rtx_mem_1(), and insert().
| #define FIXED_BASE_PLUS_P | ( | X | ) |
Value:
((X) == frame_pointer_rtx || (X) == hard_frame_pointer_rtx \ || ((X) == arg_pointer_rtx && fixed_regs[ARG_POINTER_REGNUM])\ || (X) == virtual_stack_vars_rtx \ || (X) == virtual_incoming_args_rtx \ || (GET_CODE (X) == PLUS && GET_CODE (XEXP (X, 1)) == CONST_INT \ && (XEXP (X, 0) == frame_pointer_rtx \ || XEXP (X, 0) == hard_frame_pointer_rtx \ || ((X) == arg_pointer_rtx \ && fixed_regs[ARG_POINTER_REGNUM]) \ || XEXP (X, 0) == virtual_stack_vars_rtx \ || XEXP (X, 0) == virtual_incoming_args_rtx)) \ || GET_CODE (X) == ADDRESSOF)
Definition at line 603 of file cse.c.
Referenced by canon_hash(), cse_insn(), expand_inline_function(), insert(), and process_reg_param().
| #define FIXED_REGNO_P | ( | N | ) |
Value:
((N) == FRAME_POINTER_REGNUM || (N) == HARD_FRAME_POINTER_REGNUM \ || fixed_regs[N] || global_regs[N])
Definition at line 487 of file cse.c.
Referenced by make_regs_eqv().
| #define GET_CSE_REG_INFO | ( | N | ) |
Value:
(((N) == cached_regno && cached_cse_reg_info) \ ? cached_cse_reg_info : get_cse_reg_info ((N)))
Value:
((GET_CODE (X) == REG && REGNO (X) >= FIRST_PSEUDO_REGISTER \ ? (((unsigned) REG << 7) + (unsigned) REG_QTY (REGNO (X))) \ : canon_hash (X, M)) & HASH_MASK)
Definition at line 477 of file cse.c.
Referenced by cse_insn(), cse_set_around_loop(), find_best_addr(), fold_rtx(), fold_rtx_subreg(), Init_Hashing_Table(), invalidate(), merge_equiv_classes(), String_Hash::operator()(), and record_jump_cond().
| #define HASH_MASK (HASH_SIZE - 1) |
Definition at line 472 of file cse.c.
Referenced by equiv_constant(), find_comparison_args(), fold_rtx(), insert(), lookup_as_function(), rehash_using_reg(), and use_related_value().
| #define NONZERO_BASE_PLUS_P | ( | X | ) |
Value:
((X) == frame_pointer_rtx || (X) == hard_frame_pointer_rtx \ || (X) == virtual_stack_vars_rtx \ || (X) == virtual_incoming_args_rtx \ || (GET_CODE (X) == PLUS && GET_CODE (XEXP (X, 1)) == CONST_INT \ && (XEXP (X, 0) == frame_pointer_rtx \ || XEXP (X, 0) == hard_frame_pointer_rtx \ || ((X) == arg_pointer_rtx \ && fixed_regs[ARG_POINTER_REGNUM]) \ || XEXP (X, 0) == virtual_stack_vars_rtx \ || XEXP (X, 0) == virtual_incoming_args_rtx)) \ || (X) == stack_pointer_rtx \ || (X) == virtual_stack_dynamic_rtx \ || (X) == virtual_outgoing_args_rtx \ || (GET_CODE (X) == PLUS && GET_CODE (XEXP (X, 1)) == CONST_INT \ && (XEXP (X, 0) == stack_pointer_rtx \ || XEXP (X, 0) == virtual_stack_dynamic_rtx \ || XEXP (X, 0) == virtual_outgoing_args_rtx)) \ || GET_CODE (X) == ADDRESSOF)
Definition at line 623 of file cse.c.
Referenced by find_comparison_args(), fold_rtx(), and simplify_relational_operation().
| #define PATHLENGTH 10 |
| #define REG_IN_TABLE | ( | N | ) | ((GET_CSE_REG_INFO (N))->reg_in_table) |
Definition at line 519 of file cse.c.
Referenced by cse_insn(), exp_equiv_p(), insert_regs(), mention_regs(), and rehash_using_reg().
| #define REG_QTY | ( | N | ) | ((GET_CSE_REG_INFO (N))->reg_qty) |
Definition at line 528 of file cse.c.
Referenced by canon_hash(), canon_reg(), cse_insn(), cse_process_notes(), cse_rtx_varies_p(), delete_reg_equiv(), equiv_constant(), exp_equiv_p(), fold_rtx(), fold_rtx_mem_1(), hash_rtx(), insert(), insert_regs(), make_new_qty(), make_regs_eqv(), and record_jump_cond().
| #define REG_TICK | ( | N | ) | ((GET_CSE_REG_INFO (N))->reg_tick) |
Definition at line 515 of file cse.c.
Referenced by addr_affects_sp_p(), exp_equiv_p(), insert_regs(), invalidate(), invalidate_for_call(), mention_regs(), and rehash_using_reg().
| #define REGHASH_FN | ( | REGNO | ) | (((REGNO) ^ ((REGNO) >> REGHASH_SHIFT)) & REGHASH_MASK) |
| #define REGNO_QTY_VALID_P | ( | N | ) | (REG_QTY (N) != (int) (N)) |
Definition at line 533 of file cse.c.
Referenced by canon_reg(), cse_insn(), cse_process_notes(), cse_rtx_varies_p(), delete_reg_equiv(), equiv_constant(), exp_equiv_p(), fold_rtx(), fold_rtx_mem_1(), insert(), insert_regs(), make_regs_eqv(), mention_regs(), and merge_equiv_classes().
| #define SUBREG_TICKED | ( | N | ) | ((GET_CSE_REG_INFO (N))->subreg_ticked) |
Definition at line 524 of file cse.c.
Referenced by addr_affects_sp_p(), invalidate(), invalidate_for_call(), and mention_regs().
| static int addr_affects_sp_p | ( | rtx | addr | ) | [static] |
Definition at line 6428 of file cse.c.
References GET_CODE, GET_RTX_CLASS, hard_regs_in_table, invalidate(), REG, REG_TICK, REGNO, STACK_POINTER_REGNUM, stack_pointer_rtx, SUBREG_TICKED, TEST_HARD_REG_BIT, and XEXP.
Referenced by cse_set_around_loop(), and invalidate_skipped_set().
| int address_cost | ( | rtx | x, | |
| enum machine_mode | mode | |||
| ) |
Definition at line 914 of file cse.c.
Referenced by combine_givs(), computation_cost(), find_best_addr(), force_expr_to_var_cost(), force_var_cost(), general_induction_var(), get_address_cost(), and init_loop().
| static int approx_reg_cost | ( | rtx | x | ) | [static] |
Definition at line 760 of file cse.c.
References approx_reg_cost_1(), for_each_rtx(), and MAX_COST.
Referenced by cse_insn(), find_best_addr(), fold_rtx(), fold_rtx_mem_1(), and insert().
Definition at line 727 of file cse.c.
References CHEAP_REGNO, FIRST_PSEUDO_REGISTER, GET_CODE, REG, REGNO, SMALL_REGISTER_CLASSES, and x.
Referenced by approx_reg_cost().
| static unsigned canon_hash | ( | rtx | x, | |
| enum machine_mode | mode | |||
| ) | [static] |
Definition at line 2250 of file cse.c.
References abort, arg_pointer_rtx, ASM_OPERANDS_INPUT, ASM_OPERANDS_INPUT_CONSTRAINT, ASM_OPERANDS_INPUT_LENGTH, ASM_OPERANDS_OUTPUT_CONSTRAINT, ASM_OPERANDS_OUTPUT_IDX, ASM_OPERANDS_TEMPLATE, canon_hash_string(), CLASS_LIKELY_SPILLED_P, CONST_DOUBLE_HIGH, CONST_DOUBLE_LOW, CONST_DOUBLE_REAL_VALUE, CONST_VECTOR_ELT, CONST_VECTOR_NUNITS, do_not_record, FIRST_PSEUDO_REGISTER, FIXED_BASE_PLUS_P, fixed_regs, frame_pointer_rtx, GET_CODE, GET_MODE, GET_MODE_CLASS, GET_RTX_FORMAT, GET_RTX_LENGTH, global_regs, hard_frame_pointer_rtx, hash_arg_in_memory, HOST_WIDE_INT, i, INTVAL, long, MEM, MEM_VOLATILE_P, MODE_CC, PC, pic_offset_table_rtx, real_hash(), REG, REG_QTY, REGNO, REGNO_REG_CLASS, RTX_UNCHANGING_P, SMALL_REGISTER_CLASSES, stack_pointer_rtx, SUBREG_BYTE, SUBREG_REG, units, UNITS_PER_WORD, unsigned, USE, XEXP, XINT, XSTR, XVECEXP, and XVECLEN.
Referenced by canon_hash(), and safe_hash().
| static unsigned canon_hash_string | ( | char * | ps | ) | const [inline, static] |
Definition at line 2798 of file cse.c.
References CONST, first, FIRST_PSEUDO_REGISTER, qty_table_elem::first_reg, gen_rtx_REG(), GET_CODE, GET_RTX_FORMAT, GET_RTX_LENGTH, i, qty_table_elem::mode, NO_REGS, PC, q, recog_memoized, REG, REG_QTY, REGNO, REGNO_QTY_VALID_P, REGNO_REG_CLASS, regno_reg_rtx, validate_change(), XEXP, XVECEXP, and XVECLEN.
Referenced by canon_reg(), cse_insn(), cse_process_notes(), find_best_addr(), fold_rtx(), and validate_canon_reg().
Definition at line 1825 of file cse.c.
References cse_rtx_varies_p(), d, check_dependence_data::exp, GET_CODE, MEM, check_dependence_data::mode, and true_dependence().
Definition at line 7462 of file cse.c.
References find_reg_note(), GET_CODE, insn, INSN_UID, LABEL_P, LABEL_REF_NONLOCAL_P, REG_LABEL, and XEXP.
Referenced by cse_basic_block().
Definition at line 7488 of file cse.c.
References abort, CALL_INSN_FUNCTION_USAGE, CONST, find_reg_equal_equiv_note(), GET_CODE, GET_RTX_FORMAT, GET_RTX_LENGTH, i, MEM, NULL_RTX, PATTERN, PC, REG, REGNO, SET, SET_DEST, SET_SRC, side_effects_p(), XEXP, XVECEXP, and XVECLEN.
Referenced by count_reg_usage(), dead_libcall_p(), and delete_trivially_dead_insns().
Definition at line 6600 of file cse.c.
References cse_set_around_loop(), table_elt::exp, table_elt::first_same_value, GET_CODE, GET_MODE, i, insn, INSN_P, INSN_UID, invalidate(), max_insn_uid, MEM, NEXT_INSN, table_elt::next_same_value, NOTE_INSN_LOOP_BEG, NOTE_INSN_LOOP_END, NOTE_LINE_NUMBER, p, PATTERN, PREV_INSN, REG, SET, SUBREG_REG, XEXP, XVECEXP, and XVECLEN.
Referenced by cse_basic_block().
| static rtx cse_basic_block | ( | rtx | from, | |
| rtx | to, | |||
| struct branch_path * | next_branch, | |||
| int | around_loop | |||
| ) | [static] |
Definition at line 7249 of file cse.c.
References abort, any_uncondjump_p(), check_for_label_ref(), cse_around_loop(), cse_basic_block_end, cse_basic_block_start, cse_end_of_basic_block(), cse_insn(), cse_jumps_altered, cse_process_notes(), find_reg_note(), flag_cse_follow_jumps, flag_cse_skip_blocks, flush_hash_table(), for_each_rtx(), free(), GET_CODE, GET_MODE, GET_RTX_CLASS, cse_basic_block_data::high_cuid, insn, INSN_DELETED_P, invalidate_skipped_block(), JUMP_LABEL, LABEL_NUSES, cse_basic_block_data::last, cse_basic_block_data::low_cuid, max_qty, max_reg, new_basic_block(), NEXT_INSN, next_qty, NOT_TAKEN, NOTE_INSN_LOOP_END, NOTE_LINE_NUMBER, cse_basic_block_data::nsets, NULL_RTX, num_insns, p, cse_basic_block_data::path_size, PATTERN, prev, prev_insn, PREV_INSN, prev_nonnote_insn(), PUT_MODE, record_jump_equiv(), recorded_label_ref, REG_LIBCALL, REG_NOTES, REG_RETVAL, taken, TAKEN, XEXP, and xmalloc().
Referenced by cse_main().
Definition at line 6739 of file cse.c.
References GET_CODE, MEM, NULL_RTX, PC, and reg_overlap_mentioned_p().
Referenced by cse_set_around_loop().
| void cse_end_of_basic_block | ( | rtx | insn, | |
| struct cse_basic_block_data * | data, | |||
| int | follow_jumps, | |||
| int | after_loop, | |||
| int | skip_blocks | |||
| ) |
Definition at line 6881 of file cse.c.
References cse_basic_block_data::branch_path::branch, find_reg_note(), GET_CODE, GET_MODE, cse_basic_block_data::high_cuid, i, INSN_CUID, INSN_P, INSN_UID, JUMP_LABEL, LABEL_NUSES, cse_basic_block_data::last, cse_basic_block_data::low_cuid, max_uid, next, NEXT_INSN, next_real_insn(), NOT_TAKEN, NOTE_INSN_LOOP_END, NOTE_LINE_NUMBER, cse_basic_block_data::nsets, NULL, p, path, cse_basic_block_data::path, cse_basic_block_data::path_size, PATHLENGTH, PATTERN, PREV_INSN, PUT_MODE, q, REG_SETJMP, SET, SET_SRC, cse_basic_block_data::branch_path::status, TAKEN, tmp, and XVECLEN.
Referenced by cse_basic_block(), and cse_main().
Definition at line 4770 of file cse.c.
References addr(), ADDRESSOF, alloca, AND, apply_change_group(), approx_reg_cost(), BITS_PER_WORD, BYTES_BIG_ENDIAN, CALL_INSN_FUNCTION_USAGE, canon_reg(), cc0_rtx, condjump_p(), CONST, CONST0_RTX, const0_rtx, qty_table_elem::const_insn, CONST_OR_PURE_CALL_P, qty_table_elem::const_rtx, CONSTANT_P, constant_pool_entries_cost, copy_rtx(), COST, table_elt::cost, cse_altered, cse_jumps_altered, delete_insn(), dest, set::dest_hash, do_not_record, emit_barrier_after(), emit_jump_insn_after(), table_elt::exp, exp_equiv_p(), find_reg_note(), first, FIRST_PSEUDO_REGISTER, qty_table_elem::first_reg, table_elt::first_same_value, FIXED_BASE_PLUS_P, flag_expensive_optimizations, flag_float_store, FLOAT_MODE_P, flush_hash_table(), fold_rtx(), force_const_mem(), GEN_INT, gen_jump(), gen_lowpart_if_possible(), gen_rtx_AND, gen_rtx_COMPARE, gen_rtx_INSN_LIST, gen_rtx_REG(), GET_CODE, GET_MODE, GET_MODE_BITSIZE, GET_MODE_CLASS, GET_MODE_SIZE, GET_MODE_WIDER_MODE, GET_RTX_CLASS, HARD_REGNO_NREGS, HASH, hash_arg_in_memory, HOST_BITS_PER_WIDE_INT, HOST_WIDE_INT, i, table_elt::in_memory, set::inner_dest, insert(), insert_regs(), INSN_CODE, INTVAL, invalidate(), invalidate_for_call(), invalidate_from_clobbers(), invalidate_memory(), JUMP_LABEL, LABEL_NUSES, LOAD_EXTEND_OP, lookup(), MAX_COST, MEM, MEM_VOLATILE_P, mention_regs(), merge_equiv_classes(), MINUS, qty_table_elem::mode, table_elt::mode, mode, set::mode, MODE_CC, MODE_INT, never_reached_warning(), new_mode(), NEXT_INSN, table_elt::next_same_value, NIL, NOTE_INSN_BASIC_BLOCK, NOTE_LINE_NUMBER, NULL, NULL_RTX, set::orig_src, p, PATTERN, pc_rtx, Pmode, preferrable(), prev, prev_insn, PREV_INSN, table_elt::prev_same_value, PUT_CODE, PUT_MODE, recog_memoized, record_jump_equiv(), REG, REG_EQUAL, REG_EQUIV, REG_IN_TABLE, reg_mentioned_p(), REG_NOTES, REG_QTY, REG_RETVAL, REG_WAS_0, table_elt::regcost, REGNO, REGNO_QTY_VALID_P, regno_reg_rtx, rehash_using_reg(), remove_invalid_refs(), remove_note(), replace_rtx(), set::rtl, rtx_equal_p(), RTX_UNCHANGING_P, SET, SET_DEST, SET_SRC, set_unique_reg_note(), sets, SIGN_EXTEND, simplify_gen_subreg(), single_set, set::src, src, set::src_const, set::src_const_elt, set::src_const_hash, set::src_elt, set::src_hash, set::src_in_memory, set::src_volatile, stack_pointer_rtx, SUBREG_REG, this_insn, TRUNCATE, UNITS_PER_WORD, USE, use_related_value(), validate_change(), x, XEXP, XVECEXP, XVECLEN, and is::y.
Referenced by cse_basic_block().
Definition at line 7103 of file cse.c.
References alloca, constant_pool_entries_cost, cse_altered, cse_basic_block(), cse_basic_block_end, cse_basic_block_start, cse_end_of_basic_block(), cse_jumps_altered, end_alias_analysis(), flag_cse_follow_jumps, flag_cse_skip_blocks, fnotice(), free(), gen_rtx_ZERO_EXTEND, GET_CODE, get_max_uid(), GET_MODE, ggc_collect(), ggc_pop_context(), ggc_push_context(), cse_basic_block_data::high_cuid, i, init_alias_analysis(), init_recog(), insn, INSN_CUID, INSN_UID, cse_basic_block_data::last, cse_basic_block_data::low_cuid, max_elements_made, max_insn_uid, max_qty, max_reg, max_uid, n_elements_made, NEXT_INSN, NOTE_LINE_NUMBER, cse_basic_block_data::nsets, NULL_RTX, cse_basic_block_data::path, cse_basic_block_data::path_size, PUT_MODE, recorded_label_ref, uid_cuid, xcalloc(), and xmalloc().
Referenced by rest_of_compilation(), rest_of_handle_cse(), rest_of_handle_cse2(), and rest_of_handle_gcse().
Definition at line 6506 of file cse.c.
References canon_reg(), CONST, qty_table_elem::const_rtx, CONSTANT_P, gen_lowpart_if_possible(), GET_CODE, GET_MODE, GET_RTX_FORMAT, GET_RTX_LENGTH, i, MEM, NULL_RTX, PC, REG, REG_EQUAL, REG_NOTE_KIND, REG_QTY, REGNO, REGNO_QTY_VALID_P, SIGN_EXTEND, validate_change(), and XEXP.
Referenced by cse_basic_block(), and cse_process_notes().
| static int cse_rtx_varies_p | ( | rtx | x, | |
| int | from_alias | |||
| ) | [static] |
Definition at line 2728 of file cse.c.
References qty_table_elem::const_rtx, GET_CODE, GET_MODE, qty_table_elem::mode, NULL_RTX, PLUS, REG, REG_QTY, REGNO, REGNO_QTY_VALID_P, rtx_varies_p(), and XEXP.
Referenced by check_dependence(), and invalidate_skipped_set().
Definition at line 6773 of file cse.c.
References abort, addr_affects_sp_p(), cse_check_loop_start(), emit_insn_after(), table_elt::exp, table_elt::first_same_value, gen_move_insn(), GET_CODE, GET_MODE, HASH, INSN_P, invalidate(), lookup(), max_reg_num(), MEM, table_elt::mode, NEXT_INSN, table_elt::next_same_value, note_stores(), nregs, p, PATTERN, PC, prev_nonnote_insn(), q, REG, REG_LOOP_TEST_P, rtx_equal_p(), SET, SET_DEST, SET_SRC, single_set, validate_change(), and XEXP.
Referenced by cse_around_loop().
Definition at line 7646 of file cse.c.
References count_reg_usage(), find_reg_note(), NULL_RTX, REG_EQUAL, REG_RETVAL, remove_note(), SET_SRC, simplify_rtx(), single_set, validate_change(), and XEXP.
Referenced by delete_trivially_dead_insns().
| static void delete_reg_equiv | ( | unsigned int | reg | ) | [static] |
Definition at line 1137 of file cse.c.
References qty_table_elem::first_reg, qty_table_elem::last_reg, n, reg_eqv_elem::next, p, reg_eqv_elem::prev, q, and REG_QTY.
Referenced by invalidate(), invalidate_for_call(), and merge_equiv_classes().
| int delete_trivially_dead_insns | ( | rtx | insns, | |
| int | nreg | |||
| ) |
Definition at line 7689 of file cse.c.
Referenced by cleanup_cfg(), reg_alloc(), rest_of_compilation(), rest_of_handle_cse(), rest_of_handle_cse2(), rest_of_handle_gcse(), rest_of_handle_gcse2(), rest_of_handle_jump2(), rest_of_handle_jump_bypass(), rest_of_handle_loop2(), rest_of_handle_loop_optimize(), rest_of_handle_see(), rest_of_handle_web(), and rtl_loop_done().
Definition at line 4368 of file cse.c.
References qty_table_elem::const_rtx, CONSTANT_P, table_elt::exp, table_elt::first_same_value, fold_rtx(), gen_lowpart_if_possible(), GET_CODE, GET_MODE, HASH_MASK, table_elt::is_const, lookup(), MEM, table_elt::next_same_value, NULL_RTX, REG, REG_QTY, REGNO, REGNO_QTY_VALID_P, and safe_hash().
Referenced by fold_rtx(), fold_rtx_subreg(), and record_jump_cond().
Definition at line 2533 of file cse.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, qty_table_elem::const_rtx, CONSTANT_P, EQ, FIRST_PSEUDO_REGISTER, GET_CODE, GET_MODE, GET_RTX_FORMAT, GET_RTX_LENGTH, HARD_REGNO_NREGS, i, MEM_VOLATILE_P, qty_table_elem::mode, NE, PC, PLUS, REG, REG_IN_TABLE, REG_QTY, REG_TICK, REGNO, REGNO_QTY_VALID_P, rtx_equal_p(), strcmp(), XEXP, XINT, XOR, XSTR, XVECEXP, XVECLEN, and XWINT.
Referenced by cse_insn(), exp_equiv_p(), expr_equiv_p(), find_best_addr(), find_comparison_args(), fold_rtx(), fold_rtx_subreg(), lookup(), lookup_as_function(), lookup_for_remove(), merge_equiv_classes(), and rehash_using_reg().
| static void find_best_addr | ( | rtx | insn, | |
| rtx * | loc, | |||
| enum machine_mode | mode | |||
| ) | [static] |
Definition at line 2898 of file cse.c.
References addr(), address_cost(), ADDRESSOF, approx_reg_cost(), ARG_POINTER_REGNUM, canon_reg(), CONSTANT_ADDRESS_P, copy_rtx(), COST, table_elt::cost, count, do_not_record, table_elt::exp, exp_equiv_p(), table_elt::first_same_value, table_elt::flag, flag_expensive_optimizations, fold_rtx(), FRAME_POINTER_REGNUM, GET_CODE, GET_RTX_CLASS, HARD_FRAME_POINTER_REGNUM, HASH, hash_arg_in_memory, lookup(), MEM, table_elt::next_same_value, NULL_RTX, p, PLUS, Pmode, REG, REGNO, rtx_cost(), simplify_gen_binary(), validate_change(), and XEXP.
Referenced by fold_rtx(), and fold_rtx_mem_1().
| static enum rtx_code find_comparison_args | ( | enum rtx_code | code, | |
| rtx * | parg1, | |||
| rtx * | parg2, | |||
| enum machine_mode * | pmode1, | |||
| enum machine_mode * | pmode2 | |||
| ) | [static] |
Definition at line 3133 of file cse.c.
References COMPARE, CONST0_RTX, const0_rtx, EQ, table_elt::exp, exp_equiv_p(), table_elt::first_same_value, FLOAT_STORE_FLAG_VALUE, fold_rtx(), GE, GET_CODE, GET_MODE, GET_MODE_BITSIZE, GET_MODE_CLASS, GET_RTX_CLASS, HASH_MASK, HOST_BITS_PER_WIDE_INT, HOST_WIDE_INT, table_elt::is_const, lookup(), LT, MODE_FLOAT, MODE_INT, NE, table_elt::next_same_value, NONZERO_BASE_PLUS_P, NULL_RTX, p, REAL_VALUE_NEGATIVE, REAL_VALUE_TYPE, reversed_comparison_code(), safe_hash(), STORE_FLAG_VALUE, UNKNOWN, x, and XEXP.
Referenced by fold_rtx(), and record_jump_equiv().
Definition at line 1800 of file cse.c.
References table_elt::exp, GET_CODE, HASH_SIZE, i, invalidate(), table_elt::mode, p, REG, and remove_from_table().
Referenced by cse_basic_block(), and cse_insn().
Definition at line 3330 of file cse.c.
References addr(), ADDRESSOF, AND, apply_change_group(), ASM_OPERANDS_INPUT, ASM_OPERANDS_INPUT_LENGTH, base, BYTES_BIG_ENDIAN, canon_reg(), change_address(), qty_table_elem::comparison_code, qty_table_elem::comparison_const, comparison_dominates_p(), qty_table_elem::comparison_qty, CONST, CONST0_RTX, const0_rtx, const1_rtx, CONST_DOUBLE_FROM_REAL_VALUE, qty_table_elem::const_rtx, CONSTANT_P, CONSTANT_POOL_ADDRESS_P, constant_pool_entries_cost, copy_rtx(), COST, COST_IN, DIV, EQ, equiv_constant(), exact_log2, table_elt::exp, exp_equiv_p(), false_rtx, find_best_addr(), find_comparison_args(), table_elt::first_same_value, FLOAT_MODE_P, FLOAT_STORE_FLAG_VALUE, GE, GEN_INT, gen_lowpart_common(), gen_lowpart_if_possible(), gen_rtx_CONST, gen_rtx_LABEL_REF, gen_rtx_MINUS, gen_rtx_TRUNCATE, GET_CODE, GET_MODE, GET_MODE_BITSIZE, GET_MODE_CLASS, GET_MODE_SIZE, get_pool_constant(), get_pool_mode(), GET_RTX_CLASS, GET_RTX_FORMAT, GET_RTX_LENGTH, GT, HASH, HASH_MASK, HAVE_POST_DECREMENT, HAVE_POST_INCREMENT, HAVE_PRE_DECREMENT, HAVE_PRE_INCREMENT, HONOR_NANS, HOST_BITS_PER_WIDE_INT, HOST_WIDE_INT, i, INTVAL, LE, lookup(), lookup_as_function(), LT, MEM, MINUS, MOD, qty_table_elem::mode, mode, MODE_CC, MODE_FLOAT, MODE_INT, NE, next, NEXT_INSN, next_nonnote_insn(), table_elt::next_same_value, NONZERO_BASE_PLUS_P, NOT, NULL_RTX, offset, operand_subword(), p, p0, p1, PATTERN, PC, PLUS, plus_constant, Pmode, REG, reg_mentioned_p(), REG_QTY, REGNO, REGNO_QTY_VALID_P, replacements, reverse_condition(), ROTATE, rtx_equal_p(), safe_hash(), SIGN_EXTEND, simplify_binary_operation(), simplify_gen_binary(), simplify_relational_operation(), simplify_subreg(), simplify_ternary_operation(), simplify_unary_operation(), SUBREG_BYTE, subreg_lowpart_p(), SUBREG_REG, true_rtx, UNITS_PER_WORD, validate_change(), XEXP, XOR, XVECEXP, XVECLEN, and is::y.
Referenced by cse_insn(), equiv_constant(), find_best_addr(), find_comparison_args(), fold_rtx(), fold_rtx_mem_1(), fold_rtx_subreg(), and record_jump_equiv().
| rtx gen_lowpart_if_possible | ( | enum machine_mode | mode, | |
| rtx | x | |||
| ) |
Definition at line 4419 of file cse.c.
Referenced by cse_insn(), cse_process_notes(), equiv_constant(), fold_rtx(), gen_lowpart_no_emit_general(), insert(), record_jump_cond(), simplify_subreg(), and subst_constants().
| static struct cse_reg_info* get_cse_reg_info | ( | unsigned int | regno | ) | [static, read] |
Definition at line 941 of file cse.c.
References cached_regno, cse_reg_info::hash_next, cse_reg_info::next, NULL, p, cse_reg_info::reg_in_table, cse_reg_info::reg_qty, cse_reg_info::reg_tick, REGHASH_FN, cse_reg_info::regno, cse_reg_info::subreg_ticked, and xmalloc().
| static struct table_elt* insert | ( | rtx | x, | |
| struct table_elt * | classp, | |||
| unsigned | hash, | |||
| enum machine_mode | mode | |||
| ) | [static, read] |
Definition at line 1562 of file cse.c.
References abort, approx_reg_cost(), table_elt::canon_exp, CHEAPER, CONST, qty_table_elem::const_insn, qty_table_elem::const_rtx, CONSTANT_P, COST, table_elt::cost, table_elt::exp, FIRST_PSEUDO_REGISTER, table_elt::first_same_value, FIXED_BASE_PLUS_P, gen_lowpart_if_possible(), GET_CODE, GET_MODE, get_related_value(), HARD_REGNO_NREGS, hard_regs_in_table, HASH_MASK, i, table_elt::in_memory, insert(), table_elt::is_const, lookup(), qty_table_elem::mode, table_elt::mode, n_elements_made, next, table_elt::next_same_hash, table_elt::next_same_value, NULL, NULL_RTX, p, table_elt::prev_same_hash, table_elt::prev_same_value, REG, REG_QTY, table_elt::regcost, REGNO, REGNO_QTY_VALID_P, table_elt::related_value, RTX_UNCHANGING_P, safe_hash(), SET_HARD_REG_BIT, this_insn, and xmalloc().
Definition at line 1288 of file cse.c.
References table_elt::exp, table_elt::first_same_value, GET_CODE, GET_MODE, make_new_qty(), make_regs_eqv(), mention_regs(), qty_table_elem::mode, table_elt::next_same_value, NULL, REG, REG_IN_TABLE, REG_QTY, REG_TICK, REGNO, REGNO_QTY_VALID_P, and SUBREG_REG.
Referenced by cse_insn(), insert_regs(), mention_regs(), merge_equiv_classes(), and record_jump_cond().
Definition at line 7614 of file cse.c.
References flag_non_call_exceptions, GET_CODE, i, may_trap_p(), PATTERN, SET, set_live_p(), USE, XVECEXP, and XVECLEN.
Referenced by delete_trivially_dead_insns().
| static void invalidate | ( | rtx | x, | |
| enum machine_mode | full_mode | |||
| ) | [static] |
Definition at line 1849 of file cse.c.
References abort, table_elt::canon_exp, canon_rtx(), check_dependence(), CLEAR_HARD_REG_BIT, delete_reg_equiv(), table_elt::exp, check_dependence_data::exp, FIRST_PSEUDO_REGISTER, for_each_rtx(), GET_CODE, GET_MODE, HARD_REGNO_NREGS, hard_regs_in_table, HASH, HASH_SIZE, HOST_WIDE_INT, i, table_elt::in_memory, lookup_for_remove(), MEM, check_dependence_data::mode, next, table_elt::next_same_hash, p, REG, REG_TICK, REGNO, remove_from_table(), SUBREG_REG, SUBREG_TICKED, TEST_HARD_REG_BIT, XEXP, XVECEXP, and XVECLEN.
Referenced by addr_affects_sp_p(), check_reorder_legality_of_type(), cse_around_loop(), cse_insn(), cse_set_around_loop(), flush_hash_table(), invalidate(), invalidate_from_clobbers(), invalidate_skipped_set(), and move2add_note_store().
Definition at line 2094 of file cse.c.
References delete_reg_equiv(), table_elt::exp, FIRST_PSEUDO_REGISTER, GET_CODE, GET_MODE, HARD_REGNO_NREGS, hard_regs_in_table, HASH_SIZE, i, next, table_elt::next_same_hash, p, REG, REG_TICK, REGNO, regs_invalidated_by_call, remove_from_table(), SUBREG_TICKED, and TEST_HARD_REG_BIT.
Referenced by cse_insn(), and invalidate_skipped_block().
Definition at line 6460 of file cse.c.
References GET_CODE, GET_MODE, i, invalidate(), MEM, REG, XEXP, XVECEXP, XVECLEN, and is::y.
Referenced by cse_insn(), and invalidate_skipped_block().
Definition at line 6410 of file cse.c.
References HASH_SIZE, i, table_elt::in_memory, next, table_elt::next_same_hash, p, and remove_from_table().
Referenced by cse_insn(), invalidate_skipped_block(), and invalidate_skipped_set().
Definition at line 6711 of file cse.c.
References CONST_OR_PURE_CALL_P, GET_CODE, insn, INSN_P, invalidate_for_call(), invalidate_from_clobbers(), invalidate_memory(), invalidate_skipped_set(), NEXT_INSN, note_stores(), NULL, and PATTERN.
Referenced by cse_basic_block().
Definition at line 6672 of file cse.c.
References addr_affects_sp_p(), cc0_rtx, cse_rtx_varies_p(), GET_CODE, GET_MODE, HAVE_cc0, invalidate(), invalidate_memory(), MEM, MEM_IN_STRUCT_P, pc_rtx, REG, and XEXP.
Referenced by invalidate_skipped_block().
| static struct table_elt* lookup | ( | rtx | x, | |
| unsigned | hash, | |||
| enum machine_mode | mode | |||
| ) | [static, read] |
Definition at line 1453 of file cse.c.
References table_elt::exp, exp_equiv_p(), GET_CODE, table_elt::mode, table_elt::next_same_hash, p, and REG.
Definition at line 1504 of file cse.c.
References copy_rtx(), table_elt::exp, exp_equiv_p(), table_elt::first_same_value, GET_CODE, GET_MODE, GET_MODE_SIZE, HASH_MASK, lookup(), table_elt::next_same_value, p, PUT_MODE, safe_hash(), and word_mode.
Referenced by fold_rtx(), and fold_rtx_subreg().
| static struct table_elt* lookup_for_remove | ( | rtx | x, | |
| unsigned | hash, | |||
| enum machine_mode | mode | |||
| ) | [static, read] |
Definition at line 1472 of file cse.c.
References table_elt::exp, exp_equiv_p(), GET_CODE, table_elt::mode, table_elt::next_same_hash, p, REG, and REGNO.
Referenced by invalidate().
| static void make_new_qty | ( | unsigned int | reg, | |
| enum machine_mode | mode | |||
| ) | [static] |
Definition at line 1046 of file cse.c.
References abort, qty_table_elem::comparison_code, qty_table_elem::const_insn, qty_table_elem::const_rtx, qty_table_elem::first_reg, qty_table_elem::last_reg, max_qty, qty_table_elem::mode, reg_eqv_elem::next, next_qty, NULL_RTX, reg_eqv_elem::prev, q, REG_QTY, and UNKNOWN.
Referenced by insert_regs().
| static void make_regs_eqv | ( | unsigned int | new, | |
| unsigned int | old | |||
| ) | [static] |
Definition at line 1073 of file cse.c.
References abort, cse_basic_block_end, cse_basic_block_start, FIRST_PSEUDO_REGISTER, qty_table_elem::first_reg, FIXED_REGNO_P, qty_table_elem::last_reg, reg_eqv_elem::next, next, NO_REGS, reg_eqv_elem::prev, prev, q, REG_QTY, REGNO_FIRST_UID, REGNO_LAST_UID, REGNO_QTY_VALID_P, REGNO_REG_CLASS, and uid_cuid.
Referenced by insert_regs().
| static int mention_regs | ( | rtx | x | ) | [static] |
Definition at line 1178 of file cse.c.
References changed, COMPARE, FIRST_PSEUDO_REGISTER, GET_CODE, GET_MODE, GET_RTX_CLASS, GET_RTX_FORMAT, GET_RTX_LENGTH, HARD_REGNO_NREGS, i, insert_regs(), NULL, REG, REG_IN_TABLE, REG_TICK, REGNO, REGNO_QTY_VALID_P, rehash_using_reg(), remove_invalid_refs(), remove_invalid_subreg_refs(), SUBREG_BYTE, SUBREG_REG, SUBREG_TICKED, XEXP, XVECEXP, and XVECLEN.
Referenced by cse_insn(), insert_regs(), and mention_regs().
Definition at line 1752 of file cse.c.
References delete_reg_equiv(), table_elt::exp, exp, exp_equiv_p(), GET_CODE, HASH, hash_arg_in_memory, insert(), insert_regs(), table_elt::mode, mode, next, table_elt::next_same_value, REG, REGNO, rehash_using_reg(), and remove_from_table().
Referenced by cse_insn(), and record_jump_cond().
Definition at line 990 of file cse.c.
References CLEAR_HARD_REG_SET, first, hard_regs_in_table, HASH_SIZE, i, last, max_reg, memset, cse_reg_info::next, next_qty, table_elt::next_same_hash, NULL, and prev_insn.
Referenced by cse_basic_block(), and print_line_numbers_this_cu().
Definition at line 811 of file cse.c.
References GET_CODE, GET_MODE, GET_MODE_BITSIZE, GET_MODE_CLASS, GET_MODE_SIZE, MODE_INT, REG, rtx_cost(), subreg_lowpart_p(), SUBREG_REG, and TRULY_NOOP_TRUNCATION.
| static void record_jump_cond PARAMS | ( | (enum rtx_code, enum machine_mode, rtx, rtx, int) | ) | [static] |
| static enum rtx_code find_comparison_args PARAMS | ( | (enum rtx_code, rtx *, rtx *, enum machine_mode *, enum machine_mode *) | ) | [static] |
| static void find_best_addr PARAMS | ( | (rtx, rtx *, enum machine_mode) | ) | [static] |
| static unsigned canon_hash_string PARAMS | ( | (const char *) | ) | [static] |
Definition at line 635 of file mips-tfile.c.
| static void remove_invalid_subreg_refs PARAMS | ( | (unsigned int, unsigned int, enum machine_mode) | ) | [static] |
| static int cse_rtx_varies_p PARAMS | ( | (rtx, int) | ) | [static] |
| static void invalidate PARAMS | ( | (rtx, enum machine_mode) | ) | [static] |
| static struct table_elt* insert PARAMS | ( | (rtx, struct table_elt *, unsigned, enum machine_mode) | ) | [static, read] |
| static struct table_elt* lookup PARAMS | ( | (rtx, unsigned, enum machine_mode) | ) | [static, read] |
| static void delete_reg_equiv PARAMS | ( | (unsigned int) | ) | [static] |
| static void make_regs_eqv PARAMS | ( | (unsigned int, unsigned int) | ) | [static] |
| static void make_new_qty PARAMS | ( | (unsigned int, enum machine_mode) | ) | [static] |
Definition at line 77 of file cplus-dem.c.
| static int preferrable PARAMS | ( | (int, int, int, int) | ) | [static] |
| static int approx_reg_cost PARAMS | ( | (rtx) | ) | [static] |
| static int preferrable | ( | int | cost_a, | |
| int | regcost_a, | |||
| int | cost_b, | |||
| int | regcost_b | |||
| ) | [static] |
| static void record_jump_cond | ( | enum rtx_code | code, | |
| enum machine_mode | mode, | |||
| rtx | op0, | |||
| rtx | op1, | |||
| int | reversed_nonequality | |||
| ) | [static] |
Definition at line 4517 of file cse.c.
References qty_table_elem::comparison_code, qty_table_elem::comparison_const, qty_table_elem::comparison_qty, CONSTANT_P, do_not_record, EQ, equiv_constant(), table_elt::first_same_value, FLOAT_MODE_P, gen_lowpart_if_possible(), gen_rtx_SUBREG(), GET_CODE, GET_MODE, GET_MODE_SIZE, HASH, hash_arg_in_memory, table_elt::in_memory, insert(), insert_regs(), lookup(), merge_equiv_classes(), NE, NULL, NULL_RTX, REG, REG_QTY, REGNO, rehash_using_reg(), rtx_equal_p(), subreg_lowpart_p(), and SUBREG_REG.
Referenced by record_jump_cond(), and record_jump_equiv().
Definition at line 4464 of file cse.c.
References any_condjump_p(), find_comparison_args(), fold_rtx(), GET_CODE, mode, pc_rtx, pc_set(), record_jump_cond(), reversed_comparison_code_parts(), SET_SRC, UNKNOWN, and XEXP.
Referenced by cse_basic_block(), and cse_insn().
Definition at line 2043 of file cse.c.
References table_elt::exp, exp_equiv_p(), GET_CODE, HASH_MASK, HASH_SIZE, i, table_elt::mode, next, table_elt::next_same_hash, p, table_elt::prev_same_hash, REG, REG_IN_TABLE, reg_mentioned_p(), REG_TICK, REGNO, safe_hash(), and SUBREG_REG.
Referenced by cse_insn(), mention_regs(), merge_equiv_classes(), and record_jump_cond().
Definition at line 1368 of file cse.c.
References table_elt::first_same_value, HASH_SIZE, next, table_elt::next_same_hash, table_elt::next_same_value, p, prev, table_elt::prev_same_hash, table_elt::prev_same_value, and table_elt::related_value.
Referenced by flush_hash_table(), invalidate(), invalidate_for_call(), invalidate_memory(), merge_equiv_classes(), remove_invalid_refs(), and remove_invalid_subreg_refs().
| static void remove_invalid_refs | ( | unsigned int | regno | ) | [static] |
Definition at line 1991 of file cse.c.
References table_elt::exp, GET_CODE, HASH_SIZE, i, next, table_elt::next_same_hash, p, refers_to_regno_p(), REG, and remove_from_table().
Referenced by cse_insn(), and mention_regs().
| static void remove_invalid_subreg_refs | ( | unsigned int | regno, | |
| unsigned int | offset, | |||
| enum machine_mode | mode | |||
| ) | [static] |
Definition at line 2010 of file cse.c.
References end, table_elt::exp, exp, GET_CODE, GET_MODE, GET_MODE_SIZE, HASH_SIZE, i, next, table_elt::next_same_hash, p, refers_to_regno_p(), REG, REGNO, remove_from_table(), SUBREG_BYTE, and SUBREG_REG.
Referenced by mention_regs().
| int rtx_cost | ( | rtx | x, | |
| outer_code | ||||
| ) |
Definition at line 834 of file cse.c.
References CONST_COSTS, COSTS_N_INSNS, DEFAULT_RTX_COSTS, DIV, GET_CODE, GET_MODE, GET_MODE_SIZE, GET_RTX_FORMAT, GET_RTX_LENGTH, i, MOD, MODES_TIEABLE_P, REG, RTX_COSTS, SUBREG_REG, UNITS_PER_WORD, USE, XEXP, XVECEXP, and XVECLEN.
Referenced by address_cost(), alpha_rtx_costs(), arm_rtx_costs_1(), arm_size_rtx_costs(), arm_xscale_rtx_costs(), bfin_rtx_costs(), combine_givs_p(), compress_float_constant(), create_new_invariant(), cris_rtx_costs(), default_address_cost(), determine_web_costs(), distribute_and_simplify_rtx(), expand_binop(), expand_compound_operation(), expand_mult(), expand_smod_pow2(), expand_twoval_binop(), final_prescan_insn(), find_best_addr(), force_to_mode(), general_induction_var(), GTY(), init_expmed(), insn_rtx_cost(), ip2k_rtx_costs(), iv_add_mult_cost(), ix86_rtx_costs(), legitimize_operands(), load_mems(), lshift_cheap_p(), m68hc11_rtx_costs(), m68hc11_rtx_costs_1(), m68hc11_shift_cost(), make_extraction(), noce_try_sign_mask(), notreg_cost(), precompute_register_parameters(), prepare_cmp_insn(), reload_cse_move2add(), reload_cse_simplify_operands(), reload_cse_simplify_set(), rtx_cost(), s390_rtx_costs(), seq_cost(), simplify_binary_operation(), and simplify_binary_operation_1().
| static unsigned safe_hash | ( | rtx | x, | |
| enum machine_mode | mode | |||
| ) | [static] |
Definition at line 2505 of file cse.c.
References canon_hash(), do_not_record, and hash_arg_in_memory.
Referenced by equiv_constant(), find_comparison_args(), fold_rtx(), insert(), lookup_as_function(), rehash_using_reg(), and use_related_value().
Definition at line 7578 of file cse.c.
References cc0_rtx, current_function_internal_arg_pointer, FIRST_PSEUDO_REGISTER, GET_CODE, insn, INSN_P, next_nonnote_insn(), PATTERN, REG, reg_referenced_p(), REGNO, SET_DEST, set_noop_p(), SET_SRC, and side_effects_p().
Referenced by insn_live_p().
Definition at line 2153 of file cse.c.
References CONST, table_elt::exp, table_elt::first_same_value, GET_CODE, get_integer_term(), GET_MODE, get_related_value(), HASH_MASK, HOST_WIDE_INT, lookup(), table_elt::next_same_value, offset, p, plus_constant, q, REG, table_elt::related_value, rtx_equal_p(), and safe_hash().
Referenced by cse_insn().
struct cse_reg_info* cached_cse_reg_info [static] |
unsigned int cached_regno [static] |
int constant_pool_entries_cost [static] |
Definition at line 562 of file cse.c.
Referenced by cse_insn(), cse_main(), fold_rtx(), and fold_rtx_mem_1().
int cse_altered [static] |
int cse_basic_block_end [static] |
Definition at line 359 of file cse.c.
Referenced by cse_basic_block(), cse_main(), and make_regs_eqv().
int cse_basic_block_start [static] |
Definition at line 355 of file cse.c.
Referenced by cse_basic_block(), cse_main(), and make_regs_eqv().
int cse_jumps_altered [static] |
struct cse_reg_info* cse_reg_info_free_list [static] |
struct cse_reg_info* cse_reg_info_used_list [static] |
struct cse_reg_info* cse_reg_info_used_list_end [static] |
int do_not_record [static] |
Definition at line 392 of file cse.c.
Referenced by canon_hash(), cse_insn(), find_best_addr(), record_jump_cond(), and safe_hash().
struct table_elt* free_element_chain [static] |
HARD_REG_SET hard_regs_in_table [static] |
Definition at line 351 of file cse.c.
Referenced by addr_affects_sp_p(), insert(), invalidate(), invalidate_for_call(), and new_basic_block().
int hash_arg_in_memory [static] |
Definition at line 403 of file cse.c.
Referenced by canon_hash(), cse_insn(), find_best_addr(), merge_equiv_classes(), record_jump_cond(), and safe_hash().
struct table_elt* last_jump_equiv_class [static] |
int max_elements_made [static] |
int max_insn_uid [static] |
int max_qty [static] |
Definition at line 211 of file cse.c.
Referenced by cse_basic_block(), cse_main(), local_alloc(), and make_new_qty().
int max_reg [static] |
Definition at line 201 of file cse.c.
Referenced by arm_compute_save_reg0_reg12_mask(), cond_move_process_if_block(), cse_basic_block(), cse_main(), delete_null_pointer_checks(), df_grow_reg_info(), duplicate_loop_exit_test(), init_deps(), ISA_Registers_End(), new_basic_block(), s390_gimplify_va_arg(), and s390_va_arg().
int max_uid [static] |
Definition at line 368 of file cse.c.
Referenced by alloc_gcse_mem(), block_alloc(), build_btr_def_use_webs(), check_function_return_warnings(), cse_end_of_basic_block(), cse_main(), final(), print_rtl_graph_with_bb(), print_rtl_with_bb(), rebuild_jump_labels(), rtl_verify_flow_info_1(), shorten_branches(), single_reachable_address(), split_branches(), and verify_flow_info().
int n_elements_made [static] |
int next_qty [static] |
Definition at line 216 of file cse.c.
Referenced by alloc_qty(), block_alloc(), cse_basic_block(), local_alloc(), make_new_qty(), and new_basic_block().
Definition at line 273 of file cse.c.
Referenced by _bfd_sh_align_load_span(), cse_basic_block(), cse_insn(), df_pattern_emit_before(), eliminate_regs_in_insn(), emit_prefetch_instructions(), final_emit_insn_group_barriers(), flow_call_edges_add(), i960_bypass(), new_basic_block(), noce_get_alt_condition(), print_insn_sparc(), rtl_flow_call_edges_add(), see_analyze_one_def(), and try_swap_copy_prop().
struct qty_table_elem* qty_table [static] |
int recorded_label_ref [static] |
Definition at line 386 of file cse.c.
Referenced by cse_basic_block(), cse_main(), local_alloc(), and update_equiv_regs().
struct reg_eqv_elem* reg_eqv_table [static] |
struct cse_reg_info* reg_hash[REGHASH_SIZE] [static] |
Definition at line 277 of file cse.c.
Referenced by _reg_unused_after(), arc_final_prescan_insn(), arm_final_prescan_insn(), block_alloc(), combine_reloads(), cse_insn(), find_dummy_reload(), find_reloads(), find_reloads_address(), find_reloads_address_1(), insert(), push_reload(), reg_unused_after(), ultrasparc_sched_reorder(), and wipe_dead_reg().
1.5.6