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

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

Include dependency graph for combine.c:

Go to the source code of this file.

Data Types

type  undo
type  undobuf

Defines

#define gen_lowpart   dont_use_gen_lowpart_you_dummy
#define INSN_CUID(INSN)   (INSN_UID (INSN) > max_uid_cuid ? insn_cuid (INSN) : uid_cuid[INSN_UID (INSN)])
#define UWIDE_SHIFT_LEFT_BY_BITS_PER_WORD(val)   (((unsigned HOST_WIDE_INT) (val) << (BITS_PER_WORD - 1)) << 1)
#define nonzero_bits(X, M)   cached_nonzero_bits (X, M, NULL_RTX, VOIDmode, 0)
#define num_sign_bit_copies(X, M)   cached_num_sign_bit_copies (X, M, NULL_RTX, VOIDmode, 0)
#define SUBST(INTO, NEWVAL)   do_SUBST(&(INTO), (NEWVAL))
#define SUBST_INT(INTO, NEWVAL)   do_SUBST_INT(&(INTO), (NEWVAL))
#define COMBINE_RTX_EQUAL_P(X, Y)
#define nonzero_bits_with_known(X, MODE)   cached_nonzero_bits (X, MODE, known_x, known_mode, known_ret)
#define cached_num_sign_bit_copies()
#define num_sign_bit_copies_with_known(X, M)   cached_num_sign_bit_copies (X, M, known_x, known_mode, known_ret)

Functions/Subroutines

static void do_SUBST PARAMS ((rtx *, rtx))
static void do_SUBST_INT PARAMS ((int *, int))
static void init_reg_last_arrays PARAMS ((void))
static void
set_nonzero_bits_and_sign_copies 
PARAMS ((rtx, rtx, void *))
static int cant_combine_insn_p PARAMS ((rtx))
static int can_combine_p PARAMS ((rtx, rtx, rtx, rtx, rtx *, rtx *))
static int combinable_i3pat PARAMS ((rtx, rtx *, rtx, rtx, int, rtx *))
static rtx try_combine PARAMS ((rtx, rtx, rtx, int *))
static rtx subst PARAMS ((rtx, rtx, rtx, int, int))
static rtx combine_simplify_rtx PARAMS ((rtx, enum machine_mode, int, int))
static rtx simplify_logical PARAMS ((rtx, int))
static rtx make_extraction PARAMS ((enum machine_mode, rtx, HOST_WIDE_INT, rtx, unsigned HOST_WIDE_INT, int, int, int))
static rtx make_compound_operation PARAMS ((rtx, enum rtx_code))
static int get_pos_from_mask PARAMS ((unsigned HOST_WIDE_INT, unsigned HOST_WIDE_INT *))
static rtx force_to_mode PARAMS ((rtx, enum machine_mode, unsigned HOST_WIDE_INT, rtx, int))
static rtx if_then_else_cond PARAMS ((rtx, rtx *, rtx *))
static rtx known_cond PARAMS ((rtx, enum rtx_code, rtx, rtx))
static int
rtx_equal_for_field_assignment_p 
PARAMS ((rtx, rtx))
static rtx simplify_and_const_int PARAMS ((rtx, enum machine_mode, rtx, unsigned HOST_WIDE_INT))
static unsigned HOST_WIDE_INT
cached_nonzero_bits 
PARAMS ((rtx, enum machine_mode, rtx, enum machine_mode, unsigned HOST_WIDE_INT))
static unsigned int
cached_num_sign_bit_copies 
PARAMS ((rtx, enum machine_mode, rtx, enum machine_mode, unsigned int))
static int merge_outer_ops PARAMS ((enum rtx_code *, HOST_WIDE_INT *, enum rtx_code, HOST_WIDE_INT, enum machine_mode, int *))
static rtx simplify_shift_const PARAMS ((rtx, enum rtx_code, enum machine_mode, rtx, int))
static int recog_for_combine PARAMS ((rtx *, rtx, rtx *))
static rtx gen_lowpart_for_combine PARAMS ((enum machine_mode, rtx))
static rtx gen_binary PARAMS ((enum rtx_code, enum machine_mode, rtx, rtx))
static enum rtx_code
simplify_comparison 
PARAMS ((enum rtx_code, rtx *, rtx *))
static void record_value_for_reg PARAMS ((rtx, rtx, rtx))
static int get_last_value_validate PARAMS ((rtx *, rtx, int, int))
static void move_deaths PARAMS ((rtx, rtx, int, rtx, rtx *))
static void distribute_notes PARAMS ((rtx, rtx, rtx, rtx, rtx, rtx))
static rtx reversed_comparison PARAMS ((rtx, enum machine_mode, rtx, rtx))
static void do_SUBST (rtx *into, rtx newval)
static void do_SUBST_INT (int *into, int newval)
int combine_instructions (rtx f, unsigned int nregs)
static void init_reg_last_arrays ()
static void setup_incoming_promotions ()
static void set_nonzero_bits_and_sign_copies (rtx x, rtx set, data)
static int can_combine_p (rtx insn, rtx i3, pred, rtx succ, rtx *pdest, rtx *psrc)
static int sets_function_arg_p (rtx pat)
static int combinable_i3pat (rtx i3, rtx *loc, rtx i2dest, rtx i1dest, int i1_not_in_src, rtx *pi3dest_killed)
static int contains_muldiv (rtx x)
static int cant_combine_insn_p (rtx insn)
static rtx try_combine (rtx i3, rtx i2, rtx i1, int *new_direct_jump_p)
static void undo_all ()
static void undo_commit ()
static rtxfind_split_point (rtx *loc, rtx insn)
static rtx subst (rtx x, rtx from, rtx to, int in_dest, int unique_copy)
static rtx combine_simplify_rtx (rtx x, enum machine_mode op0_mode, int last, int in_dest)
static rtx simplify_if_then_else (rtx x)
static rtx simplify_set (rtx x)
static rtx simplify_logical (rtx x, int last)
static rtx expand_compound_operation (rtx x)
static rtx expand_field_assignment (rtx x)
static rtx make_extraction (enum machine_mode mode, rtx inner, HOST_WIDE_INT pos, rtx pos_rtx, unsigned HOST_WIDE_INT len, int unsignedp, int in_dest, int in_compare)
static rtx extract_left_shift (rtx x, int count)
static rtx make_compound_operation (rtx x, enum rtx_code in_code)
static int get_pos_from_mask (unsigned HOST_WIDE_INT m, unsigned HOST_WIDE_INT *plen)
static rtx force_to_mode (rtx x, enum machine_mode mode, unsigned HOST_WIDE_INT mask, rtx reg, int just_select)
static rtx if_then_else_cond (rtx x, rtx *ptrue, rtx *pfalse)
static rtx known_cond (rtx x, enum rtx_code cond, rtx reg, rtx val)
static int rtx_equal_for_field_assignment_p (rtx x, rtx y)
static rtx make_field_assignment (rtx x)
static rtx apply_distributive_law (rtx x)
static rtx simplify_and_const_int (rtx x, enum machine_mode mode, rtx varop, unsigned HOST_WIDE_INT constop)
static unsigned HOST_WIDE_INT cached_nonzero_bits (rtx x, enum machine_mode mode, rtx known_x, enum machine_mode known_mode, unsigned HOST_WIDE_INT known_ret)
static unsigned HOST_WIDE_INT nonzero_bits1 (rtx x, enum machine_mode mode, rtx known_x, enum machine_mode known_mode, unsigned HOST_WIDE_INT known_ret)
static unsigned int cached_num_sign_bit_copies (rtx x, enum machine_mode mode, rtx known_x, enum machine_mode known_mode, unsigned int known_ret)
static unsigned int num_sign_bit_copies1 (rtx x, enum machine_mode mode, rtx known_x, enum machine_mode known_mode, unsigned int known_ret)
unsigned int extended_count (rtx x, enum machine_mode mode, int unsignedp)
static int merge_outer_ops (enum rtx_code *pop0, HOST_WIDE_INT *pconst0, enum rtx_code op1, HOST_WIDE_INT const1, enum machine_mode mode, int *pcomp_p)
static rtx simplify_shift_const (rtx x, enum rtx_code code, enum machine_mode result_mode, rtx varop, int orig_count)
static int recog_for_combine (rtx *pnewpat, rtx insn, rtx *pnotes)
static rtx gen_lowpart_for_combine (enum machine_mode mode, rtx x)
static rtx gen_binary (enum rtx_code code, enum machine_mode mode, rtx op0, rtx op1)
static enum rtx_code simplify_comparison (enum rtx_code code, rtx *pop0, rtx *pop1)
static enum rtx_code combine_reversed_comparison_code (rtx exp)
static rtx reversed_comparison (rtx exp, enum machine_mode mode, rtx op0, rtx op1)
static void update_table_tick (rtx x)
static void record_value_for_reg (rtx reg, rtx insn, rtx value)
static void record_dead_and_set_regs_1 (rtx dest, rtx setter, void *data)
static void record_dead_and_set_regs (rtx insn)
static void record_promoted_value (rtx insn, rtx subreg)
static void check_promoted_subreg (rtx insn, rtx x)
static int get_last_value_validate (rtx *loc, rtx insn, int tick, int replace)
static rtx get_last_value (rtx x)
static int use_crosses_set_p (rtx x, int from_cuid)
static void reg_dead_at_p_1 (rtx dest, rtx x, data)
static int reg_dead_at_p (rtx reg, rtx insn)
static void mark_used_regs_combine (rtx x)
rtx remove_death (unsigned int regno, rtx insn)
static void move_deaths (rtx x, rtx maybe_kill_insn, int from_cuid, rtx to_insn, rtx *pnotes)
static int reg_bitfield_target_p (rtx x, rtx body)
static void distribute_notes (rtx notes, rtx from_insn, rtx i3, rtx i2, rtx elim_i2, rtx elim_i1)
static void distribute_links (rtx links)
static int insn_cuid (rtx insn)
void dump_combine_stats (FILE *file)
void dump_combine_total_stats (FILE *file)

Variables

static int combine_attempts
static int combine_merges
static int combine_extras
static int combine_successes
static int total_attempts
static int total_merges
static int total_extras
static int total_successes
static int * uid_cuid
static int max_uid_cuid
static unsigned int combine_max_regno
static rtxreg_last_death
static rtxreg_last_set
static int mem_last_set
static int last_call_cuid
static rtx subst_insn
static rtx subst_prev_insn
static int subst_low_cuid
static HARD_REG_SET newpat_used_regs
static rtx added_links_insn
static basic_block this_basic_block
static sbitmap refresh_blocks
static int need_refresh
static rtxreg_last_set_value
static int * reg_last_set_label
static int * reg_last_set_table_tick
static char * reg_last_set_invalid
static int label_tick
static unsigned HOST_WIDE_INT * reg_nonzero_bits
static enum machine_mode nonzero_bits_mode
static unsigned char * reg_sign_bit_copies
static int nonzero_sign_valid
static struct undobuf undobuf
static int n_occurrences
static unsigned int reg_dead_regno
static unsigned int reg_dead_endregno
static int reg_dead_flag


Define Documentation

 
#define cached_num_sign_bit_copies (  ) 

#define COMBINE_RTX_EQUAL_P ( X,
 ) 

Value:

((X) == (Y)           \
   || (GET_CODE (X) == REG && GET_CODE (Y) == REG \
       && REGNO (X) == REGNO (Y) && GET_MODE (X) == GET_MODE (Y)))

Referenced by subst().

#define gen_lowpart   dont_use_gen_lowpart_you_dummy

Definition at line 96 of file combine.c.

Referenced by alpha_emit_conditional_move(), alpha_emit_set_const(), alpha_emit_setcc(), alpha_expand_block_move(), alpha_expand_builtin_vector_binop(), alpha_expand_compare_and_swap_12(), alpha_expand_lock_test_and_set_12(), alpha_expand_mov_nobwx(), alpha_expand_unaligned_load(), alpha_expand_unaligned_store(), alpha_initialize_trampoline(), alpha_split_compare_and_swap(), alpha_split_conditional_move(), alpha_split_lock_test_and_set(), altivec_expand_vec_init_builtin(), apply_distributive_law(), arm_const_double_by_parts(), arm_const_double_inline_cost(), arm_gen_movmemqi(), arm_gen_movstrqi(), arm_reload_out_hi(), bfin_expand_binop_builtin(), bfin_expand_builtin(), bfin_expand_unop_builtin(), combine_givs_p(), combine_simplify_rtx(), const_vector_elt_as_int(), convert_modes(), convert_move(), copy_rtx_and_substitute(), cse_insn(), cse_process_notes(), d30v_build_long_insn(), eliminate_regs_in_insn(), emit_group_load_1(), emit_group_store(), equiv_constant(), expand_absneg_bit(), expand_binop(), expand_builtin_signbit(), expand_builtin_stpcpy(), expand_complex_abs(), expand_compound_operation(), expand_copysign_absneg(), expand_copysign_bit(), expand_divmod(), expand_expr(), expand_expr_real_1(), expand_field_assignment(), expand_inline_function(), expand_movstr(), expand_mult(), expand_mult_const(), expand_return(), expand_unop(), extract_bit_field(), extract_force_align_mem_bit_field(), find_split_point(), fixup_var_refs_1(), fold_rtx(), fold_rtx_mem_1(), force_to_mode(), frv_split_double_load(), frv_split_double_store(), gen_absdf2(), gen_abssf2(), gen_ashrsi3(), gen_cmpstrsi(), gen_divsi3(), gen_easy_altivec_constant(), gen_extendhidi2(), gen_extendhisi2(), gen_extendqidi2(), gen_extendqihi2(), gen_extendqisi2(), gen_extv(), gen_extzv(), gen_ffssi2(), gen_imagpart(), gen_insv(), gen_lowpart(), gen_lowpart_or_truncate(), gen_lshrsi3(), gen_modsi3(), gen_move_insn(), gen_negdf2(), gen_negsf2(), gen_peephole2_1055(), gen_peephole2_1481(), gen_realpart(), gen_shl_and(), gen_shl_sext(), gen_split_1056(), gen_split_1083(), gen_split_1087(), gen_split_1155(), gen_split_1156(), gen_split_1157(), gen_split_1158(), gen_split_1159(), gen_split_1160(), gen_split_1162(), gen_split_1163(), gen_split_1211(), gen_split_1212(), gen_split_1213(), gen_split_1216(), gen_split_1217(), gen_split_1218(), gen_split_1221(), gen_split_1222(), gen_split_1227(), gen_split_1228(), gen_split_1234(), gen_split_1235(), gen_split_1251(), gen_split_1296(), gen_split_1298(), gen_split_1449(), gen_split_1450(), gen_split_1451(), gen_split_1452(), gen_split_1453(), gen_split_1454(), gen_udivsi3(), gen_umodsi3(), gen_zero_extendhidi2(), gen_zero_extendhisi2(), gen_zero_extendqidi2(), gen_zero_extendqihi2(), gen_zero_extendqisi2(), gen_zero_extendsidi2(), get_last_value(), ia64_expand_atomic_op(), ia64_expand_dot_prod_v8qi(), ia64_expand_tls_address(), ia64_expand_vcondu_v2si(), ia64_expand_vecint_compare(), ia64_expand_widen_sum(), initialize_trampoline(), insert(), instantiate_virtual_regs_1(), ix86_build_signbit_mask(), ix86_expand_binop_builtin(), ix86_expand_int_movcc(), ix86_expand_strlensi_unroll_1(), ix86_expand_vec_init_builtin(), ix86_expand_vector_extract(), ix86_expand_vector_init_duplicate(), ix86_expand_vector_init_general(), ix86_expand_vector_init_low_nonzero(), ix86_expand_vector_init_one_nonzero(), ix86_expand_vector_init_one_var(), ix86_expand_vector_move_misalign(), ix86_expand_vector_set(), ix86_force_to_memory(), ix86_split_ashl(), ix86_split_ashldi(), ix86_split_long_move(), m68hc11_gen_lowpart(), make_compound_operation(), make_extraction(), mips_emit_scc(), mips_expand_unaligned_store(), optimize_bit_field(), output_286(), output_288(), purge_addressof_1(), record_dead_and_set_regs_1(), romp_initialize_trampoline(), rs6000_expand_compare_and_swapqhi(), rtx_equal_for_field_assignment_p(), s390_canonicalize_comparison(), s390_expand_insv(), s390_expand_logical_operator(), safe_vector_operand(), scan_one_insn(), score_print_operand(), sh_initialize_trampoline(), simplify_and_const_int(), simplify_and_const_int_1(), simplify_comparison(), simplify_if_then_else(), simplify_set(), simplify_shift_const(), simplify_shift_const_1(), sparc_expand_compare_and_swap_12(), store_bit_field(), store_fixed_bit_field(), try_combine(), widen_operand(), and x86_initialize_trampoline().

#define INSN_CUID ( INSN   )     (INSN_UID (INSN) > max_uid_cuid ? insn_cuid (INSN) : uid_cuid[INSN_UID (INSN)])

#define nonzero_bits ( X,
 )     cached_nonzero_bits (X, M, NULL_RTX, VOIDmode, 0)

#define nonzero_bits_with_known ( X,
MODE   )     cached_nonzero_bits (X, MODE, known_x, known_mode, known_ret)

Definition at line 8144 of file combine.c.

Referenced by cached_nonzero_bits(), and nonzero_bits1().

#define num_sign_bit_copies ( X,
 )     cached_num_sign_bit_copies (X, M, NULL_RTX, VOIDmode, 0)

#define num_sign_bit_copies_with_known ( X,
 )     cached_num_sign_bit_copies (X, M, known_x, known_mode, known_ret)

Definition at line 8653 of file combine.c.

Referenced by cached_num_sign_bit_copies(), and num_sign_bit_copies1().

#define SUBST ( INTO,
NEWVAL   )     do_SUBST(&(INTO), (NEWVAL))

#define SUBST_INT ( INTO,
NEWVAL   )     do_SUBST_INT(&(INTO), (NEWVAL))

Definition at line 513 of file combine.c.

Referenced by recog_for_combine().

#define UWIDE_SHIFT_LEFT_BY_BITS_PER_WORD ( val   )     (((unsigned HOST_WIDE_INT) (val) << (BITS_PER_WORD - 1)) << 1)

Definition at line 137 of file combine.c.

Referenced by try_combine().


Function Documentation

static rtx apply_distributive_law ( rtx  x  )  [static]

static unsigned HOST_WIDE_INT cached_nonzero_bits ( rtx  x,
enum machine_mode  mode,
rtx  known_x,
enum machine_mode  known_mode,
unsigned HOST_WIDE_INT  known_ret 
) [static]

static unsigned int cached_num_sign_bit_copies ( rtx  x,
enum machine_mode  mode,
rtx  known_x,
enum machine_mode  known_mode,
unsigned int  known_ret 
) [static]

static int can_combine_p ( rtx  insn,
rtx  i3,
pred  ,
rtx  succ,
rtx pdest,
rtx psrc 
) [static]

static int cant_combine_insn_p ( rtx  insn  )  [static]

Definition at line 1467 of file combine.c.

References dest, FIRST_PSEUDO_REGISTER, fixed_regs, GET_CODE, INSN_P, REG_P, REGNO, SET_DEST, SET_SRC, single_set, src, and SUBREG_REG.

Referenced by try_combine().

static void check_promoted_subreg ( rtx  insn,
rtx  x 
) [static]

static int combinable_i3pat ( rtx  i3,
rtx loc,
rtx  i2dest,
rtx  i1dest,
int  i1_not_in_src,
rtx pi3dest_killed 
) [static]

int combine_instructions ( rtx  f,
unsigned int  nregs 
)

Definition at line 521 of file combine.c.

Referenced by rest_of_compilation(), and rest_of_handle_combine().

static enum rtx_code combine_reversed_comparison_code ( rtx  exp  )  [static]

static rtx combine_simplify_rtx ( rtx  x,
enum machine_mode  op0_mode,
int  last,
int  in_dest 
) [static]

Definition at line 3635 of file combine.c.

References abort, ABS, AND, apply_distributive_law(), cc0_rtx, COMPARE, cond, CONST, CONST0_RTX, const0_rtx, const1_rtx, CONST_DOUBLE_FROM_REAL_VALUE, CONSTANT_ADDRESS_P, CONSTANT_P, constm1_rtx, copy_rtx(), DIV, EQ, exact_log2, expand_compound_operation(), false_rtx, flag_unsafe_math_optimizations, FLOAT, FLOAT_MODE_P, FLOAT_STORE_FLAG_VALUE, force_to_mode(), GE, gen_binary(), gen_lowpart_common(), gen_lowpart_for_combine(), gen_rtx_CLOBBER, gen_rtx_fmt_ee(), gen_rtx_GE, gen_rtx_IF_THEN_ELSE, gen_rtx_NEG, gen_rtx_NOT, gen_rtx_PLUS, gen_rtx_ROTATE, gen_rtx_XOR, general_operand(), GET_CODE, get_last_value(), GET_MODE, GET_MODE_BITSIZE, GET_MODE_CLASS, GET_MODE_MASK, GET_MODE_SIZE, GET_RTX_CLASS, GT, HAVE_cc0, HONOR_SIGN_DEPENDENT_ROUNDING, HONOR_SIGNED_ZEROS, HOST_BITS_PER_WIDE_INT, HOST_WIDE_INT, i, if_then_else_cond(), in1, INTEGRAL_MODE_P, INTVAL, LE, len, LT, make_compound_operation(), MEM, MEM_VOLATILE_P, MINUS, mode, MODE_CC, mode_dependent_address_p(), MODE_FLOAT, MODE_INT, MODE_PARTIAL_INT, NE, nonzero_bits, NOT, NULL_RTX, num_sign_bit_copies, offset, pc_rtx, PLUS, plus_constant, REG, reverse_condition(), reversed_comparison(), ROTATE, rtx_equal_p(), SET, SHIFT_COUNT_TRUNCATED, SIGN_EXTEND, simplify_and_const_int(), simplify_binary_operation(), simplify_comparison(), simplify_gen_unary(), simplify_if_then_else(), simplify_logical(), simplify_relational_operation(), simplify_set(), simplify_shift_const(), simplify_subreg(), simplify_ternary_operation(), simplify_unary_operation(), STORE_FLAG_VALUE, SUBREG_BYTE, subreg_lowpart_offset(), subreg_lowpart_p(), SUBREG_REG, SUBST, subst(), swap_commutative_operands_p(), true_rtx, TRULY_NOOP_TRUNCATION, TRUNCATE, UNKNOWN, XEXP, XOR, XVECEXP, and XVECLEN.

Referenced by combine_simplify_rtx(), and subst().

static int contains_muldiv ( rtx  x  )  [static]

Definition at line 1435 of file combine.c.

References DIV, exact_log2, GET_CODE, GET_RTX_CLASS, INTVAL, MOD, and XEXP.

Referenced by contains_muldiv(), and try_combine().

static void distribute_links ( rtx  links  )  [static]

static void distribute_notes ( rtx  notes,
rtx  from_insn,
rtx  i3,
rtx  i2,
rtx  elim_i2,
rtx  elim_i1 
) [static]

static void do_SUBST ( rtx into,
rtx  newval 
) [static]

static void do_SUBST_INT ( int *  into,
int  newval 
) [static]

Definition at line 491 of file combine.c.

References buf, undo::i, undo::is_int, undo::next, undo::old_contents, undo::where, and xmalloc().

void dump_combine_stats ( FILE file  ) 

Definition at line 13178 of file combine.c.

void dump_combine_total_stats ( FILE file  ) 

Definition at line 13188 of file combine.c.

Referenced by compile_file(), and finish_optimization_passes().

static rtx expand_compound_operation ( rtx  x  )  [static]

static rtx expand_field_assignment ( rtx  x  )  [static]

unsigned int extended_count ( rtx  x,
enum machine_mode  mode,
int  unsignedp 
)

Definition at line 9077 of file combine.c.

static rtx extract_left_shift ( rtx  x,
int  count 
) [static]

static rtx* find_split_point ( rtx loc,
rtx  insn 
) [static]

static rtx force_to_mode ( rtx  x,
enum machine_mode  mode,
unsigned HOST_WIDE_INT  mask,
rtx  reg,
int  just_select 
) [static]

static rtx gen_binary ( enum rtx_code  code,
enum machine_mode  mode,
rtx  op0,
rtx  op1 
) [static]

static rtx gen_lowpart_for_combine ( enum machine_mode  mode,
rtx  x 
) [static]

static rtx get_last_value ( rtx  x  )  [static]

static int get_last_value_validate ( rtx loc,
rtx  insn,
int  tick,
int  replace 
) [static]

static int get_pos_from_mask ( unsigned HOST_WIDE_INT  m,
unsigned HOST_WIDE_INT *  plen 
) [static]

Definition at line 6797 of file combine.c.

References exact_log2, len, and pos().

Referenced by make_field_assignment().

static rtx if_then_else_cond ( rtx  x,
rtx ptrue,
rtx pfalse 
) [static]

static void init_reg_last_arrays (  )  [static]

static int insn_cuid ( rtx  insn  )  [static]

Definition at line 13164 of file combine.c.

References abort, GET_CODE, INSN_CUID, INSN_UID, max_uid_cuid, NEXT_INSN, PATTERN, and USE.

static rtx known_cond ( rtx  x,
enum rtx_code  cond,
rtx  reg,
rtx  val 
) [static]

static rtx make_compound_operation ( rtx  x,
enum rtx_code  in_code 
) [static]

static rtx make_extraction ( enum machine_mode  mode,
rtx  inner,
HOST_WIDE_INT  pos,
rtx  pos_rtx,
unsigned HOST_WIDE_INT  len,
int  unsignedp,
int  in_dest,
int  in_compare 
) [static]

static rtx make_field_assignment ( rtx  x  )  [static]

static void mark_used_regs_combine ( rtx  x  )  [static]

static int merge_outer_ops ( enum rtx_code pop0,
HOST_WIDE_INT *  pconst0,
enum rtx_code  op1,
HOST_WIDE_INT  const1,
enum machine_mode  mode,
int *  pcomp_p 
) [static]

Definition at line 9115 of file combine.c.

References AND, GET_MODE_MASK, HOST_WIDE_INT, NIL, PLUS, SET, trunc_int_for_mode(), and XOR.

Referenced by simplify_shift_const(), and simplify_shift_const_1().

static void move_deaths ( rtx  x,
rtx  maybe_kill_insn,
int  from_cuid,
rtx  to_insn,
rtx pnotes 
) [static]

static unsigned HOST_WIDE_INT nonzero_bits1 ( rtx  x,
enum machine_mode  mode,
rtx  known_x,
enum machine_mode  known_mode,
unsigned HOST_WIDE_INT  known_ret 
) [static]

static unsigned int num_sign_bit_copies1 ( rtx  x,
enum machine_mode  mode,
rtx  known_x,
enum machine_mode  known_mode,
unsigned int  known_ret 
) [static]

static rtx reversed_comparison PARAMS ( (rtx, enum machine_mode, rtx, rtx  )  [static]

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

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

static int get_last_value_validate PARAMS ( (rtx *, rtx, int, int)   )  [static]

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

static enum rtx_code simplify_comparison PARAMS ( (enum rtx_code, rtx *, rtx *)   )  [static]

static rtx gen_binary PARAMS ( (enum rtx_code, enum machine_mode, rtx, rtx  )  [static]

static rtx gen_lowpart_for_combine PARAMS ( (enum machine_mode, rtx  )  [static]

static int recog_for_combine PARAMS ( (rtx *, rtx, rtx *)   )  [static]

static rtx simplify_shift_const PARAMS ( (rtx, enum rtx_code, enum machine_mode, rtx, int)   )  [static]

static int merge_outer_ops PARAMS ( (enum rtx_code *, HOST_WIDE_INT *, enum rtx_code, HOST_WIDE_INT, enum machine_mode, int *)   )  [static]

static unsigned int cached_num_sign_bit_copies PARAMS ( (rtx, enum machine_mode, rtx, enum machine_mode, unsigned int)   )  [static]

static unsigned HOST_WIDE_INT cached_nonzero_bits PARAMS ( (rtx, enum machine_mode, rtx, enum machine_mode, unsigned HOST_WIDE_INT)   )  [static]

static rtx simplify_and_const_int PARAMS ( (rtx, enum machine_mode, rtx, unsigned HOST_WIDE_INT)   )  [static]

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

static rtx known_cond PARAMS ( (rtx, enum rtx_code, rtx, rtx  )  [static]

static rtx if_then_else_cond PARAMS ( (rtx, rtx *, rtx *)   )  [static]

static rtx force_to_mode PARAMS ( (rtx, enum machine_mode, unsigned HOST_WIDE_INT, rtx, int)   )  [static]

static int get_pos_from_mask PARAMS ( (unsigned HOST_WIDE_INT, unsigned HOST_WIDE_INT *)   )  [static]

static rtx make_compound_operation PARAMS ( (rtx, enum rtx_code  )  [static]

static rtx make_extraction PARAMS ( (enum machine_mode, rtx, HOST_WIDE_INT, rtx, unsigned HOST_WIDE_INT, int, int, int)   )  [static]

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

static rtx combine_simplify_rtx PARAMS ( (rtx, enum machine_mode, int, int)   )  [static]

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

static rtx try_combine PARAMS ( (rtx, rtx, rtx, int *)   )  [static]

static int combinable_i3pat PARAMS ( (rtx, rtx *, rtx, rtx, int, rtx *)   )  [static]

static int can_combine_p PARAMS ( (rtx, rtx, rtx, rtx, rtx *, rtx *)   )  [static]

static int cant_combine_insn_p PARAMS ( (rtx  )  [static]

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

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

Definition at line 77 of file cplus-dem.c.

static void do_SUBST_INT PARAMS ( (int *, int)   )  [static]

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

static int recog_for_combine ( rtx pnewpat,
rtx  insn,
rtx pnotes 
) [static]

static void record_dead_and_set_regs ( rtx  insn  )  [static]

static void record_dead_and_set_regs_1 ( rtx  dest,
rtx  setter,
void data 
) [static]

static void record_promoted_value ( rtx  insn,
rtx  subreg 
) [static]

static void record_value_for_reg ( rtx  reg,
rtx  insn,
rtx  value 
) [static]

static int reg_bitfield_target_p ( rtx  x,
rtx  body 
) [static]

static int reg_dead_at_p ( rtx  reg,
rtx  insn 
) [static]

static void reg_dead_at_p_1 ( rtx  dest,
rtx  x,
data   
) [static]

Definition at line 12056 of file combine.c.

References FIRST_PSEUDO_REGISTER, GET_CODE, GET_MODE, HARD_REGNO_NREGS, REG, and REGNO.

Referenced by reg_dead_at_p().

rtx remove_death ( unsigned int  regno,
rtx  insn 
)

Definition at line 12250 of file combine.c.

Referenced by fixup_match_2(), move_deaths(), and update_equiv_regs().

static rtx reversed_comparison ( rtx  exp,
enum machine_mode  mode,
rtx  op0,
rtx  op1 
) [static]

static int rtx_equal_for_field_assignment_p ( rtx  x,
rtx  y 
) [static]

Definition at line 7741 of file combine.c.

References gen_lowpart_for_combine(), GET_CODE, GET_MODE, MEM, rtx_equal_p(), and SUBREG_REG.

Referenced by make_field_assignment().

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

static int sets_function_arg_p ( rtx  pat  )  [static]

Definition at line 1245 of file combine.c.

References FIRST_PSEUDO_REGISTER, FUNCTION_ARG_REGNO_P, GET_CODE, i, PATTERN, REG, REGNO, SET, SET_DEST, XEXP, XVECEXP, and XVECLEN.

Referenced by sets_function_arg_p().

static void setup_incoming_promotions ( void   )  [static]

static rtx simplify_and_const_int ( rtx  x,
enum machine_mode  mode,
rtx  varop,
unsigned HOST_WIDE_INT  constop 
) [static]

static enum rtx_code simplify_comparison ( enum rtx_code  code,
rtx pop0,
rtx pop1 
) [static]

static rtx simplify_if_then_else ( rtx  x  )  [static]

static rtx simplify_logical ( rtx  x,
int  last 
) [static]

static rtx simplify_set ( rtx  x  )  [static]

static rtx simplify_shift_const ( rtx  x,
enum rtx_code  code,
enum machine_mode  result_mode,
rtx  varop,
int  orig_count 
) [static]

static rtx subst ( rtx  x,
rtx  from,
rtx  to,
int  in_dest,
int  unique_copy 
) [static]

static rtx try_combine ( rtx  i3,
rtx  i2,
rtx  i1,
int *  new_direct_jump_p 
) [static]

Definition at line 1522 of file combine.c.

References abort, added_links_insn, any_uncondjump_p(), asm_noperands(), BITS_PER_WORD, BLOCK_FOR_INSN, CALL_INSN_FUNCTION_USAGE, can_combine_p(), cant_combine_insn_p(), cc0_rtx, check_asm_operands(), CLEAR_HARD_REG_SET, combinable_i3pat(), combine_attempts, combine_extras, combine_merges, combine_successes, COMPARE, const0_rtx, CONST_DOUBLE_HIGH, CONST_DOUBLE_LOW, contains_muldiv(), copy_rtx(), copy_rtx_if_shared(), dead_or_set_p(), distribute_links(), distribute_notes(), emit_barrier_after(), exact_log2, EXIT_BLOCK_PTR, FIND_REG_INC_NOTE, find_reg_note(), find_single_use(), find_split_point(), FIRST_PSEUDO_REGISTER, flag_expensive_optimizations, GEN_INT, gen_lowpart_for_combine(), gen_rtvec(), gen_rtx_ASHIFT, gen_rtx_CLOBBER, gen_rtx_COMPARE, gen_rtx_EXPR_LIST, gen_rtx_INSN, gen_rtx_INSN_LIST, gen_rtx_PARALLEL, gen_rtx_REG(), gen_rtx_SET, gen_rtx_SIGN_EXTEND, gen_rtx_ZERO_EXTEND, GET_CODE, GET_MODE, GET_MODE_BITSIZE, GET_MODE_CLASS, GET_MODE_MASK, GET_MODE_SIZE, HAVE_cc0, basic_block_def::head, HOST_BITS_PER_INT, HOST_BITS_PER_WIDE_INT, HOST_WIDE_INT, i, immed_double_const(), insn, INSN_CODE, insn_code_number, INSN_CUID, INSN_P, INSN_SCOPE, INSN_UID, int, INTVAL, lo, LOAD_EXTEND_OP, LOG_LINKS, mark_used_regs_combine(), max_reg_num(), MEM, memcpy, MODE_CC, MODE_INT, move_deaths(), n_occurrences, newpat_used_regs, next, basic_block_def::next_bb, NEXT_INSN, next_nonnote_insn(), next_real_insn(), NOTE_INSN_DELETED, NOTE_LINE_NUMBER, NOTE_SOURCE_FILE, note_stores(), NULL, NULL_RTX, p, p2, PATTERN, pc_rtx, prev_nonnote_insn(), PUT_CODE, recog_for_combine(), record_value_for_reg(), REG, REG_DEAD, REG_INC, REG_LIBCALL, reg_mentioned_p(), REG_N_DEATHS, REG_N_SETS, reg_nonzero_bits, REG_NOTE_KIND, REG_NOTES, reg_overlap_mentioned_p(), reg_referenced_p(), reg_set_p(), REG_UNUSED, reg_used_between_p(), REG_USERVAR_P, REGNO, regno_reg_rtx, remove_note(), replace_rtx(), reset_used_flags(), returnjump_p(), rtvec_alloc(), rtx_equal_p(), SELECT_CC_MODE, SET, SET_DEST, set_nonzero_bits_and_sign_copies(), SET_SRC, sets_cc0_p(), side_effects_p(), SIGN_EXTEND, single_set, split, split_insns(), subreg_lowpart_p(), SUBREG_REG, SUBST, subst(), subst_insn, subst_low_cuid, subst_prev_insn, undo_all(), undo_commit(), UNITS_PER_WORD, USE, use_crosses_set_p(), UWIDE_SHIFT_LEFT_BY_BITS_PER_WORD, word_mode, XEXP, XVEC, XVECEXP, and XVECLEN.

Referenced by combine_instructions().

static void undo_all ( void   )  [static]

Definition at line 2896 of file combine.c.

References undo::i, undo::is_int, undo::next, next, NULL_RTX, undo::old_contents, undo::r, subst_prev_insn, and undo::where.

Referenced by try_combine().

static void undo_commit ( void   )  [static]

Definition at line 2923 of file combine.c.

References undo::next, and next.

Referenced by try_combine().

static void update_table_tick ( rtx  x  )  [static]

static int use_crosses_set_p ( rtx  x,
int  from_cuid 
) [static]


Variable Documentation

Definition at line 199 of file combine.c.

Referenced by distribute_links(), and try_combine().

int combine_attempts [static]

Definition at line 100 of file combine.c.

Referenced by combine_instructions(), dump_combine_stats(), and try_combine().

int combine_extras [static]

Definition at line 108 of file combine.c.

Referenced by combine_instructions(), dump_combine_stats(), and try_combine().

unsigned int combine_max_regno [static]

Definition at line 148 of file combine.c.

Referenced by combine_instructions(), init_reg_last(), and init_reg_last_arrays().

int combine_merges [static]

Definition at line 104 of file combine.c.

Referenced by combine_instructions(), dump_combine_stats(), and try_combine().

int combine_successes [static]

Definition at line 112 of file combine.c.

Referenced by combine_instructions(), dump_combine_stats(), and try_combine().

int label_tick [static]

int last_call_cuid [static]

Definition at line 166 of file combine.c.

Referenced by can_combine_p(), combine_instructions(), and record_dead_and_set_regs().

int max_uid_cuid [static]

Definition at line 127 of file combine.c.

Referenced by combine_instructions(), distribute_notes(), insn_cuid(), and move_deaths().

int mem_last_set [static]

int n_occurrences [static]

int need_refresh [static]

Definition at line 208 of file combine.c.

Referenced by combine_instructions(), copyprop_hardreg_forward(), and distribute_notes().

HARD_REG_SET newpat_used_regs [static]

Definition at line 193 of file combine.c.

Referenced by mark_used_regs_combine(), reg_dead_at_p(), and try_combine().

int nonzero_sign_valid [static]

Definition at line 207 of file combine.c.

Referenced by combine_instructions(), and distribute_notes().

unsigned int reg_dead_endregno [static]

Definition at line 12047 of file combine.c.

Referenced by reg_dead_at_p(), and reg_dead_at_p_1().

int reg_dead_flag [static]

Definition at line 12048 of file combine.c.

Referenced by reg_dead_at_p(), and reg_dead_at_p_1().

unsigned int reg_dead_regno [static]

Definition at line 12047 of file combine.c.

Referenced by reg_dead_at_p(), and reg_dead_at_p_1().

rtx* reg_last_death [static]

rtx* reg_last_set [static]

char* reg_last_set_invalid [static]

int* reg_last_set_label [static]

int* reg_last_set_table_tick [static]

unsigned HOST_WIDE_INT* reg_nonzero_bits [static]

unsigned char* reg_sign_bit_copies [static]

rtx subst_insn [static]

Definition at line 174 of file combine.c.

Referenced by combine_instructions(), find_split_point(), simplify_set(), and try_combine().

int subst_low_cuid [static]

rtx subst_prev_insn [static]

Definition at line 179 of file combine.c.

Referenced by combine_instructions(), try_combine(), and undo_all().

Definition at line 202 of file combine.c.

Referenced by combine_instructions(), distribute_links(), distribute_notes(), and try_combine().

int total_attempts [static]

Definition at line 116 of file combine.c.

Referenced by combine_instructions(), and dump_combine_total_stats().

int total_extras [static]

Definition at line 116 of file combine.c.

Referenced by combine_instructions(), and dump_combine_total_stats().

int total_merges [static]

Definition at line 116 of file combine.c.

Referenced by combine_instructions(), and dump_combine_total_stats().

int total_successes [static]

Definition at line 116 of file combine.c.

Referenced by combine_instructions(), and dump_combine_total_stats().

int* uid_cuid [static]

Definition at line 340 of file combine.c.


Generated on Wed Apr 8 15:13:49 2009 for Open64 by  doxygen 1.5.6