osprey-gcc-4.2.0/gcc/expr.c File Reference

#include "config.h"
#include "system.h"
#include "coretypes.h"
#include "tm.h"
#include "machmode.h"
#include "real.h"
#include "rtl.h"
#include "tree.h"
#include "flags.h"
#include "regs.h"
#include "hard-reg-set.h"
#include "except.h"
#include "function.h"
#include "insn-config.h"
#include "insn-attr.h"
#include "expr.h"
#include "optabs.h"
#include "libfuncs.h"
#include "recog.h"
#include "reload.h"
#include "output.h"
#include "typeclass.h"
#include "toplev.h"
#include "ggc.h"
#include "langhooks.h"
#include "intl.h"
#include "tm_p.h"
#include "tree-iterator.h"
#include "tree-pass.h"
#include "tree-flow.h"
#include "target.h"
#include "timevar.h"
#include "gt-expr.h"

Include dependency graph for expr.c:

Go to the source code of this file.

Data Types

type  move_by_pieces
type  store_by_pieces

Defines

#define STACK_PUSH_CODE   PRE_INC
#define MOVE_BY_PIECES_P(SIZE, ALIGN)
#define CLEAR_BY_PIECES_P(SIZE, ALIGN)
#define STORE_BY_PIECES_P(SIZE, ALIGN)
#define SLOW_UNALIGNED_ACCESS(MODE, ALIGN)   STRICT_ALIGNMENT
#define STORE_MAX_PIECES   MIN (MOVE_MAX_PIECES, 2 * sizeof (HOST_WIDE_INT))
#define REDUCE_BIT_FIELD(expr)
#define HAVE_casesi   0
#define gen_casesi(a, b, c, d, e)   (0)
#define CODE_FOR_casesi   CODE_FOR_nothing
#define CASE_VALUES_THRESHOLD   (HAVE_casesi ? 4 : 5)
#define HAVE_tablejump   0
#define gen_tablejump(x, y)   (0)

Functions/Subroutines

static unsigned HOST_WIDE_INT move_by_pieces_ninsns (unsigned HOST_WIDE_INT, unsigned int, unsigned int)
static void move_by_pieces_1 (rtx(*)(rtx,...), enum machine_mode, struct move_by_pieces *)
static bool block_move_libcall_safe_for_call_parm (void)
static bool emit_block_move_via_movmem (rtx, rtx, rtx, unsigned)
static rtx emit_block_move_via_libcall (rtx, rtx, rtx, bool)
static tree emit_block_move_libcall_fn (int)
static void emit_block_move_via_loop (rtx, rtx, rtx, unsigned)
static rtx clear_by_pieces_1 (void *, HOST_WIDE_INT, enum machine_mode)
static void clear_by_pieces (rtx, unsigned HOST_WIDE_INT, unsigned int)
static void store_by_pieces_1 (struct store_by_pieces *, unsigned int)
static void store_by_pieces_2 (rtx(*)(rtx,...), enum machine_mode, struct store_by_pieces *)
static rtx clear_storage_via_libcall (rtx, rtx, bool)
static tree clear_storage_libcall_fn (int)
static rtx compress_float_constant (rtx, rtx)
static rtx get_subtarget (rtx)
static void store_constructor_field (rtx, unsigned HOST_WIDE_INT, HOST_WIDE_INT, enum machine_mode, tree, tree, int, int)
static void store_constructor (tree, rtx, int, HOST_WIDE_INT)
static rtx store_field (rtx, HOST_WIDE_INT, HOST_WIDE_INT, enum machine_mode, tree, tree, int)
static unsigned HOST_WIDE_INT highest_pow2_factor_for_target (tree, tree)
static int is_aligning_offset (tree, tree)
static void expand_operands (tree, tree, rtx, rtx *, rtx *, enum expand_modifier)
static rtx reduce_to_bit_field_precision (rtx, rtx, tree)
static rtx do_store_flag (tree, rtx, enum machine_mode, int)
static void do_tablejump (rtx, enum machine_mode, rtx, rtx, rtx)
static rtx const_vector_from_tree (tree)
static void write_complex_part (rtx, rtx, bool)
void init_expr_once (void)
void init_expr (void)
void convert_move (rtx to, rtx from, int unsignedp)
rtx convert_to_mode (enum machine_mode mode, rtx x, int unsignedp)
rtx convert_modes (enum machine_mode mode, enum machine_mode oldmode, rtx x, int unsignedp)
int can_move_by_pieces (unsigned HOST_WIDE_INT len, unsigned int align ATTRIBUTE_UNUSED)
rtx move_by_pieces (rtx to, rtx from, unsigned HOST_WIDE_INT len, unsigned int align, int endp)
rtx emit_block_move (rtx x, rtx y, rtx size, enum block_op_methods method)
static bool emit_block_move_via_movmem (rtx x, rtx y, rtx size, unsigned int align)
static GTY (())
static void emit_block_move_via_loop (rtx x, rtx y, rtx size, unsigned int align ATTRIBUTE_UNUSED)
void move_block_to_reg (int regno, rtx x, int nregs, enum machine_mode mode)
void move_block_from_reg (int regno, rtx x, int nregs)
rtx gen_group_rtx (rtx orig)
static void emit_group_load_1 (rtx *tmps, rtx dst, rtx orig_src, tree type, int ssize)
void emit_group_load (rtx dst, rtx src, tree type, int ssize)
rtx emit_group_load_into_temps (rtx parallel, rtx src, tree type, int ssize)
void emit_group_move (rtx dst, rtx src)
rtx emit_group_move_into_temps (rtx src)
void emit_group_store (rtx orig_dst, rtx src, tree type ATTRIBUTE_UNUSED, int ssize)
rtx copy_blkmode_from_reg (rtx tgtblk, rtx srcreg, tree type)
void use_reg (rtx *call_fusage, rtx reg)
void use_regs (rtx *call_fusage, int regno, int nregs)
void use_group_regs (rtx *call_fusage, rtx regs)
int can_store_by_pieces (unsigned HOST_WIDE_INT len, rtx(*constfun)(void *, HOST_WIDE_INT, enum machine_mode), void *constfundata, unsigned int align)
rtx store_by_pieces (rtx to, unsigned HOST_WIDE_INT len, rtx(*constfun)(void *, HOST_WIDE_INT, enum machine_mode), void *constfundata, unsigned int align, int endp)
static rtx clear_by_pieces_1 (void *data ATTRIBUTE_UNUSED, HOST_WIDE_INT offset ATTRIBUTE_UNUSED, enum machine_mode mode ATTRIBUTE_UNUSED)
static void store_by_pieces_1 (struct store_by_pieces *data ATTRIBUTE_UNUSED, unsigned int align ATTRIBUTE_UNUSED)
rtx clear_storage (rtx object, rtx size, enum block_op_methods method)
bool set_storage_via_setmem (rtx object, rtx size, rtx val, unsigned int align)
static rtx read_complex_part (rtx cplx, bool imag_p)
static rtx emit_move_change_mode (enum machine_mode new_mode, enum machine_mode old_mode, rtx x, bool force)
static rtx emit_move_via_integer (enum machine_mode mode, rtx x, rtx y, bool force)
static rtx emit_move_resolve_push (enum machine_mode mode, rtx x)
static rtx emit_move_complex_push (enum machine_mode mode, rtx x, rtx y)
static rtx emit_move_complex (enum machine_mode mode, rtx x, rtx y)
static rtx emit_move_ccmode (enum machine_mode mode, rtx x, rtx y)
static bool undefined_operand_subword_p (rtx op, int i)
static rtx emit_move_multi_word (enum machine_mode mode, rtx x, rtx y)
rtx emit_move_insn_1 (rtx x, rtx y)
rtx emit_move_insn (rtx x, rtx y)
rtx push_block (rtx size, int extra, int below)
void emit_push_insn (rtx x, enum machine_mode mode, tree type, rtx size, unsigned int align, int partial, rtx reg, int extra, rtx args_addr, rtx args_so_far, int reg_parm_stack_space, rtx alignment_pad)
static bool optimize_bitfield_assignment_op (unsigned HOST_WIDE_INT bitsize, unsigned HOST_WIDE_INT bitpos, enum machine_mode mode1, rtx str_rtx, tree to, tree src)
void expand_assignment (tree to, tree from)
rtx store_expr (tree exp, rtx target, int call_param_p)
static bool categorize_ctor_elements_1 (tree ctor, HOST_WIDE_INT *p_nz_elts, HOST_WIDE_INT *p_elt_count, bool *p_must_clear)
bool categorize_ctor_elements (tree ctor, HOST_WIDE_INT *p_nz_elts, HOST_WIDE_INT *p_elt_count, bool *p_must_clear)
HOST_WIDE_INT count_type_elements (tree type, bool allow_flexarr)
static int mostly_zeros_p (tree exp)
static int all_zeros_p (tree exp)
tree get_inner_reference (tree exp, HOST_WIDE_INT *pbitsize, HOST_WIDE_INT *pbitpos, tree *poffset, enum machine_mode *pmode, int *punsignedp, int *pvolatilep, bool keep_aligning)
tree array_ref_element_size (tree exp)
tree array_ref_low_bound (tree exp)
tree array_ref_up_bound (tree exp)
tree component_ref_field_offset (tree exp)
int handled_component_p (tree t)
rtx force_operand (rtx value, rtx target)
int safe_from_p (rtx x, tree exp, int top_p)
unsigned HOST_WIDE_INT highest_pow2_factor (tree exp)
void expand_var (tree var)
static rtx expand_expr_constant (tree exp, int defer, enum expand_modifier modifier)
static rtx expand_expr_addr_expr_1 (tree exp, rtx target, enum machine_mode tmode, enum expand_modifier modifier)
static rtx expand_expr_addr_expr (tree exp, rtx target, enum machine_mode tmode, enum expand_modifier modifier)
static rtx expand_expr_real_1 (tree, rtx, enum machine_mode, enum expand_modifier, rtx *)
rtx expand_expr_real (tree exp, rtx target, enum machine_mode tmode, enum expand_modifier modifier, rtx *alt_rtl)
tree string_constant (tree arg, tree *ptr_offset)
unsigned int case_values_threshold (void)
int try_casesi (tree index_type, tree index_expr, tree minval, tree range, rtx table_label ATTRIBUTE_UNUSED, rtx default_label)
int try_tablejump (tree index_type, tree index_expr, tree minval, tree range, rtx table_label, rtx default_label)
int vector_mode_valid_p (enum machine_mode mode)

Variables

int cse_not_expected
static char direct_load [NUM_MACHINE_MODES]
static char direct_store [NUM_MACHINE_MODES]
static bool float_extend_from_mem [NUM_MACHINE_MODES][NUM_MACHINE_MODES]
enum insn_code movmem_optab [NUM_MACHINE_MODES]
enum insn_code setmem_optab [NUM_MACHINE_MODES]
enum insn_code cmpstr_optab [NUM_MACHINE_MODES]
enum insn_code cmpstrn_optab [NUM_MACHINE_MODES]
enum insn_code cmpmem_optab [NUM_MACHINE_MODES]
enum insn_code sync_add_optab [NUM_MACHINE_MODES]
enum insn_code sync_sub_optab [NUM_MACHINE_MODES]
enum insn_code sync_ior_optab [NUM_MACHINE_MODES]
enum insn_code sync_and_optab [NUM_MACHINE_MODES]
enum insn_code sync_xor_optab [NUM_MACHINE_MODES]
enum insn_code sync_nand_optab [NUM_MACHINE_MODES]
enum insn_code sync_old_add_optab [NUM_MACHINE_MODES]
enum insn_code sync_old_sub_optab [NUM_MACHINE_MODES]
enum insn_code sync_old_ior_optab [NUM_MACHINE_MODES]
enum insn_code sync_old_and_optab [NUM_MACHINE_MODES]
enum insn_code sync_old_xor_optab [NUM_MACHINE_MODES]
enum insn_code sync_old_nand_optab [NUM_MACHINE_MODES]
enum insn_code sync_new_add_optab [NUM_MACHINE_MODES]
enum insn_code sync_new_sub_optab [NUM_MACHINE_MODES]
enum insn_code sync_new_ior_optab [NUM_MACHINE_MODES]
enum insn_code sync_new_and_optab [NUM_MACHINE_MODES]
enum insn_code sync_new_xor_optab [NUM_MACHINE_MODES]
enum insn_code sync_new_nand_optab [NUM_MACHINE_MODES]
enum insn_code sync_compare_and_swap [NUM_MACHINE_MODES]
enum insn_code sync_compare_and_swap_cc [NUM_MACHINE_MODES]
enum insn_code sync_lock_test_and_set [NUM_MACHINE_MODES]
enum insn_code sync_lock_release [NUM_MACHINE_MODES]


Define Documentation

#define CASE_VALUES_THRESHOLD   (HAVE_casesi ? 4 : 5)

Definition at line 9221 of file expr.c.

#define CLEAR_BY_PIECES_P ( SIZE,
ALIGN   ) 

Value:

Definition at line 185 of file expr.c.

#define CODE_FOR_casesi   CODE_FOR_nothing

Definition at line 9214 of file expr.c.

#define gen_casesi ( a,
b,
c,
d,
 )     (0)

Definition at line 9213 of file expr.c.

#define gen_tablejump ( x,
 )     (0)

Definition at line 9304 of file expr.c.

#define HAVE_casesi   0

Definition at line 9212 of file expr.c.

#define HAVE_tablejump   0

Definition at line 9303 of file expr.c.

#define MOVE_BY_PIECES_P ( SIZE,
ALIGN   ) 

Value:

Definition at line 177 of file expr.c.

#define REDUCE_BIT_FIELD ( expr   ) 

Value:

(reduce_bit_field && !ignore      \
         ? reduce_to_bit_field_precision ((expr), \
                  target, \
                  type)   \
         : (expr))

#define SLOW_UNALIGNED_ACCESS ( MODE,
ALIGN   )     STRICT_ALIGNMENT

Definition at line 238 of file expr.c.

#define STACK_PUSH_CODE   PRE_INC

Definition at line 77 of file expr.c.

#define STORE_BY_PIECES_P ( SIZE,
ALIGN   ) 

Value:

Definition at line 194 of file expr.c.

#define STORE_MAX_PIECES   MIN (MOVE_MAX_PIECES, 2 * sizeof (HOST_WIDE_INT))

Definition at line 843 of file expr.c.


Function Documentation

static int all_zeros_p ( tree  exp  )  [static]

Definition at line 4812 of file expr.c.

References categorize_ctor_elements(), count, HOST_WIDE_INT, initializer_zerop(), and TREE_CODE.

Referenced by expand_expr_real_1().

tree array_ref_element_size ( tree  exp  ) 

tree array_ref_low_bound ( tree  exp  ) 

tree array_ref_up_bound ( tree  exp  ) 

static bool block_move_libcall_safe_for_call_parm ( void   )  [static]

int can_move_by_pieces ( unsigned HOST_WIDE_INT  len,
unsigned int align  ATTRIBUTE_UNUSED 
)

Definition at line 850 of file expr.c.

References align, and MOVE_BY_PIECES_P.

int can_store_by_pieces ( unsigned HOST_WIDE_INT  len,
rtx(*)(void *, HOST_WIDE_INT, enum machine_mode constfun,
void constfundata,
unsigned int  align 
)

unsigned int case_values_threshold ( void   ) 

Definition at line 9225 of file expr.c.

References CASE_VALUES_THRESHOLD.

bool categorize_ctor_elements ( tree  ctor,
HOST_WIDE_INT *  p_nz_elts,
HOST_WIDE_INT *  p_elt_count,
bool p_must_clear 
)

Definition at line 4683 of file expr.c.

References categorize_ctor_elements_1().

static bool categorize_ctor_elements_1 ( tree  ctor,
HOST_WIDE_INT *  p_nz_elts,
HOST_WIDE_INT *  p_elt_count,
bool p_must_clear 
) [static]

static void clear_by_pieces ( rtx  to,
unsigned HOST_WIDE_INT  len,
unsigned int  align 
) [static]

static rtx clear_by_pieces_1 ( void *data  ATTRIBUTE_UNUSED,
HOST_WIDE_INT offset  ATTRIBUTE_UNUSED,
enum machine_mode mode  ATTRIBUTE_UNUSED 
) [static]

Definition at line 2353 of file expr.c.

References const0_rtx.

static rtx clear_by_pieces_1 ( void ,
HOST_WIDE_INT  ,
enum  machine_mode 
) [static]

rtx clear_storage ( rtx  object,
rtx  size,
enum block_op_methods  method 
)

static tree clear_storage_libcall_fn ( int  for_call  )  [static]

Definition at line 2627 of file expr.c.

References assemble_external(), init_block_clear_fn(), make_decl_rtl(), and NULL.

static rtx clear_storage_via_libcall ( rtx  object,
rtx  size,
bool  tailcall 
) [static]

tree component_ref_field_offset ( tree  exp  ) 

static rtx compress_float_constant ( rtx  x,
rtx  y 
) [static]

static rtx const_vector_from_tree ( tree  exp  )  [static]

rtx convert_modes ( enum machine_mode  mode,
enum machine_mode  oldmode,
rtx  x,
int  unsignedp 
)

void convert_move ( rtx  to,
rtx  from,
int  unsignedp 
)

Definition at line 349 of file expr.c.

References abort, BITS_PER_WORD, build_int_2, build_int_cst(), can_extend_p(), CEIL, CODE_FOR_nothing, CODE_FOR_slt, CODE_FOR_truncdfsf2, CODE_FOR_truncdihi2, CODE_FOR_truncdiqi2, CODE_FOR_truncdisi2, CODE_FOR_trunctfdf2, CODE_FOR_trunctfsf2, CODE_FOR_truncxfdf2, CODE_FOR_truncxfsf2, CONCAT, const0_rtx, CONSTANT_P, convert_move(), convert_to_mode(), copy_rtx(), copy_to_reg(), DECIMAL_FLOAT_MODE_P, direct_load, emit_cmp_insn(), emit_insn(), emit_libcall_block(), emit_library_call_value(), emit_move_insn(), emit_no_conflict_block(), emit_unop_insn(), end_sequence(), expand_shift(), extenddftf2_libfunc, extenddfxf2_libfunc, extendsfdf2_libfunc, extendsftf2_libfunc, extendsfxf2_libfunc, FIRST_PSEUDO_REGISTER, flag_force_mem, force_not_mem(), force_reg(), gcc_assert, gcc_unreachable, gen_lowpart, gen_reg_rtx(), gen_rtx_CLOBBER, gen_rtx_FLOAT_EXTEND, gen_rtx_FLOAT_TRUNCATE, gen_rtx_fmt_e(), gen_slt(), GET_CODE, get_insns(), GET_MODE, GET_MODE_BITSIZE, GET_MODE_CLASS, GET_MODE_PRECISION, GET_MODE_SIZE, GET_MODE_WIDER_MODE, HARD_REGNO_MODE_OK, HAVE_slt, HAVE_truncdfsf2, HAVE_truncdihi2, HAVE_truncdiqi2, HAVE_truncdisi2, HAVE_trunctfdf2, HAVE_trunctfsf2, HAVE_truncxfdf2, HAVE_truncxfsf2, i, index(), insns, LCT_CONST, MEM, MEM_P, MEM_VOLATILE_P, mode, mode_dependent_address_p(), MODE_FLOAT, MODE_INT, MODE_PARTIAL_INT, NE, NULL_RTX, NULL_TREE, operand_subword(), optimize, protect_from_queue(), REG, reg_overlap_mentioned_p(), REG_P, REGNO, SCALAR_FLOAT_MODE_P, sext_optab, SIGN_EXTEND, simplify_gen_subreg(), size_int, smallest_mode_for_size(), start_sequence(), STORE_FLAG_VALUE, SUBREG_PROMOTED_UNSIGNED_P, SUBREG_PROMOTED_VAR_P, SUBREG_REG, tab, tmp, TRULY_NOOP_TRUNCATION, trunc_optab, truncdfsf2_libfunc, trunctfdf2_libfunc, trunctfsf2_libfunc, truncxfdf2_libfunc, truncxfsf2_libfunc, UNITS_PER_WORD, UNKNOWN, VECTOR_MODE_P, word_mode, WORDS_BIG_ENDIAN, and XEXP.

rtx convert_to_mode ( enum machine_mode  mode,
rtx  x,
int  unsignedp 
)

Definition at line 726 of file expr.c.

References convert_modes().

rtx copy_blkmode_from_reg ( rtx  tgtblk,
rtx  srcreg,
tree  type 
)

HOST_WIDE_INT count_type_elements ( tree  type,
bool  allow_flexarr 
)

static rtx do_store_flag ( tree  exp,
rtx  target,
enum machine_mode  mode,
int  only_cheap 
) [static]

static void do_tablejump ( rtx  index,
enum machine_mode  mode,
rtx  range,
rtx  table_label,
rtx  default_label 
) [static]

rtx emit_block_move ( rtx  x,
rtx  y,
rtx  size,
enum block_op_methods  method 
)

static tree emit_block_move_libcall_fn ( int  for_call  )  [static]

Definition at line 1423 of file expr.c.

References assemble_external(), init_block_move_fn(), make_decl_rtl(), and NULL.

static rtx emit_block_move_via_libcall ( rtx  dst,
rtx  src,
rtx  size,
bool  tailcall 
) [static]

static void emit_block_move_via_loop ( rtx  x,
rtx  y,
rtx  size,
unsigned int align  ATTRIBUTE_UNUSED 
) [static]

static void emit_block_move_via_loop ( rtx  ,
rtx  ,
rtx  ,
unsigned   
) [static]

static bool emit_block_move_via_movmem ( rtx  x,
rtx  y,
rtx  size,
unsigned int  align 
) [static]

static bool emit_block_move_via_movmem ( rtx  ,
rtx  ,
rtx  ,
unsigned   
) [static]

void emit_group_load ( rtx  dst,
rtx  src,
tree  type,
int  ssize 
)

Definition at line 1763 of file expr.c.

References alloca, d, emit_group_load_1(), emit_move_insn(), i, NULL, XEXP, XVECEXP, and XVECLEN.

static void emit_group_load_1 ( rtx tmps,
rtx  dst,
rtx  orig_src,
tree  type,
int  ssize 
) [static]

rtx emit_group_load_into_temps ( rtx  parallel,
rtx  src,
tree  type,
int  ssize 
)

void emit_group_move ( rtx  dst,
rtx  src 
)

Definition at line 1816 of file expr.c.

References abort, emit_move_insn(), gcc_assert, GET_CODE, i, XEXP, XVECEXP, and XVECLEN.

rtx emit_group_move_into_temps ( rtx  src  ) 

void emit_group_store ( rtx  orig_dst,
rtx  src,
tree type  ATTRIBUTE_UNUSED,
int  ssize 
)

static rtx emit_move_ccmode ( enum machine_mode  mode,
rtx  x,
rtx  y 
) [static]

static rtx emit_move_change_mode ( enum machine_mode  new_mode,
enum machine_mode  old_mode,
rtx  x,
bool  force 
) [static]

static rtx emit_move_complex ( enum machine_mode  mode,
rtx  x,
rtx  y 
) [static]

static rtx emit_move_complex_push ( enum machine_mode  mode,
rtx  x,
rtx  y 
) [static]

rtx emit_move_insn ( rtx  x,
rtx  y 
)

rtx emit_move_insn_1 ( rtx  x,
rtx  y 
)

static rtx emit_move_multi_word ( enum machine_mode  mode,
rtx  x,
rtx  y 
) [static]

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

static rtx emit_move_via_integer ( enum machine_mode  mode,
rtx  x,
rtx  y,
bool  force 
) [static]

void emit_push_insn ( rtx  x,
enum machine_mode  mode,
tree  type,
rtx  size,
unsigned int  align,
int  partial,
rtx  reg,
int  extra,
rtx  args_addr,
rtx  args_so_far,
int  reg_parm_stack_space,
rtx  alignment_pad 
)

void expand_assignment ( tree  to,
tree  from 
)

static rtx expand_expr_addr_expr ( tree  exp,
rtx  target,
enum machine_mode  tmode,
enum expand_modifier  modifier 
) [static]

static rtx expand_expr_addr_expr_1 ( tree  exp,
rtx  target,
enum machine_mode  tmode,
enum expand_modifier  modifier 
) [static]

static rtx expand_expr_constant ( tree  exp,
int  defer,
enum expand_modifier  modifier 
) [static]

rtx expand_expr_real ( tree  exp,
rtx  target,
enum machine_mode  tmode,
enum expand_modifier  modifier,
rtx alt_rtl 
)

static rtx expand_expr_real_1 ( tree  exp,
rtx  target,
enum machine_mode  tmode,
enum expand_modifier  modifier,
rtx alt_rtl 
) [static]

Definition at line 6735 of file expr.c.

References addr_for_mem_ref(), adjust_address, adjust_address_nv, align, all_zeros_p(), arg_pointer_rtx, array_ref_low_bound(), assemble_external(), assign_stack_temp_for_type(), assign_temp(), BIGGEST_ALIGNMENT, gcc_target::binds_local_p, bitpos(), BITS_PER_UNIT, BLOCK_OP_CALL_PARM, BLOCK_OP_NORMAL, build_constructor_from_list(), build_decl, build_int_cst(), build_qualified_type(), BUILT_IN_FRONTEND, BYTES_BIG_ENDIAN, cfun, clear_storage(), CODE_FOR_nothing, compare_tree_int(), COMPLETE_OR_UNBOUND_ARRAY_TYPE_P, CONCAT, const0_rtx, const1_rtx, CONST_DOUBLE_FROM_REAL_VALUE, const_vector_from_tree(), CONSTANT_P, constm1_rtx, CONSTRUCTOR_ELTS, convert_modes(), convert_move(), convert_to_mode(), copy_rtx(), copy_to_mode_reg(), copy_to_reg(), count, current_function_decl, DECL_ALIGN, DECL_ARTIFICIAL, DECL_BIT_FIELD, DECL_BUILT_IN, DECL_BUILT_IN_CLASS, DECL_EXTERNAL, decl_function_context(), DECL_IGNORED_P, DECL_INITIAL, DECL_MODE, DECL_RTL, DECL_SIZE, do_compare_rtx_and_jump(), do_jump(), do_pending_stack_adjust(), do_store_flag(), emit_barrier(), emit_block_move(), emit_cmp_and_jump_insns(), emit_insn(), emit_jump_insn(), emit_label(), emit_move_insn(), end_sequence(), EQ, error_mark_node, exact_log2, expand_abs(), expand_and(), expand_asm_expr(), expand_assignment(), expand_binop(), expand_builtin(), expand_call(), expand_case(), expand_computed_goto(), EXPAND_CONST_ADDRESS, expand_divmod(), expand_expr(), expand_expr_addr_expr(), expand_expr_constant(), expand_expr_real(), expand_expr_real_1(), expand_fix(), expand_float(), expand_goto(), EXPAND_INITIALIZER, expand_label(), EXPAND_MEMORY, expand_mult(), expand_mult_highpart_adjust(), EXPAND_NORMAL, expand_normal(), expand_null_return(), expand_operands(), expand_resx_expr(), expand_return(), expand_shift(), EXPAND_STACK_PARM, EXPAND_SUM, expand_ternary_op(), expand_unop(), expand_vec_cond_expr(), expand_vec_shift_expr(), expand_widen_pattern_expr(), EXPAND_WRITE, expr_size(), extract_bit_field(), FIRST_PSEUDO_REGISTER, flag_force_addr, flag_trapv, fold(), fold_convert(), fold_read_from_constant_string(), fold_unary(), FOR_EACH_CONSTRUCTOR_ELT, FOR_EACH_CONSTRUCTOR_VALUE, force_const_mem(), force_operand(), force_reg(), frame_pointer_rtx, function, FUNCTION_MODE, gcc_assert, gcc_unreachable, GE, GEN_FCN, gen_highpart(), GEN_INT, gen_int_mode(), gen_jump(), gen_label_rtx(), gen_lowpart, gen_lowpart_SUBREG(), gen_reg_rtx(), gen_rtx_AND, gen_rtx_fmt_e(), gen_rtx_LABEL_REF, gen_rtx_MEM(), gen_rtx_MINUS, gen_rtx_MULT, get_address_description(), GET_CODE, get_exception_filter(), get_exception_pointer(), get_inner_reference(), get_insns(), GET_MODE, GET_MODE_2XWIDER_MODE, GET_MODE_ALIGNMENT, GET_MODE_BITSIZE, GET_MODE_CLASS, GET_MODE_PRECISION, GET_MODE_SIZE, GET_MODE_WIDER_MODE, get_subtarget(), GT, HAVE_conditional_move, highest_pow2_factor(), HOST_BITS_PER_WIDE_INT, host_integerp(), HOST_WIDE_INT, idx, immed_double_const(), index(), insn, int_expr_size(), int_fits_type_p(), int_size_in_bytes(), integer_onep(), integer_zerop(), INTVAL, is_aligning_offset(), iter, jumpifnot(), LABEL_REF_NONLOCAL_P, label_rtx(), layout_decl(), LE, LEGITIMATE_CONSTANT_P, LT, mark_reg_pointer(), MAX, MEM_ALIGN, MEM_P, MEM_VOLATILE_P, memory_address(), memory_address_p(), MIN, MODE_COMPLEX_FLOAT, MODE_COMPLEX_INT, mode_for_size(), MODE_INT, MODE_VECTOR_FLOAT, MODE_VECTOR_INT, mostly_zeros_p(), MOVE_BY_PIECES_P, movmisalign_optab, NE, negate_rtx(), NO_DEFER_POP, NULL, NULL_RTX, NULL_TREE, OBJ_TYPE_REF_EXPR, offset_address(), OK_DEFER_POP, one_cmpl_optab, optab, optab_for_tree_code(), OPTAB_LIB_WIDEN, OPTAB_WIDEN, optimize, PLUS, plus_constant, Pmode, promote_mode(), ptr_mode, PUT_MODE, read_complex_part(), really_constant_p(), REDUCE_BIT_FIELD, REG_P, REGNO, replace_equiv_address(), result, ret, safe_from_p(), SAVE_EXPR_RESOLVED_P, SCALAR_INT_MODE_P, SET_DECL_RTL, set_mem_align(), set_mem_attributes(), SIGN_EXTEND, simplify_gen_binary(), simplify_gen_subreg(), size_diffop(), size_int, sizetype, SLOW_UNALIGNED_ACCESS, smul_widen_optab, SSA_NAME, SSA_NAME_VAR, start_sequence(), store_constructor(), store_expr(), store_field(), STRICT_ALIGNMENT, subreg_lowpart_offset(), SUBREG_PROMOTED_UNSIGNED_SET, SUBREG_PROMOTED_VAR_P, t1, targetm, tcc_binary, tcc_comparison, tcc_unary, tmp, TMR_ORIGINAL, TREE_ADDRESSABLE, TREE_CODE, TREE_CODE_CLASS, TREE_CONSTANT, TREE_CONSTANT_OVERFLOW, TREE_IMAGPART, tree_int_cst_equal(), TREE_INT_CST_HIGH, TREE_INT_CST_LOW, tree_low_cst(), TREE_OPERAND, TREE_READONLY, TREE_REAL_CST, TREE_REALPART, TREE_SIDE_EFFECTS, TREE_STATIC, TREE_STRING_LENGTH, TREE_STRING_POINTER, TREE_THIS_VOLATILE, TREE_TYPE, TREE_USED, TREE_VECTOR_CST_ELTS, tsi_end_p(), tsi_next(), tsi_start(), tsi_stmt(), TYPE_ALIGN, TYPE_ALIGN_OK, TYPE_ALIGN_UNIT, type_for_mode(), TYPE_MODE, TYPE_PRECISION, TYPE_QUAL_CONST, TYPE_QUALS, TYPE_SIZE, TYPE_SIZE_UNIT, TYPE_UNSIGNED, umul_widen_optab, use_anchored_address(), usmul_widen_optab, val, validize_mem(), void_type_node, VOID_TYPE_P, word_mode, write_complex_part(), XEXP, and xor_optab.

static void expand_operands ( tree  exp0,
tree  exp1,
rtx  target,
rtx op0,
rtx op1,
enum expand_modifier  modifier 
) [static]

void expand_var ( tree  var  ) 

rtx force_operand ( rtx  value,
rtx  target 
)

rtx gen_group_rtx ( rtx  orig  ) 

tree get_inner_reference ( tree  exp,
HOST_WIDE_INT *  pbitsize,
HOST_WIDE_INT *  pbitpos,
tree poffset,
enum machine_mode pmode,
int *  punsignedp,
int *  pvolatilep,
bool  keep_aligning 
)

static rtx get_subtarget ( rtx  x  )  [static]

Definition at line 3857 of file expr.c.

References FIRST_PSEUDO_REGISTER, optimize, REG_P, and REGNO.

static GTY ( ()   )  [static]

int handled_component_p ( tree  t  ) 

Definition at line 5888 of file expr.c.

References TREE_CODE, TREE_OPERAND, TREE_TYPE, and TYPE_MODE.

unsigned HOST_WIDE_INT highest_pow2_factor ( tree  exp  ) 

static unsigned HOST_WIDE_INT highest_pow2_factor_for_target ( tree  target,
tree  exp 
) [static]

void init_expr ( void   ) 

void init_expr_once ( void   ) 

static int is_aligning_offset ( tree  offset,
tree  exp 
) [static]

static int mostly_zeros_p ( tree  exp  )  [static]

void move_block_from_reg ( int  regno,
rtx  x,
int  nregs 
)

void move_block_to_reg ( int  regno,
rtx  x,
int  nregs,
enum machine_mode  mode 
)

rtx move_by_pieces ( rtx  to,
rtx  from,
unsigned HOST_WIDE_INT  len,
unsigned int  align,
int  endp 
)

static void move_by_pieces_1 ( rtx(*)(rtx,...)  genfun,
enum machine_mode  mode,
struct move_by_pieces data 
) [static]

static unsigned HOST_WIDE_INT move_by_pieces_ninsns ( unsigned HOST_WIDE_INT  l,
unsigned int  align,
unsigned int  max_size 
) [static]

static bool optimize_bitfield_assignment_op ( unsigned HOST_WIDE_INT  bitsize,
unsigned HOST_WIDE_INT  bitpos,
enum machine_mode  mode1,
rtx  str_rtx,
tree  to,
tree  src 
) [static]

rtx push_block ( rtx  size,
int  extra,
int  below 
)

static rtx read_complex_part ( rtx  cplx,
bool  imag_p 
) [static]

static rtx reduce_to_bit_field_precision ( rtx  exp,
rtx  target,
tree  type 
) [static]

int safe_from_p ( rtx  x,
tree  exp,
int  top_p 
)

bool set_storage_via_setmem ( rtx  object,
rtx  size,
rtx  val,
unsigned int  align 
)

rtx store_by_pieces ( rtx  to,
unsigned HOST_WIDE_INT  len,
rtx(*)(void *, HOST_WIDE_INT, enum machine_mode constfun,
void constfundata,
unsigned int  align,
int  endp 
)

static void store_by_pieces_1 ( struct store_by_pieces *data  ATTRIBUTE_UNUSED,
unsigned int align  ATTRIBUTE_UNUSED 
) [static]

static void store_by_pieces_1 ( struct store_by_pieces ,
unsigned  int 
) [static]

static void store_by_pieces_2 ( rtx(*)(rtx,...)  genfun,
enum machine_mode  mode,
struct store_by_pieces data 
) [static]

static void store_constructor ( tree  exp,
rtx  target,
int  cleared,
HOST_WIDE_INT  size 
) [static]

Definition at line 4885 of file expr.c.

References adjust_address, bit_position(), bitpos(), BITS_PER_UNIT, BITS_PER_WORD, BLOCK_OP_NORMAL, build2, build_decl, build_int_cst(), BYTES_BIG_ENDIAN, clear_storage(), CODE_FOR_nothing, CONST0_RTX, constructor_elt, CONSTRUCTOR_ELTS, convert_to_mode(), copy_rtx(), count, DECL_BIT_FIELD, DECL_FIELD_BIT_OFFSET, DECL_FIELD_OFFSET, DECL_MODE, DECL_NONADDRESSABLE_P, DECL_SIZE, do_pending_stack_adjust(), emit_insn(), emit_jump(), emit_label(), emit_move_insn(), expand_assignment(), expand_normal(), expr_size(), fields_length(), fold_build2, fold_convert(), FOR_EACH_CONSTRUCTOR_ELT, FOR_EACH_CONSTRUCTOR_VALUE, gcc_assert, gcc_unreachable, GEN_FCN, GEN_INT, gen_label_rtx(), gen_reg_rtx(), gen_rtx_CLOBBER, gen_rtx_PARALLEL, get_alias_set(), GET_MODE, GET_MODE_BITSIZE, GET_MODE_CLASS, GET_MODE_INNER, GET_MODE_SIZE, highest_pow2_factor(), host_integerp(), HOST_WIDE_INT, i, idx, if(), index(), initializer_zerop(), int, int_bit_position(), int_const_binop(), int_size_in_bytes(), integer_one_node, integer_type_node, jumpif(), lo, make_tree(), MEM_KEEP_ALIAS_SET_P, MEM_P, MODE_INT, mostly_zeros_p(), NULL, NULL_TREE, offset_address(), Pmode, promote_mode(), ptr_mode, REG_P, rtvec_alloc(), RTVEC_ELT, SET_DECL_RTL, size_binop(), ssize_int, ssizetype, store_constructor(), store_constructor_field(), store_expr(), SUBSTITUTE_PLACEHOLDER_IN_EXPR, TREE_CODE, tree_low_cst(), TREE_OPERAND, TREE_STATIC, TREE_TYPE, TYPE_DOMAIN, TYPE_MAX_VALUE, TYPE_MIN_VALUE, TYPE_MODE, TYPE_NONALIASED_COMPONENT, TYPE_PRECISION, TYPE_SIZE, TYPE_SIZE_UNIT, TYPE_UNSIGNED, TYPE_VECTOR_SUBPARTS, UNITS_PER_WORD, vec_init_optab, VEC_iterate, VEC_length, vector, VECTOR_MODE_P, and word_mode.

static void store_constructor_field ( rtx  target,
unsigned HOST_WIDE_INT  bitsize,
HOST_WIDE_INT  bitpos,
enum machine_mode  mode,
tree  exp,
tree  type,
int  cleared,
int  alias_set 
) [static]

rtx store_expr ( tree  exp,
rtx  target,
int  call_param_p 
)

static rtx store_field ( rtx  target,
HOST_WIDE_INT  bitsize,
HOST_WIDE_INT  bitpos,
enum machine_mode  mode,
tree  exp,
tree  type,
int  alias_set 
) [static]

tree string_constant ( tree  arg,
tree ptr_offset 
)

int try_casesi ( tree  index_type,
tree  index_expr,
tree  minval,
tree  range,
rtx table_label  ATTRIBUTE_UNUSED,
rtx  default_label 
)

int try_tablejump ( tree  index_type,
tree  index_expr,
tree  minval,
tree  range,
rtx  table_label,
rtx  default_label 
)

static bool undefined_operand_subword_p ( rtx  op,
int  i 
) [static]

void use_group_regs ( rtx call_fusage,
rtx  regs 
)

Definition at line 2163 of file expr.c.

References GET_CODE, i, REG, REG_P, use_reg(), XEXP, XVECEXP, and XVECLEN.

void use_reg ( rtx call_fusage,
rtx  reg 
)

Definition at line 2135 of file expr.c.

References abort, FIRST_PSEUDO_REGISTER, gcc_assert, gen_rtx_EXPR_LIST, gen_rtx_USE, GET_CODE, REG, REG_P, and REGNO.

void use_regs ( rtx call_fusage,
int  regno,
int  nregs 
)

Definition at line 2148 of file expr.c.

References abort, FIRST_PSEUDO_REGISTER, gcc_assert, i, regno_reg_rtx, and use_reg().

int vector_mode_valid_p ( enum machine_mode  mode  ) 

static void write_complex_part ( rtx  cplx,
rtx  val,
bool  imag_p 
) [static]


Variable Documentation

enum insn_code cmpmem_optab[NUM_MACHINE_MODES]

Definition at line 209 of file expr.c.

enum insn_code cmpstr_optab[NUM_MACHINE_MODES]

Definition at line 207 of file expr.c.

enum insn_code cmpstrn_optab[NUM_MACHINE_MODES]

Definition at line 208 of file expr.c.

Referenced by expand_builtin_strcmp(), init_optabs(), and prepare_cmp_insn().

Definition at line 88 of file expr.c.

char direct_load[NUM_MACHINE_MODES] [static]

Definition at line 167 of file expr.c.

char direct_store[NUM_MACHINE_MODES] [static]

Definition at line 168 of file expr.c.

bool float_extend_from_mem[NUM_MACHINE_MODES][NUM_MACHINE_MODES] [static]

Definition at line 172 of file expr.c.

enum insn_code movmem_optab[NUM_MACHINE_MODES]

Definition at line 200 of file expr.c.

enum insn_code setmem_optab[NUM_MACHINE_MODES]

Definition at line 203 of file expr.c.

Referenced by init_optabs().

enum insn_code sync_add_optab[NUM_MACHINE_MODES]

Definition at line 212 of file expr.c.

Referenced by expand_sync_operation(), gimplify_omp_atomic_fetch_op(), and init_optabs().

enum insn_code sync_and_optab[NUM_MACHINE_MODES]

Definition at line 215 of file expr.c.

Referenced by expand_sync_operation(), gimplify_omp_atomic_fetch_op(), and init_optabs().

enum insn_code sync_compare_and_swap[NUM_MACHINE_MODES]

enum insn_code sync_compare_and_swap_cc[NUM_MACHINE_MODES]

Definition at line 231 of file expr.c.

Referenced by expand_bool_compare_and_swap(), expand_compare_and_swap_loop(), and init_optabs().

enum insn_code sync_ior_optab[NUM_MACHINE_MODES]

Definition at line 214 of file expr.c.

Referenced by expand_sync_operation(), gimplify_omp_atomic_fetch_op(), and init_optabs().

enum insn_code sync_lock_release[NUM_MACHINE_MODES]

Definition at line 233 of file expr.c.

Referenced by expand_builtin_lock_release(), and init_optabs().

enum insn_code sync_lock_test_and_set[NUM_MACHINE_MODES]

Definition at line 232 of file expr.c.

Referenced by expand_sync_lock_test_and_set(), and init_optabs().

enum insn_code sync_nand_optab[NUM_MACHINE_MODES]

Definition at line 217 of file expr.c.

Referenced by expand_sync_operation(), and init_optabs().

enum insn_code sync_new_add_optab[NUM_MACHINE_MODES]

Definition at line 224 of file expr.c.

Referenced by expand_sync_fetch_operation(), and init_optabs().

enum insn_code sync_new_and_optab[NUM_MACHINE_MODES]

Definition at line 227 of file expr.c.

Referenced by expand_sync_fetch_operation(), and init_optabs().

enum insn_code sync_new_ior_optab[NUM_MACHINE_MODES]

Definition at line 226 of file expr.c.

Referenced by expand_sync_fetch_operation(), and init_optabs().

enum insn_code sync_new_nand_optab[NUM_MACHINE_MODES]

Definition at line 229 of file expr.c.

Referenced by expand_sync_fetch_operation(), and init_optabs().

enum insn_code sync_new_sub_optab[NUM_MACHINE_MODES]

Definition at line 225 of file expr.c.

Referenced by expand_sync_fetch_operation(), and init_optabs().

enum insn_code sync_new_xor_optab[NUM_MACHINE_MODES]

Definition at line 228 of file expr.c.

Referenced by expand_sync_fetch_operation(), and init_optabs().

enum insn_code sync_old_add_optab[NUM_MACHINE_MODES]

Definition at line 218 of file expr.c.

Referenced by expand_sync_fetch_operation(), and init_optabs().

enum insn_code sync_old_and_optab[NUM_MACHINE_MODES]

Definition at line 221 of file expr.c.

Referenced by expand_sync_fetch_operation(), and init_optabs().

enum insn_code sync_old_ior_optab[NUM_MACHINE_MODES]

Definition at line 220 of file expr.c.

Referenced by expand_sync_fetch_operation(), and init_optabs().

enum insn_code sync_old_nand_optab[NUM_MACHINE_MODES]

Definition at line 223 of file expr.c.

Referenced by expand_sync_fetch_operation(), and init_optabs().

enum insn_code sync_old_sub_optab[NUM_MACHINE_MODES]

Definition at line 219 of file expr.c.

Referenced by expand_sync_fetch_operation(), and init_optabs().

enum insn_code sync_old_xor_optab[NUM_MACHINE_MODES]

Definition at line 222 of file expr.c.

Referenced by expand_sync_fetch_operation(), and init_optabs().

enum insn_code sync_sub_optab[NUM_MACHINE_MODES]

Definition at line 213 of file expr.c.

Referenced by expand_sync_operation(), and init_optabs().

enum insn_code sync_xor_optab[NUM_MACHINE_MODES]

Definition at line 216 of file expr.c.

Referenced by expand_sync_operation(), gimplify_omp_atomic_fetch_op(), and init_optabs().


Generated on Wed Apr 8 15:29:19 2009 for Open64 by  doxygen 1.5.6