diff options
author | Mikael Morin <mikael@gcc.gnu.org> | 2015-08-06 20:47:36 +0000 |
---|---|---|
committer | Mikael Morin <mikael@gcc.gnu.org> | 2015-08-06 20:47:36 +0000 |
commit | ed673c00bfec3dafcd8d37114282c5c0f4c207d8 (patch) | |
tree | 962fd58d54e846aff50066f35696155719afac5c /gcc/fortran/trans-expr.c | |
parent | 0eb6f71c48a4ee9d0c1dc85e31d8c135eb306d98 (diff) | |
download | gcc-ed673c00bfec3dafcd8d37114282c5c0f4c207d8.zip gcc-ed673c00bfec3dafcd8d37114282c5c0f4c207d8.tar.gz gcc-ed673c00bfec3dafcd8d37114282c5c0f4c207d8.tar.bz2 |
Move one condition out of gfc_trans_scalar_assign
* trans.h (gfc_trans_scalar_assign): Remove fourth argument.
* trans-expr.c (gfc_trans_scalar_assign): Merge fourth into sixth
argument.
(gfc_conv_subref_array_arg, gfc_trans_subarray_assign,
gfc_trans_subcomponent_assign, gfc_trans_assignment_1): Update callers.
* trans-array.c (gfc_conv_expr_descriptor): Ditto.
* trans-stmt.c (forall_make_variable_temp,
generate_loop_for_temp_to_lhs, generate_loop_for_rhs_to_temp,
gfc_trans_where_assign, gfc_trans_where_3): Ditto.
From-SVN: r226700
Diffstat (limited to 'gcc/fortran/trans-expr.c')
-rw-r--r-- | gcc/fortran/trans-expr.c | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/gcc/fortran/trans-expr.c b/gcc/fortran/trans-expr.c index af30b55..16ebd20 100644 --- a/gcc/fortran/trans-expr.c +++ b/gcc/fortran/trans-expr.c @@ -4321,7 +4321,7 @@ gfc_conv_subref_array_arg (gfc_se * parmse, gfc_expr * expr, int g77, if (intent != INTENT_OUT) { - tmp = gfc_trans_scalar_assign (&lse, &rse, expr->ts, true, false, true); + tmp = gfc_trans_scalar_assign (&lse, &rse, expr->ts, false, false); gfc_add_expr_to_block (&body, tmp); gcc_assert (rse.ss == gfc_ss_terminator); gfc_trans_scalarizing_loops (&loop, &body); @@ -4428,7 +4428,7 @@ gfc_conv_subref_array_arg (gfc_se * parmse, gfc_expr * expr, int g77, gcc_assert (lse.ss == gfc_ss_terminator); - tmp = gfc_trans_scalar_assign (&lse, &rse, expr->ts, false, false, true); + tmp = gfc_trans_scalar_assign (&lse, &rse, expr->ts, false, true); gfc_add_expr_to_block (&body, tmp); /* Generate the copying loops. */ @@ -6741,7 +6741,7 @@ gfc_trans_subarray_assign (tree dest, gfc_component * cm, gfc_expr * expr) gfc_conv_expr (&rse, expr); - tmp = gfc_trans_scalar_assign (&lse, &rse, cm->ts, true, true, true); + tmp = gfc_trans_scalar_assign (&lse, &rse, cm->ts, true, false); gfc_add_expr_to_block (&body, tmp); gcc_assert (rse.ss == gfc_ss_terminator); @@ -7250,7 +7250,7 @@ gfc_trans_subcomponent_assign (tree dest, gfc_component * cm, gfc_expr * expr, if (cm->ts.type == BT_CHARACTER) lse.string_length = cm->ts.u.cl->backend_decl; lse.expr = dest; - tmp = gfc_trans_scalar_assign (&lse, &se, cm->ts, true, false, true); + tmp = gfc_trans_scalar_assign (&lse, &se, cm->ts, false, false); gfc_add_expr_to_block (&block, tmp); } return gfc_finish_block (&block); @@ -8139,7 +8139,7 @@ gfc_conv_string_parameter (gfc_se * se) tree gfc_trans_scalar_assign (gfc_se * lse, gfc_se * rse, gfc_typespec ts, - bool l_is_temp, bool deep_copy, bool dealloc) + bool deep_copy, bool dealloc) { stmtblock_t block; tree tmp; @@ -8188,7 +8188,7 @@ gfc_trans_scalar_assign (gfc_se * lse, gfc_se * rse, gfc_typespec ts, the same as the rhs. This must be done following the assignment to prevent deallocating data that could be used in the rhs expression. */ - if (!l_is_temp && dealloc) + if (dealloc) { tmp_var = gfc_evaluate_now (lse->expr, &lse->pre); tmp = gfc_deallocate_alloc_comp_no_caf (ts.u.derived, tmp_var, 0); @@ -9270,9 +9270,9 @@ gfc_trans_assignment_1 (gfc_expr * expr1, gfc_expr * expr2, bool init_flag, } tmp = gfc_trans_scalar_assign (&lse, &rse, expr1->ts, - l_is_temp || init_flag, expr_is_variable (expr2) || scalar_to_array - || expr2->expr_type == EXPR_ARRAY, dealloc); + || expr2->expr_type == EXPR_ARRAY, + !(l_is_temp || init_flag) && dealloc); gfc_add_expr_to_block (&body, tmp); if (lss == gfc_ss_terminator) @@ -9313,7 +9313,7 @@ gfc_trans_assignment_1 (gfc_expr * expr1, gfc_expr * expr2, bool init_flag, rse.string_length = string_length; tmp = gfc_trans_scalar_assign (&lse, &rse, expr1->ts, - false, false, dealloc); + false, dealloc); gfc_add_expr_to_block (&body, tmp); } |