osprey-gcc/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 bool clear_storage_via_clrmem (rtx, rtx, unsigned)
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 (tree)
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)
static bool clear_storage_via_clrmem (rtx object, rtx size, 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)
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 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 void categorize_ctor_elements_1 (tree ctor, HOST_WIDE_INT *p_nz_elts, HOST_WIDE_INT *p_nc_elts, HOST_WIDE_INT *p_elt_count, bool *p_must_clear)
void categorize_ctor_elements (tree ctor, HOST_WIDE_INT *p_nz_elts, HOST_WIDE_INT *p_nc_elts, HOST_WIDE_INT *p_elt_count, bool *p_must_clear)
HOST_WIDE_INT count_type_elements (tree type)
static int mostly_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)
void expand_var (tree var)
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 clrmem_optab [NUM_MACHINE_MODES]
enum insn_code cmpstr_optab [NUM_MACHINE_MODES]
enum insn_code cmpmem_optab [NUM_MACHINE_MODES]


Define Documentation

#define CASE_VALUES_THRESHOLD   (HAVE_casesi ? 4 : 5)

Definition at line 8722 of file expr.c.

#define CLEAR_BY_PIECES_P ( SIZE,
ALIGN   ) 

Value:

Definition at line 186 of file expr.c.

#define CODE_FOR_casesi   CODE_FOR_nothing

Definition at line 8715 of file expr.c.

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

Definition at line 8714 of file expr.c.

#define gen_tablejump ( x,
 )     (0)

Definition at line 8806 of file expr.c.

#define HAVE_casesi   0

Definition at line 8713 of file expr.c.

#define HAVE_tablejump   0

Definition at line 8805 of file expr.c.

#define MOVE_BY_PIECES_P ( SIZE,
ALIGN   ) 

Value:

Definition at line 178 of file expr.c.

#define REDUCE_BIT_FIELD ( expr   ) 

Value:

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

Referenced by expand_expr_real_1().

#define SLOW_UNALIGNED_ACCESS ( MODE,
ALIGN   )     STRICT_ALIGNMENT

Definition at line 214 of file expr.c.

#define STACK_PUSH_CODE   PRE_INC

Definition at line 76 of file expr.c.

#define STORE_BY_PIECES_P ( SIZE,
ALIGN   ) 

Value:

Definition at line 195 of file expr.c.

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

Definition at line 809 of file expr.c.


Function Documentation

tree array_ref_element_size ( tree  exp  ) 

tree array_ref_low_bound ( tree  exp  ) 

tree array_ref_up_bound ( tree  exp  ) 

Definition at line 5545 of file expr.c.

Referenced by in_array_bounds_p(), and range_in_array_bounds_p().

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 816 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 
)

Definition at line 2096 of file expr.c.

unsigned int case_values_threshold ( void   ) 

Definition at line 8726 of file expr.c.

References CASE_VALUES_THRESHOLD.

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

Definition at line 4415 of file expr.c.

References categorize_ctor_elements_1().

Referenced by all_zeros_p(), gimplify_init_constructor(), and mostly_zeros_p().

static void categorize_ctor_elements_1 ( tree  ctor,
HOST_WIDE_INT *  p_nz_elts,
HOST_WIDE_INT *  p_nc_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 2262 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 
)

Definition at line 2409 of file expr.c.

static tree clear_storage_libcall_fn ( int  for_call  )  [static]

Definition at line 2590 of file expr.c.

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

static bool clear_storage_via_clrmem ( rtx  object,
rtx  size,
unsigned int  align 
) [static]

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

Referenced by clear_storage().

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 
)

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

Definition at line 692 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  ) 

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 1387 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]

Referenced by emit_block_move().

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

Definition at line 1727 of file expr.c.

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 
)

Definition at line 1750 of file expr.c.

Referenced by precompute_register_parameters(), and store_one_arg().

void emit_group_move ( rtx  dst,
rtx  src 
)

Definition at line 1780 of file expr.c.

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

rtx emit_group_move_into_temps ( rtx  src  ) 

Definition at line 1797 of file expr.c.

Referenced by assign_parm_setup_block().

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 
) [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 
)

Definition at line 3782 of file expr.c.

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]

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

Definition at line 6320 of file expr.c.

Referenced by c_expand_expr(), expand_expr(), expand_expr_real_1(), expand_normal(), and store_expr().

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 6394 of file expr.c.

References abort, adjust_address, adjust_address_nv, aggregate_value_p(), align, arg_pointer_rtx, 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, build1, build2, build_decl, build_int_cst(), build_qualified_type(), build_real(), BUILT_IN_FRONTEND, BYTES_BIG_ENDIAN, can_compare_p(), ccp_jump, cfun, 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, CONSTRUCTOR_ELTS, convert(), convert_modes(), convert_move(), convert_to_mode(), copy_rtx(), copy_to_mode_reg(), copy_to_reg(), count, cse_not_expected, current_function_decl, dconst1, 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_jump_by_parts_greater_rtx(), 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(), 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_real(), expand_fix(), expand_float(), expand_goto(), EXPAND_INITIALIZER, expand_label(), EXPAND_MEMORY, expand_mult(), expand_mult_highpart_adjust(), 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_WRITE, extract_bit_field(), FIRST_PSEUDO_REGISTER, flag_force_addr, flag_trapv, flag_unsafe_math_optimizations, fold(), fold_read_from_constant_string(), 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_CODE, get_exception_filter(), get_exception_pointer(), get_inner_reference(), GET_MODE, GET_MODE_ALIGNMENT, GET_MODE_BITSIZE, GET_MODE_CLASS, GET_MODE_PRECISION, GET_MODE_SIZE, GET_MODE_WIDER_MODE, get_subtarget(), HAVE_conditional_move, highest_pow2_factor(), HOST_BITS_PER_INT, HOST_BITS_PER_WIDE_INT, host_integerp(), HOST_WIDE_INT, immed_double_const(), index(), insn, int_expr_size(), int_fits_type_p(), int_size_in_bytes(), integer_one_node, integer_onep(), integer_zero_node, integer_zerop(), INTVAL, is_aligning_offset(), iter, jumpifnot(), LABEL_REF_NONLOCAL_P, label_rtx(), layout_decl(), LE, LEGITIMATE_CONSTANT_P, 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, 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, optimize_size, output_constant_def(), PLUS, plus_constant, Pmode, promote_mode(), ptr_mode, PUT_MODE, read_complex_part(), real_onep(), really_constant_p(), REDUCE_BIT_FIELD, REF_ORIGINAL, 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_int, SLOW_UNALIGNED_ACCESS, smul_widen_optab, SSA_NAME, SSA_NAME_VAR, 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, TREE_ADDRESSABLE, TREE_CHAIN, 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_PURPOSE, 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_VALUE, TREE_VECTOR_CST_ELTS, tsi_end_p(), tsi_next(), tsi_start(), tsi_stmt(), TYPE_ALIGN, TYPE_ALIGN_OK, TYPE_ALIGN_UNIT, TYPE_MODE, TYPE_PRECISION, TYPE_QUAL_CONST, TYPE_QUALS, TYPE_SIZE, TYPE_SIZE_UNIT, TYPE_UNSIGNED, umul_widen_optab, UNITS_PER_WORD, val, validize_mem(), void_type_node, VOID_TYPE_P, word_mode, write_complex_part(), XEXP, and xor_optab.

Referenced by expand_expr_real(), and expand_expr_real_1().

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

void expand_var ( tree  var  ) 

Definition at line 6039 of file expr.c.

Referenced by expand_function_start().

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 
)

Definition at line 5350 of file expr.c.

static rtx get_subtarget ( rtx  x  )  [static]

Definition at line 3650 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 5589 of file expr.c.

References TREE_CODE.

static unsigned HOST_WIDE_INT highest_pow2_factor ( tree  exp  )  [static]

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

void init_expr ( void   ) 

Definition at line 314 of file expr.c.

References cfun, and ggc_alloc_cleared.

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 
)

Definition at line 1495 of file expr.c.

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 
)

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 
)

Definition at line 2192 of file expr.c.

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 4587 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_ELTS, convert(), 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_expr(), expr_size(), fields_length(), fold(), fold_convert(), 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, if(), index(), initializer_zerop(), int, int_bit_position(), int_const_binop(), int_size_in_bytes(), integer_one_node, integer_type_node, jumpif(), list_length(), lo, make_tree(), MEM_KEEP_ALIAS_SET_P, MEM_P, MODE_INT, mostly_zeros_p(), NULL, NULL_RTX, 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_CHAIN, TREE_CODE, tree_low_cst(), TREE_OPERAND, TREE_PURPOSE, TREE_STATIC, TREE_TYPE, TREE_VALUE, 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, 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 
)

void use_group_regs ( rtx call_fusage,
rtx  regs 
)

Definition at line 2072 of file expr.c.

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

void use_reg ( rtx call_fusage,
rtx  reg 
)

Definition at line 2044 of file expr.c.

References FIRST_PSEUDO_REGISTER, gcc_assert, gen_rtx_EXPR_LIST, gen_rtx_USE, REG_P, and REGNO.

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

Definition at line 2057 of file expr.c.

References 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 clrmem_optab[NUM_MACHINE_MODES]

Definition at line 204 of file expr.c.

Referenced by init_optabs().

enum insn_code cmpmem_optab[NUM_MACHINE_MODES]

Definition at line 209 of file expr.c.

Referenced by init_optabs(), and prepare_cmp_insn().

enum insn_code cmpstr_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 87 of file expr.c.

char direct_load[NUM_MACHINE_MODES] [static]

Definition at line 168 of file expr.c.

char direct_store[NUM_MACHINE_MODES] [static]

Definition at line 169 of file expr.c.

bool float_extend_from_mem[NUM_MACHINE_MODES][NUM_MACHINE_MODES] [static]

Definition at line 173 of file expr.c.

enum insn_code movmem_optab[NUM_MACHINE_MODES]

Definition at line 201 of file expr.c.

Referenced by init_optabs().


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