osprey/kg++fe/gnu/cse.c File Reference

#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"

Include dependency graph for cse.c:

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_infoget_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_eltlookup (rtx x, unsigned hash, enum machine_mode mode)
static struct table_eltlookup_for_remove (rtx x, unsigned hash, enum machine_mode mode)
static rtx lookup_as_function (rtx x, enum rtx_code code)
static struct table_eltinsert (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_elemqty_table
static rtx prev_insn
static rtx this_insn
static struct reg_eqv_elemreg_eqv_table
static struct cse_reg_infocse_reg_info_free_list
static struct cse_reg_infocse_reg_info_used_list
static struct cse_reg_infocse_reg_info_used_list_end
static struct cse_reg_inforeg_hash [REGHASH_SIZE]
static unsigned int cached_regno
static struct cse_reg_infocached_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_elttable [HASH_SIZE]
static struct table_eltfree_element_chain
static int n_elements_made
static int max_elements_made
static struct table_eltlast_jump_equiv_class
static int constant_pool_entries_cost


Define Documentation

#define CHEAP_REGNO (  ) 

Value:

Definition at line 496 of file cse.c.

Referenced by approx_reg_cost_1().

#define CHEAPER ( X,
 )     (preferrable ((X)->cost, (X)->regcost, (Y)->cost, (Y)->regcost) < 0)

Definition at line 1558 of file cse.c.

Referenced by insert().

#define COST ( X   )     (GET_CODE (X) == REG ? 0 : notreg_cost (X, SET))

Definition at line 503 of file cse.c.

Referenced by cse_insn(), find_best_addr(), fold_rtx(), fold_rtx_mem_1(), and insert().

#define COST_IN ( X,
OUTER   )     (GET_CODE (X) == REG ? 0 : notreg_cost (X, OUTER))

Definition at line 504 of file cse.c.

Referenced by fold_rtx().

#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 (  ) 

Value:

Definition at line 487 of file cse.c.

Referenced by make_regs_eqv().

#define GET_CSE_REG_INFO (  ) 

Value:

Definition at line 508 of file cse.c.

#define HASH ( X,
 ) 

#define HASH_MASK   (HASH_SIZE - 1)

#define HASH_SHIFT   5

Definition at line 470 of file cse.c.

#define HASH_SIZE   (1 << HASH_SHIFT)

Definition at line 471 of file cse.c.

#define INSN_CUID ( INSN   )     (uid_cuid[INSN_UID (INSN)])

Definition at line 372 of file cse.c.

#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

Definition at line 566 of file cse.c.

Referenced by cse_end_of_basic_block().

#define REG_IN_TABLE (  )     ((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 (  )     ((GET_CSE_REG_INFO (N))->reg_qty)

#define REG_TICK (  )     ((GET_CSE_REG_INFO (N))->reg_tick)

#define REGHASH_FN ( REGNO   )     (((REGNO) ^ ((REGNO) >> REGHASH_SHIFT)) & REGHASH_MASK)

Definition at line 338 of file cse.c.

Referenced by get_cse_reg_info().

#define REGHASH_MASK   (REGHASH_SIZE - 1)

Definition at line 335 of file cse.c.

#define REGHASH_SHIFT   7

Definition at line 333 of file cse.c.

#define REGHASH_SIZE   (1 << REGHASH_SHIFT)

Definition at line 334 of file cse.c.

#define REGNO_QTY_VALID_P (  )     (REG_QTY (N) != (int) (N))

#define SUBREG_TICKED (  )     ((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().


Function Documentation

static int addr_affects_sp_p ( rtx  addr  )  [static]

int address_cost ( rtx  x,
enum machine_mode  mode 
)

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().

static int approx_reg_cost_1 ( rtx xp,
void data 
) [static]

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]

static unsigned canon_hash_string ( char *  ps  )  const [inline, static]

Definition at line 2223 of file cse.c.

References p.

Referenced by canon_hash().

static rtx canon_reg ( rtx  x,
rtx  insn 
) [static]

static int check_dependence ( rtx x,
void data 
) [static]

static int check_for_label_ref ( rtx rtl,
void data 
) [static]

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().

static void count_reg_usage ( rtx  x,
int *  counts,
rtx  dest,
int  incr 
) [static]

static void cse_around_loop ( rtx  loop_start  )  [static]

static rtx cse_basic_block ( rtx  from,
rtx  to,
struct branch_path *  next_branch,
int  around_loop 
) [static]

static void cse_check_loop_start ( rtx  x,
set  ,
void data 
) [static]

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 
)

static void cse_insn ( rtx  insn,
rtx  libcall_insn 
) [static]

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().

int cse_main ( rtx  f,
int  nregs,
int  after_loop,
FILE file 
)

static rtx cse_process_notes ( rtx  x,
rtx  object 
) [static]

static int cse_rtx_varies_p ( rtx  x,
int  from_alias 
) [static]

static void cse_set_around_loop ( rtx  x,
rtx  insn,
rtx  loop_start 
) [static]

static bool dead_libcall_p ( rtx  insn,
int *  counts 
) [static]

static void delete_reg_equiv ( unsigned int  reg  )  [static]

int delete_trivially_dead_insns ( rtx  insns,
int  nreg 
)

void dump_class ( struct table_elt classp  ) 

Definition at line 708 of file cse.c.

static rtx equiv_constant ( rtx  x  )  [static]

static int exp_equiv_p ( rtx  x,
rtx  y,
int  validate,
int  equal_values 
) [static]

static void find_best_addr ( rtx  insn,
rtx loc,
enum machine_mode  mode 
) [static]

static enum rtx_code find_comparison_args ( enum rtx_code  code,
rtx parg1,
rtx parg2,
enum machine_mode pmode1,
enum machine_mode pmode2 
) [static]

static void flush_hash_table ( void   )  [static]

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().

static rtx fold_rtx ( rtx  x,
rtx  insn 
) [static]

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 
)

static struct cse_reg_info* get_cse_reg_info ( unsigned int  regno  )  [static, read]

static struct table_elt* insert ( rtx  x,
struct table_elt classp,
unsigned  hash,
enum machine_mode  mode 
) [static, read]

static int insert_regs ( rtx  x,
struct table_elt classp,
int  modified 
) [static]

static bool insn_live_p ( rtx  insn,
int *  counts 
) [static]

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]

static void invalidate_for_call ( void   )  [static]

static void invalidate_from_clobbers ( rtx  x  )  [static]

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().

static void invalidate_memory ( void   )  [static]

static void invalidate_skipped_block ( rtx  start  )  [static]

static void invalidate_skipped_set ( rtx  dest,
rtx  set,
data   
) [static]

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.

static rtx lookup_as_function ( rtx  x,
enum rtx_code  code 
) [static]

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]

static void make_regs_eqv ( unsigned int  new,
unsigned int  old 
) [static]

static int mention_regs ( rtx  x  )  [static]

static void merge_equiv_classes ( struct table_elt class1,
struct table_elt class2 
) [static]

static void new_basic_block ( void   )  [static]

static int notreg_cost ( rtx  x,
enum rtx_code  outer 
) [static]

static bool set_live_p PARAMS ( (rtx, rtx, int *)   )  [static]

static bool insn_live_p PARAMS ( (rtx, int *)   )  [static]

void dump_class PARAMS ( (struct table_elt *)   ) 

static void count_reg_usage PARAMS ( (rtx, int *, rtx, int)   )  [static]

static rtx cse_basic_block PARAMS ( (rtx, rtx, struct branch_path *, int)   )  [static]

static void cse_set_around_loop PARAMS ( (rtx, rtx, rtx  )  [static]

static void invalidate_skipped_set PARAMS ( (rtx, rtx, void *)   )  [static]

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 rtx canon_reg PARAMS ( (rtx, rtx  )  [static]

static int exp_equiv_p PARAMS ( (rtx, rtx, int, int)   )  [static]

static unsigned canon_hash_string PARAMS ( (const char *)   )  [static]

Definition at line 635 of file mips-tfile.c.

static rtx use_related_value PARAMS ( (rtx, struct table_elt *)   )  [static]

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 void merge_equiv_classes PARAMS ( (struct table_elt *, struct table_elt *)   )  [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 remove_from_table PARAMS ( (struct table_elt *, unsigned)   )  [static]

static int insert_regs PARAMS ( (rtx, struct table_elt *, int)   )  [static]

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]

static void new_basic_block PARAMS ( (void  )  [static, read]

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 approx_reg_cost_1 PARAMS ( (rtx *, void *)   )  [static]

static int notreg_cost PARAMS ( (rtx, enum rtx_code  )  [static]

static int preferrable ( int  cost_a,
int  regcost_a,
int  cost_b,
int  regcost_b 
) [static]

Definition at line 776 of file cse.c.

References MAX_COST.

Referenced by cse_insn().

static void record_jump_cond ( enum rtx_code  code,
enum machine_mode  mode,
rtx  op0,
rtx  op1,
int  reversed_nonequality 
) [static]

static void record_jump_equiv ( rtx  insn,
int  taken 
) [static]

static void rehash_using_reg ( rtx  x  )  [static]

static void remove_from_table ( struct table_elt elt,
unsigned  hash 
) [static]

static void remove_invalid_refs ( unsigned int  regno  )  [static]

static void remove_invalid_subreg_refs ( unsigned int  regno,
unsigned int  offset,
enum machine_mode  mode 
) [static]

int rtx_cost ( rtx  x,
outer_code   
)

static unsigned safe_hash ( rtx  x,
enum machine_mode  mode 
) [static]

static bool set_live_p ( rtx  set,
insn  ,
int *  counts 
) [static]

static rtx use_related_value ( rtx  x,
struct table_elt elt 
) [static]


Variable Documentation

Definition at line 344 of file cse.c.

unsigned int cached_regno [static]

Definition at line 343 of file cse.c.

Referenced by get_cse_reg_info().

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]

Definition at line 377 of file cse.c.

Referenced by cse_insn(), and cse_main().

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]

Definition at line 382 of file cse.c.

Referenced by cse_basic_block(), cse_insn(), and cse_main().

Definition at line 326 of file cse.c.

Definition at line 329 of file cse.c.

Definition at line 330 of file cse.c.

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().

Definition at line 540 of file cse.c.

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 555 of file cse.c.

int max_elements_made [static]

Definition at line 549 of file cse.c.

Referenced by cse_main().

int max_insn_uid [static]

Definition at line 206 of file cse.c.

Referenced by cse_around_loop(), and cse_main().

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]

int max_uid [static]

int n_elements_made [static]

Definition at line 544 of file cse.c.

Referenced by cse_main(), and insert().

int next_qty [static]

rtx prev_insn [static]

Definition at line 255 of file cse.c.

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().

Definition at line 294 of file cse.c.

struct cse_reg_info* reg_hash[REGHASH_SIZE] [static]

Definition at line 336 of file cse.c.

struct table_elt* table[HASH_SIZE] [static]

Definition at line 535 of file cse.c.

rtx this_insn [static]

int* uid_cuid [static]

Definition at line 365 of file cse.c.


Generated on Wed Apr 8 15:30:40 2009 for Open64 by  doxygen 1.5.6