From: tobi Date: Sun, 16 Jan 2005 16:16:00 +0000 (+0000) Subject: * trans-intrinsic.c (build_fixbound_expr, X-Git-Tag: upstream/4.9.2~64440 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=6dbb04e366670fdfb29ac83735a80a839f9ff98a;p=platform%2Fupstream%2Flinaro-gcc.git * trans-intrinsic.c (build_fixbound_expr, gfc_conv_intrinsic_bound, gfc_conv_intrinsic_anyall, gfc_conv_intrinsic_count, gfc_conv_intrinsic_btest, gfc_conv_intrinsic_singlebitop): Use 'build_int_cst' instead of converting 'integer_zero_node' or 'integer_one_node' respectively. (gfc_conv_intrinsic_ishftc): Same, but store in local variable to evade re-building. (gfc_conv_intrinsic_strcmp, gfc_conv_intrinsic_rrspacing, gfc_conv_intrinsic_trim, gfc_conv_intrinsic_iargc): Use 'build_int_cst' instead of converting 'integer_zero_node' or 'integer_one_node' respectively. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@93730 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index d9c65b0..1b5858c 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -7,6 +7,19 @@ * trans-types.c (gfc_get_character_type_len): : Use gfc_charlen_type_node as basic type for the range field. + * trans-intrinsic.c (build_fixbound_expr, + gfc_conv_intrinsic_bound, gfc_conv_intrinsic_anyall, + gfc_conv_intrinsic_count, gfc_conv_intrinsic_btest, + gfc_conv_intrinsic_singlebitop): Use 'build_int_cst' instead + of converting 'integer_zero_node' or 'integer_one_node' + respectively. + (gfc_conv_intrinsic_ishftc): Same, but store in local variable to + evade re-building. + (gfc_conv_intrinsic_strcmp, gfc_conv_intrinsic_rrspacing, + gfc_conv_intrinsic_trim, gfc_conv_intrinsic_iargc): Use + 'build_int_cst' instead of converting 'integer_zero_node' or + 'integer_one_node' respectively. + 2005-01-16 Steven G. Kargl PR 19168 diff --git a/gcc/fortran/trans-intrinsic.c b/gcc/fortran/trans-intrinsic.c index e133ec7..c44499f 100644 --- a/gcc/fortran/trans-intrinsic.c +++ b/gcc/fortran/trans-intrinsic.c @@ -235,7 +235,7 @@ build_fixbound_expr (stmtblock_t * pblock, tree arg, tree type, int up) cond = build2 (up ? GE_EXPR : LE_EXPR, boolean_type_node, tmp, arg); tmp = build2 (up ? PLUS_EXPR : MINUS_EXPR, type, intval, - convert (type, integer_one_node)); + build_int_cst (type, 1)); tmp = build3 (COND_EXPR, type, cond, intval, tmp); return tmp; } @@ -684,8 +684,7 @@ gfc_conv_intrinsic_bound (gfc_se * se, gfc_expr * expr, int upper) { bound = gfc_evaluate_now (bound, &se->pre); cond = fold (build2 (LT_EXPR, boolean_type_node, - bound, convert (TREE_TYPE (bound), - integer_zero_node))); + bound, build_int_cst (TREE_TYPE (bound), 0))); tmp = gfc_rank_cst[GFC_TYPE_ARRAY_RANK (TREE_TYPE (desc))]; tmp = fold (build2 (GE_EXPR, boolean_type_node, bound, tmp)); cond = fold(build2 (TRUTH_ORIF_EXPR, boolean_type_node, cond, tmp)); @@ -1172,8 +1171,7 @@ gfc_conv_intrinsic_anyall (gfc_se * se, gfc_expr * expr, int op) gfc_add_block_to_block (&body, &arrayse.pre); tmp = build2 (op, boolean_type_node, arrayse.expr, - fold_convert (TREE_TYPE (arrayse.expr), - integer_zero_node)); + build_int_cst (TREE_TYPE (arrayse.expr), 0)); tmp = build3_v (COND_EXPR, tmp, found, build_empty_stmt ()); gfc_add_expr_to_block (&body, tmp); gfc_add_block_to_block (&body, &arrayse.post); @@ -1215,7 +1213,7 @@ gfc_conv_intrinsic_count (gfc_se * se, gfc_expr * expr) type = gfc_typenode_for_spec (&expr->ts); /* Initialize the result. */ resvar = gfc_create_var (type, "count"); - gfc_add_modify_expr (&se->pre, resvar, convert (type, integer_zero_node)); + gfc_add_modify_expr (&se->pre, resvar, build_int_cst (type, 0)); /* Walk the arguments. */ arrayss = gfc_walk_expr (actual->expr); @@ -1234,7 +1232,7 @@ gfc_conv_intrinsic_count (gfc_se * se, gfc_expr * expr) gfc_start_scalarized_body (&loop, &body); tmp = build2 (PLUS_EXPR, TREE_TYPE (resvar), resvar, - convert (TREE_TYPE (resvar), integer_one_node)); + build_int_cst (TREE_TYPE (resvar), 1)); tmp = build2_v (MODIFY_EXPR, resvar, tmp); gfc_init_se (&arrayse, NULL); @@ -1670,10 +1668,10 @@ gfc_conv_intrinsic_btest (gfc_se * se, gfc_expr * expr) arg = TREE_VALUE (arg); type = TREE_TYPE (arg); - tmp = build2 (LSHIFT_EXPR, type, convert (type, integer_one_node), arg2); + tmp = build2 (LSHIFT_EXPR, type, build_int_cst (type, 1), arg2); tmp = build2 (BIT_AND_EXPR, type, arg, tmp); tmp = fold (build2 (NE_EXPR, boolean_type_node, tmp, - convert (type, integer_zero_node))); + build_int_cst (type, 0))); type = gfc_typenode_for_spec (&expr->ts); se->expr = convert (type, tmp); } @@ -1721,8 +1719,7 @@ gfc_conv_intrinsic_singlebitop (gfc_se * se, gfc_expr * expr, int set) arg = TREE_VALUE (arg); type = TREE_TYPE (arg); - tmp = fold (build2 (LSHIFT_EXPR, type, - convert (type, integer_one_node), arg2)); + tmp = fold (build2 (LSHIFT_EXPR, type, build_int_cst (type, 1), arg2)); if (set) op = BIT_IOR_EXPR; else @@ -1823,6 +1820,7 @@ gfc_conv_intrinsic_ishftc (gfc_se * se, gfc_expr * expr) tree tmp; tree lrot; tree rrot; + tree zero; arg = gfc_conv_intrinsic_function_args (se, expr); arg2 = TREE_CHAIN (arg); @@ -1880,13 +1878,12 @@ gfc_conv_intrinsic_ishftc (gfc_se * se, gfc_expr * expr) tmp = fold (build1 (NEGATE_EXPR, TREE_TYPE (arg2), arg2)); rrot = fold (build2 (RROTATE_EXPR, type, arg, tmp)); - tmp = fold (build2 (GT_EXPR, boolean_type_node, arg2, - convert (TREE_TYPE (arg2), integer_zero_node))); + zero = build_int_cst (TREE_TYPE (arg2), 0); + tmp = fold (build2 (GT_EXPR, boolean_type_node, arg2, zero)); rrot = fold (build3 (COND_EXPR, type, tmp, lrot, rrot)); /* Do nothing if shift == 0. */ - tmp = fold (build2 (EQ_EXPR, boolean_type_node, arg2, - convert (TREE_TYPE (arg2), integer_zero_node))); + tmp = fold (build2 (EQ_EXPR, boolean_type_node, arg2, zero)); se->expr = fold (build3 (COND_EXPR, type, tmp, arg, rrot)); } @@ -2097,7 +2094,7 @@ gfc_conv_intrinsic_strcmp (gfc_se * se, gfc_expr * expr, int op) type = gfc_typenode_for_spec (&expr->ts); se->expr = build2 (op, type, se->expr, - convert (TREE_TYPE (se->expr), integer_zero_node)); + build_int_cst (TREE_TYPE (se->expr), 0)); } /* Generate a call to the adjustl/adjustr library function. */ @@ -2529,7 +2526,7 @@ gfc_conv_intrinsic_rrspacing (gfc_se * se, gfc_expr * expr) cond2 = build2 (EQ_EXPR, boolean_type_node, rcs.frac, zero); cond = build2 (TRUTH_ANDIF_EXPR, boolean_type_node, cond, cond2); tmp = build3 (COND_EXPR, masktype, cond, - convert (masktype, integer_zero_node), tmp); + build_int_cst (masktype, 0), tmp); tmp = build1 (VIEW_CONVERT_EXPR, rcs.type, tmp); se->expr = tmp; @@ -2608,7 +2605,7 @@ gfc_conv_intrinsic_trim (gfc_se * se, gfc_expr * expr) /* Free the temporary afterwards, if necessary. */ cond = build2 (GT_EXPR, boolean_type_node, len, - convert (TREE_TYPE (len), integer_zero_node)); + build_int_cst (TREE_TYPE (len), 0)); arglist = gfc_chainon_list (NULL_TREE, var); tmp = gfc_build_function_call (gfor_fndecl_internal_free, arglist); tmp = build3_v (COND_EXPR, cond, tmp, build_empty_stmt ()); @@ -2671,7 +2668,7 @@ gfc_conv_intrinsic_iargc (gfc_se * se, gfc_expr * expr, bool args_only) tmp = fold_convert (type, tmp); if (args_only) - tmp = build2 (MINUS_EXPR, type, tmp, convert (type, integer_one_node)); + tmp = build2 (MINUS_EXPR, type, tmp, build_int_cst (type, 1)); se->expr = tmp; }