cwh_expr.cxx File Reference

#include "defs.h"
#include "glob.h"
#include "stab.h"
#include "strtab.h"
#include "errors.h"
#include "config_targ.h"
#include "targ_const.h"
#include "wn.h"
#include "wn_util.h"
#include "const.h"
#include "f90_utils.h"
#include "sgi_cmd_line.h"
#include "i_cvrt.h"
#include "cwh_defines.h"
#include "cwh_addr.h"
#include "cwh_expr.h"
#include "cwh_block.h"
#include "cwh_types.h"
#include "cwh_preg.h"
#include "cwh_stab.h"
#include "cwh_auxst.h"
#include "cwh_stmt.h"
#include "cwh_stk.h"
#include "cwh_intrin.h"
Include dependency graph for cwh_expr.cxx:

Go to the source code of this file.

Defines

#define binop_routine(name, opr)
#define binop_shift_routine(name, opr)
#define compare_routine(name, opr)
#define compare_logical(name, opr_l, opr_c)
#define compare_bitwise(name, opr)
#define unop_routine(name, opr)

Functions

static void cwh_expr_binop (OPERATOR op, TY_IDX result_ty)
static void cwh_expr_unop (OPERATOR op, TY_IDX result_ty)
static WNcwh_expr_compare_char (OPERATOR op, TY_IDX ty)
WNcwh_expr_extract_arrayexp (WN *wn, WN **arrayexp)
WNcwh_expr_restore_arrayexp (WN *wn, WN *arrayexp)
WNcwh_wrap_cvtl (WN *wn, TYPE_ID ty)
WNcwh_convert_to_ty (WN *wn, TYPE_ID ty)
TYPE_ID cwh_get_highest_type (WN *lhs, WN *rhs)
WNcwh_get_typed_operand (TYPE_ID ty, WN **arrexp)
OPCODE cwh_make_typed_opcode (OPERATOR op, TYPE_ID ty1, TYPE_ID ty2)
static void cwh_expr_binop_shift (OPERATOR op, TY_IDX result_ty)
void cwh_expr_compare (OPERATOR op, TY_IDX ty)
void fei_leqv (TYPE type)
void fei_lxor (TYPE type)
static void cwh_expr_compare_logical (OPCODE opc, TY_IDX ty)
static void cwh_expr_compare_bitwise (OPERATOR op, TY_IDX ty)
void fei_lneg (TYPE result)
WNcwh_expr_bincalc (OPERATOR op, WN *wn1, WN *wn2)
WNcwh_expr_operand (WN **arrexp)
WNcwh_expr_address (FLAG flag)
 binop_routine (fei_plus, OPR_ADD) binop_routine(fei_minus
OPR_SUB binop_routine (fei_mult, OPR_MPY) binop_routine(fei_div
OPR_SUB OPR_DIV compare_routine (fei_gt, OPR_GT) compare_routine(fei_ge
OPR_SUB OPR_DIV OPR_GE compare_routine (fei_lt, OPR_LT) compare_routine(fei_le
OPR_SUB OPR_DIV OPR_GE OPR_LE compare_routine (fei_eq, OPR_EQ) compare_routine(fei_ne
OPR_SUB OPR_DIV OPR_GE OPR_LE
OPR_NE 
compare_bitwise (fei_and, OPR_BAND) compare_bitwise(fei_xor
OPR_SUB OPR_DIV OPR_GE OPR_LE
OPR_NE OPR_BXOR 
compare_logical (fei_land, OPC_I4LAND, OPC_I4CAND) compare_logical(fei_lor
OPR_SUB OPR_DIV OPR_GE OPR_LE
OPR_NE OPR_BXOR OPC_I4CIOR 
binop_shift_routine (fei_lshift, OPR_SHL) binop_shift_routine(fei_rshift
OPR_SUB OPR_DIV OPR_GE OPR_LE
OPR_NE OPR_BXOR OPC_I4CIOR
OPR_LSHR 
binop_shift_routine (fei_ashift, OPR_ASHR) compare_bitwise(fei_or
OPR_SUB OPR_DIV OPR_GE OPR_LE
OPR_NE OPR_BXOR OPC_I4CIOR
OPR_LSHR OPR_BIOR void 
fei_eqv (TYPE type)
void fei_islg (TYPE type)
void fei_multiply_high (TYPE type)
void fei_imag (TYPE type)
void fei_bneg (TYPE type)
 unop_routine (fei_uminus, OPR_NEG) extern void fei_paren(TYPE type

Variables

static char * source_file = __FILE__
OPR_SUB OPR_DIV OPR_GE OPR_LE
OPR_NE OPR_BXOR 
OPC_I4LIOR

Define Documentation

#define binop_routine ( name,
opr   ) 
Value:
extern void name (TYPE type) \
{ \
  cwh_expr_binop(opr,cast_to_TY(t_TY(type))); \
}

Definition at line 1082 of file cwh_expr.cxx.

#define binop_shift_routine ( name,
opr   ) 
Value:
extern void name (TYPE type) \
{ \
  cwh_expr_binop_shift(opr,cast_to_TY(t_TY(type))); \
}

Definition at line 1088 of file cwh_expr.cxx.

#define compare_bitwise ( name,
opr   ) 
Value:
extern void name (TYPE type) \
{ \
  cwh_expr_compare_bitwise(opr,cast_to_TY(t_TY(type))); \
}

Definition at line 1106 of file cwh_expr.cxx.

#define compare_logical ( name,
opr_l,
opr_c   ) 
Value:
extern void name (TYPE type) \
{ \
  cwh_expr_compare_logical(FTN_Short_Circuit_On ? opr_c : opr_l,cast_to_TY(t_TY(type))); \
}

Definition at line 1100 of file cwh_expr.cxx.

#define compare_routine ( name,
opr   ) 
Value:
extern void name (TYPE type) \
{ \
  cwh_expr_compare(opr,cast_to_TY(t_TY(type))); \
}

Definition at line 1094 of file cwh_expr.cxx.

#define unop_routine ( name,
opr   ) 
Value:
extern void name (TYPE type) \
{ \
  cwh_expr_unop(opr,cast_to_TY(t_TY(type))); \
}

Definition at line 1212 of file cwh_expr.cxx.


Function Documentation

OPR_SUB binop_routine ( fei_mult  ,
OPR_MPY   
)
binop_routine ( fei_plus  ,
OPR_ADD   
)
OPR_SUB OPR_DIV OPR_GE OPR_LE OPR_NE OPR_BXOR OPC_I4CIOR OPR_LSHR binop_shift_routine ( fei_ashift  ,
OPR_ASHR   
)
OPR_SUB OPR_DIV OPR_GE OPR_LE OPR_NE OPR_BXOR OPC_I4CIOR binop_shift_routine ( fei_lshift  ,
OPR_SHL   
)
Type Constraints
OPR_SUB OPR_DIV OPR_GE OPR_LE OPR_NE compare_bitwise ( fei_and  ,
OPR_BAND   
)
OPR_SUB OPR_DIV OPR_GE OPR_LE OPR_NE OPR_BXOR compare_logical ( fei_land  ,
OPC_I4LAND  ,
OPC_I4CAND   
)
OPR_SUB OPR_DIV OPR_GE OPR_LE compare_routine ( fei_eq  ,
OPR_EQ   
)
OPR_SUB OPR_DIV OPR_GE compare_routine ( fei_lt  ,
OPR_LT   
)
OPR_SUB OPR_DIV compare_routine ( fei_gt  ,
OPR_GT   
)
WN* cwh_convert_to_ty ( WN wn,
TYPE_ID  ty 
)
WN* cwh_expr_address ( FLAG  flag  ) 
WN* cwh_expr_bincalc ( OPERATOR  op,
WN wn1,
WN wn2 
)
static void cwh_expr_binop ( OPERATOR  op,
TY_IDX  result_ty 
) [static]
static void cwh_expr_binop_shift ( OPERATOR  op,
TY_IDX  result_ty 
) [static]
void cwh_expr_compare ( OPERATOR  op,
TY_IDX  ty 
)
static void cwh_expr_compare_bitwise ( OPERATOR  op,
TY_IDX  ty 
) [static]
static WN * cwh_expr_compare_char ( OPERATOR  op,
TY_IDX  ty 
) [static]
static void cwh_expr_compare_logical ( OPCODE  opc,
TY_IDX  ty 
) [static]

Definition at line 737 of file cwh_expr.cxx.

References cwh_expr_operand(), cwh_expr_restore_arrayexp(), cwh_stk_push_typed(), NULL, wn, WN_CreateExp2(), WN_item, and WN_set_ty().

Here is the call graph for this function:

WN* cwh_expr_extract_arrayexp ( WN wn,
WN **  arrayexp 
)

Definition at line 118 of file cwh_expr.cxx.

References DELETE_ARRAYEXP_WN, Full_arrayexp, INT, NULL, OPR_ARRAYEXP, WN_Delete, WN_DELETE_Tree(), WN_kid(), WN_kid0(), WN_kid_count(), and WNOPR.

Referenced by cwh_expr_operand(), fei_non_conform_store(), fei_nullify(), and fei_store().

Here is the call graph for this function:

WN* cwh_expr_operand ( WN **  arrexp  ) 

Definition at line 913 of file cwh_expr.cxx.

References ADDR_item, cwh_addr_address_ST(), cwh_addr_is_array(), cwh_addr_is_section(), cwh_addr_load_ST(), cwh_addr_load_WN(), cwh_addr_offset(), cwh_expr_extract_arrayexp(), cwh_stk_get_class(), cwh_stk_get_TY(), cwh_stk_pop_ADDR(), cwh_stk_pop_DEREF(), cwh_stk_pop_PCONST(), cwh_stk_pop_ST(), cwh_stk_pop_WHIRL(), cwh_stk_pop_WN(), DELETE_ARRAYEXP_WN, DEREF_item, DevAssert, F90_Wrap_ARREXP(), FLD_item, Full_arrayexp, NULL, FLD_det::off, PCONST_item, ST_item, ST_item_whole_array, FLD_det::type, wn, WN_item, and WN_item_whole_array.

Referenced by cwh_addr_do_bounds_check(), cwh_ceiling_floor(), cwh_char_intrin(), cwh_do_tranformational(), cwh_dope_store_bound(), cwh_expr_address(), cwh_expr_binop(), cwh_expr_binop_shift(), cwh_expr_compare(), cwh_expr_compare_bitwise(), cwh_expr_compare_char(), cwh_expr_compare_logical(), cwh_get_typed_operand(), cwh_inline_allocate(), cwh_intrin_get_return_value(), cwh_intrin_ieee_intrin_call_helper(), cwh_intrin_ieee_intrin_helper(), cwh_intrin_popcnt_leadz_helper(), cwh_intrin_sync_intrin(), cwh_io_ioitem(), cwh_io_no_desc(), cwh_io_str_ioitem(), cwh_mp_region(), cwh_reorder(), cwh_stmt_assigned_goto(), cwh_stmt_call_helper(), cwh_stmt_character_icall(), cwh_stmt_character_store(), cwh_stmt_computed_goto(), cwh_stmt_select_case_char(), cwh_stmt_str_falsebr_util(), do_simple(), fei_abs(), fei_alloc(), fei_allocate(), fei_arith_goto(), fei_array_construct(), fei_array_dimen(), fei_assert(), fei_blocking_size(), fei_bneg(), fei_brtrue(), fei_close(), fei_co_array_dimen(), fei_control_list(), fei_cot(), fei_count(), fei_doloop(), fei_dot_product(), fei_dot_product_logical(), fei_dowhile(), fei_dv_def(), fei_dv_deref(), fei_exponent(), fei_exponentiate(), fei_fission(), fei_fpclass(), fei_free(), fei_fuse(), fei_ibits(), fei_ieee_sign_xfer(), fei_ieee_trunc(), fei_if(), fei_imag(), fei_implied_do(), fei_inquire(), fei_IO_list(), fei_iolength(), fei_iotype(), fei_isfinite(), fei_islg(), fei_isnan(), fei_isunordered(), fei_label_def_named(), fei_leqv(), fei_lneg(), fei_logb(), fei_lxor(), fei_malloc(), fei_matmul(), fei_mfree(), fei_multiply_high(), fei_mvbits(), fei_near(), fei_new_select(), fei_new_select_case(), fei_noio_implied_do(), fei_nseq_subscr(), fei_nullify(), fei_open(), fei_page_place(), fei_poppar(), fei_prefetch_ref(), fei_pstore(), fei_purple_conditional(), fei_redistribute(), fei_remainder(), fei_return(), fei_round(), fei_scalb(), fei_scale(), fei_seq_subscr(), fei_set_dv_hdr_fld(), fei_set_exponent(), fei_sign_xfer(), fei_static_simple_reloc_init(), fei_store(), fei_subscr_src_triplet(), fei_subscr_triplet(), fei_substr(), fei_trunc(), fei_unroll(), fei_where(), simple_intrinsic(), and simple_intrinsic_nt().

Here is the call graph for this function:

WN* cwh_expr_restore_arrayexp ( WN wn,
WN arrayexp 
)
static void cwh_expr_unop ( OPERATOR  op,
TY_IDX  result_ty 
) [static]
TYPE_ID cwh_get_highest_type ( WN lhs,
WN rhs 
)
WN* cwh_get_typed_operand ( TYPE_ID  ty,
WN **  arrexp 
)

Definition at line 356 of file cwh_expr.cxx.

References cwh_convert_to_ty(), and cwh_expr_operand().

Referenced by cwh_expr_unop(), fei_exponentiate(), fei_logb(), fei_scalb(), fei_scale(), and fei_set_exponent().

Here is the call graph for this function:

OPCODE cwh_make_typed_opcode ( OPERATOR  op,
TYPE_ID  ty1,
TYPE_ID  ty2 
)
WN* cwh_wrap_cvtl ( WN wn,
TYPE_ID  ty 
)
void fei_bneg ( TYPE  type  ) 
OPR_SUB OPR_DIV OPR_GE OPR_LE OPR_NE OPR_BXOR OPC_I4CIOR OPR_LSHR OPR_BIOR void fei_eqv ( TYPE  type  ) 

Definition at line 1135 of file cwh_expr.cxx.

References fei_bneg(), and fei_xor().

Referenced by cvrt_exp_to_pdg().

Here is the call graph for this function:

void fei_imag ( TYPE  type  ) 
void fei_islg ( TYPE  type  ) 

Definition at line 1151 of file cwh_expr.cxx.

References cwh_expr_compare(), cwh_expr_operand(), cwh_stk_push(), fei_lor(), NULL, OPR_GT, OPR_LT, WN_COPY_Tree(), and WN_item.

Referenced by cvrt_exp_to_pdg().

Here is the call graph for this function:

void fei_leqv ( TYPE  type  ) 
void fei_lneg ( TYPE  result  ) 

Definition at line 817 of file cwh_expr.cxx.

References cast_to_TY, cwh_expr_operand(), cwh_expr_restore_arrayexp(), cwh_stk_push_typed(), NULL, OPC_I4LNOT, t_TY, wn, WN_CreateExp1(), WN_item, and WN_set_ty().

Referenced by cvrt_exp_to_pdg().

Here is the call graph for this function:

void fei_lxor ( TYPE  type  ) 
void fei_multiply_high ( TYPE  type  ) 
unop_routine ( fei_uminus  ,
OPR_NEG   
)

Variable Documentation

OPR_SUB OPR_DIV OPR_GE OPR_LE OPR_NE OPR_BXOR OPC_I4LIOR

Definition at line 1125 of file cwh_expr.cxx.

char* source_file = __FILE__ [static]

Definition at line 61 of file cwh_expr.cxx.


Generated on Tue Nov 17 06:29:54 2009 for Open64 (mfef90, whirl2f, and IR tools) by  doxygen 1.6.1