Open64 (mfef90, whirl2f, and IR tools)  TAG: version-openad; SVN changeset: 916
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

static WN * cwh_expr_compare_char ( OPERATOR  op,
TY_IDX  ty 
) [static]

Definition at line 671 of file cwh_expr.cxx.

References cwh_expr_address(), cwh_expr_operand(), cwh_intrin_op(), cwh_stk_pop_STR(), DevAssert, F90_Wrap_ARREXP(), f_NONE, FALSE, NULL, OPR_EQ, OPR_GE, OPR_GT, OPR_LE, OPR_LT, OPR_NE, TRUE, TY_mtype(), wn, and WN_COPY_Tree().

Referenced by cwh_expr_compare().

Here is the call graph for this function:

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, NULL, OPR_ARRAYEXP, wn, 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:

static void cwh_expr_unop ( OPERATOR  op,
TY_IDX  result_ty 
) [static]
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:

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_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_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:


Variable Documentation

char* source_file = __FILE__ [static]

Definition at line 61 of file cwh_expr.cxx.

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines