Home | History | Annotate | Download | only in fortran

Lines Matching refs:rse

1773 trans_scalar_class_assign (stmtblock_t *block, gfc_se *lse, gfc_se *rse)
1784 bool not_call_expr = TREE_CODE (rse->expr) != CALL_EXPR;
1804 && GFC_CLASS_TYPE_P (TREE_TYPE (rse->expr)))
1808 if (!GFC_CLASS_TYPE_P (TREE_TYPE (rse->expr))
1811 tmp = gfc_get_class_from_expr (rse->expr);
1817 rse_expr = gfc_evaluate_now (rse->expr, block);
1835 tmp = gfc_evaluate_now (gfc_build_addr_expr (NULL, rse->expr), block);
3377 gfc_se rse;
3385 gfc_init_se (&rse, se);
3386 gfc_conv_expr_val (&rse, expr->value.op.op2);
3387 gfc_add_block_to_block (&se->pre, &rse.pre);
3391 if (gfc_conv_cst_int_power (se, lse.expr, rse.expr))
3395 && TREE_CODE (TREE_TYPE (rse.expr)) == INTEGER_TYPE)
3422 rse.expr, build_int_cst (type, 1));
3448 shift = rse.expr;
3451 TREE_TYPE (rse.expr),
3452 rse.expr, rse.expr);
3458 TREE_TYPE (rse.expr),
3459 build_int_cst (TREE_TYPE (rse.expr), e),
3460 rse.expr);
3466 rse.expr, build_int_cst (type, 0));
3469 num_bits = build_int_cst (TREE_TYPE (rse.expr), TYPE_PRECISION (type));
3471 rse.expr, num_bits);
3483 rse.expr, build_int_cst (type, 1));
3513 rse.expr = convert (gfc_int4_type_node, rse.expr);
3632 fndecl, 2, lse.expr, rse.expr);
3699 gfc_se lse, rse;
3709 gfc_init_se (&rse, se);
3710 gfc_conv_expr (&rse, expr->value.op.op2);
3711 gfc_conv_string_parameter (&rse);
3714 gfc_add_block_to_block (&se->pre, &rse.pre);
3725 rse.string_length));
3742 rse.string_length, rse.expr);
3746 gfc_add_block_to_block (&se->pre, &rse.post);
3766 gfc_se rse;
3905 gfc_init_se (&rse, se);
3906 gfc_conv_expr (&rse, expr->value.op.op2);
3907 gfc_add_block_to_block (&se->pre, &rse.pre);
3912 gfc_conv_string_parameter (&rse);
3915 rse.string_length, rse.expr,
3918 rse.expr = build_int_cst (TREE_TYPE (lse.expr), 0);
3919 gfc_add_block_to_block (&lse.post, &rse.post);
3937 TREE_THIS_VOLATILE (rse.expr) = 1;
3941 lse.expr, rse.expr);
3945 se->expr = fold_build2_loc (input_location, code, type, lse.expr, rse.expr);
3948 gfc_add_block_to_block (&se->post, &rse.post);
4911 gfc_se rse;
4957 gfc_init_se (&rse, NULL);
5002 gfc_copy_loopinfo_to_se (&rse, &loop);
5004 rse.ss = rss;
5013 gfc_conv_expr (&rse, expr);
5029 tmp = gfc_trans_scalar_assign (&lse, &rse, expr->ts, false, false);
5031 gcc_assert (rse.ss == gfc_ss_terminator);
5053 gfc_init_se (&rse, NULL);
5057 rse.ss = loop.temp_ss;
5064 dimen = rse.ss->dimen;
5077 gfc_copy_loopinfo_to_se (&rse, &loop2);
5092 info = &rse.ss->info->data.array;
5098 tmp = rse.loop->loopvar[n];
5100 tmp, rse.loop->from[n]);
5106 rse.loop->to[n-1], rse.loop->from[n-1]);
5117 tmp_index, rse.loop->from[0]);
5118 gfc_add_modify (&rse.loop->code[0], offset, tmp_index);
5122 rse.loop->loopvar[0], offset);
5127 rse.expr = gfc_build_array_ref (tmp, tmp_index, NULL);
5130 rse.string_length = expr->ts.u.cl->backend_decl;
5136 tmp = gfc_trans_scalar_assign (&lse, &rse, expr->ts, false, true);
5190 rse.loop->to[n], rse.loop->from[n]);
8210 gfc_se rse;
8220 gfc_init_se (&rse, NULL);
8254 gfc_conv_expr (&rse, args->expr);
8255 gfc_conv_string_parameter (&rse);
8257 gfc_add_block_to_block (&se->pre, &rse.pre);
8260 rse.string_length, rse.expr, fsym->ts.kind);
8262 gfc_add_block_to_block (&se->pre, &rse.post);
8509 gfc_se rse;
8526 gfc_init_se (&rse, NULL);
8565 gfc_copy_loopinfo_to_se (&rse, &loop);
8567 rse.ss = rss;
8579 gfc_conv_expr (&rse, expr);
8581 tmp = gfc_trans_scalar_assign (&lse, &rse, cm->ts, true, false);
8584 gcc_assert (rse.ss == gfc_ss_terminator);
9661 depends on the scalarized expression, it is added to RSE.PRE.
9668 gfc_expr * re, gfc_se *rse,
9680 && rse->expr != NULL_TREE && !DECL_P (rse->expr))
9682 if (re->ts.type == BT_CLASS && !GFC_CLASS_TYPE_P (TREE_TYPE (rse->expr)))
9683 class_expr = gfc_get_class_from_expr (rse->expr);
9685 if (rse->loop)
9686 pre = &rse->loop->pre;
9688 pre = &rse->pre;
9692 tmp = TREE_OPERAND (rse->expr, 0);
9694 gfc_add_modify (&rse->pre, tmp, TREE_OPERAND (rse->expr, 0));
9698 tmp = gfc_create_var (TREE_TYPE (rse->expr), "rhs");
9699 gfc_add_modify (&rse->pre, tmp, rse->expr);
9702 rse->expr = tmp;
9771 else if (!GFC_CLASS_TYPE_P (TREE_TYPE (rse->expr)))
9772 tmp = gfc_get_class_from_expr (rse->expr);
9774 tmp = rse->expr;
9808 if (rse->string_length != NULL_TREE)
9809 from_len = rse->string_length;
9838 trans_caf_token_assign (gfc_se *lse, gfc_se *rse, gfc_expr *expr1,
9856 rhs_tok = gfc_get_ultimate_alloc_ptr_comps_caf_token (rse, expr2);
9861 gfc_get_caf_token_offset (rse, &rhs_tok, NULL, caf_decl,
9884 trans_class_pointer_fcn (stmtblock_t *block, gfc_se *lse, gfc_se *rse,
9890 gfc_conv_function_expr (rse, expr2);
9891 rse->expr = gfc_evaluate_now (rse->expr, &rse->pre);
9894 rse->expr = gfc_class_data_get (rse->expr);
9898 expr2, rse,
9900 gfc_add_block_to_block (block, &rse->pre);
9901 tmp = gfc_create_var (TREE_TYPE (rse->expr), "ptrtemp");
9902 gfc_add_modify (&lse->pre, tmp, rse->expr);
9907 rse->expr = gfc_class_data_get (tmp);
9927 gfc_se rse;
9965 gfc_init_se (&rse, NULL);
9966 rse.want_pointer = 1;
9968 trans_class_pointer_fcn (&block, &lse, &rse, expr1, expr2);
9970 gfc_conv_expr (&rse, expr2);
9974 trans_class_vptr_len_assignment (&block, expr1, expr2, &rse, NULL,
9986 rse.expr = build_fold_indirect_ref_loc (input_location,
9987 rse.expr);
9990 gfc_add_block_to_block (&block, &rse.pre);
10001 gcc_assert (lse.string_length && rse.string_length);
10003 lse.string_length, rse.string_length,
10014 rse.string_length));
10021 fold_convert (TREE_TYPE (lse.expr), rse.expr));
10026 trans_caf_token_assign (&lse, &rse, expr1, expr2);
10028 gfc_add_block_to_block (&block, &rse.post);
10071 gfc_init_se (&rse, NULL);
10072 rse.direct_byref = 1;
10073 rse.byref_noassign = 1;
10076 expr1_vptr = trans_class_pointer_fcn (&block, &lse, &rse,
10090 rse.descriptor_only = 0;
10091 rse.expr = tmp;
10092 rse.direct_byref = 1;
10093 gfc_conv_expr_descriptor (&rse, expr2);
10094 strlen_rhs = rse.string_length;
10095 rse.expr = tmp;
10099 gfc_conv_expr_descriptor (&rse, expr2);
10100 strlen_rhs = rse.string_length;
10103 expr2, &rse,
10114 gfc_init_se (&rse, NULL);
10118 rse.expr = NULL_TREE;
10119 rse.string_length = strlen_rhs;
10120 trans_class_vptr_len_assignment (&block, expr1, expr2, &rse,
10137 gfc_init_se (&rse, NULL);
10138 rse.want_pointer = 1;
10139 gfc_conv_function_expr (&rse, expr2);
10142 rse.expr = gfc_class_data_get (rse.expr);
10143 gfc_add_modify (&lse.pre, desc, rse.expr);
10145 tmp = TREE_TYPE (rse.expr);
10153 expr2, &rse, NULL,
10155 gfc_add_block_to_block (&block, &rse.pre);
10156 tmp = gfc_create_var (TREE_TYPE (rse.expr), "ptrtemp");
10157 gfc_add_modify (&lse.pre, tmp, rse.expr);
10162 rse.expr = gfc_class_data_get (tmp);
10163 gfc_add_modify (&lse.pre, desc, rse.expr);
10194 gfc_add_block_to_block (&block, &rse.pre);
10205 converted in rse and now have to build the correct LHS
10218 data = gfc_conv_descriptor_data_get (rse.expr);
10222 if (TREE_CODE (rse.expr) == VAR_DECL
10223 && GFC_DECL_PTR_ARRAY_P (rse.expr))
10224 span = gfc_conv_descriptor_span_get (rse.expr);
10227 tmp = TREE_TYPE (rse.expr);
10235 offs = gfc_conv_descriptor_offset_get (rse.expr);
10238 stride = gfc_conv_descriptor_stride_get (rse.expr,
10240 lbound = gfc_conv_descriptor_lbound_get (rse.expr,
10251 stride = gfc_conv_descriptor_stride_get (rse.expr,
10342 rsize = gfc_conv_descriptor_size (rse.expr, expr2->rank);
10366 gfc_add_block_to_block (&block, &rse.post);
10438 gfc_trans_scalar_assign (gfc_se * lse, gfc_se * rse, gfc_typespec ts,
10459 if (rse
10461 gfc_conv_string_parameter (rse);
10462 gfc_add_block_to_block (&block, &rse->pre);
10463 rlen = rse->string_length;
10467 rse->expr, ts.kind);
10481 gfc_build_addr_expr (NULL_TREE, rse->expr));
10499 gfc_add_block_to_block (&block, &rse->pre);
10503 fold_convert (TREE_TYPE (lse->expr), rse->expr));
10520 tmp = gfc_copy_alloc_comp (ts.u.derived, rse->expr, lse->expr, 0,
10530 gfc_add_block_to_block (&block, &rse->pre);
10532 TREE_TYPE (lse->expr), rse->expr);
10539 gfc_add_block_to_block (&block, &rse->pre);
10541 if (!trans_scalar_class_assign (&block, lse, rse))
10547 TREE_TYPE (rse->expr), lse->expr);
10548 gfc_add_modify (&block, tmp, rse->expr);
10554 gfc_add_block_to_block (&block, &rse->pre);
10557 fold_convert (TREE_TYPE (lse->expr), rse->expr));
10561 gfc_add_block_to_block (&block, &rse->post);
11451 gfc_se *lse, gfc_se *rse, bool use_vptr_copy,
11466 vptr = trans_class_vptr_len_assignment (block, lhs, rhs, rse, &to_len,
11517 tmp = GFC_CLASS_TYPE_P (TREE_TYPE (rse->expr))
11518 ? gfc_class_data_get (rse->expr) : rse->expr;
11599 gfc_se rse;
11620 gfc_init_se (&rse, NULL);
11712 gfc_copy_loopinfo_to_se (&rse, &loop);
11714 rse.ss = rss;
11746 rse.want_coarray = flag_coarray == GFC_FCOARRAY_LIB && init_flag
11748 gfc_conv_expr (&rse, expr2);
11754 rse.expr = gfc_class_data_get (rse.expr);
11755 rse.expr = build_fold_indirect_ref_loc (input_location, rse.expr);
11760 && !(VAR_P (rse.string_length)
11761 || TREE_CODE (rse.string_length) == PARM_DECL
11762 || TREE_CODE (rse.string_length) == INDIRECT_REF))
11763 string_length = gfc_evaluate_now (rse.string_length, &rse.pre);
11769 rse.string_length =
11770 gfc_evaluate_now_function_scope (rse.string_length, &rse.pre);
11771 string_length = rse.string_length;
11854 tmp = gfc_deallocate_alloc_comp_no_caf (expr2->ts.u.derived, rse.expr, 0);
11882 gfc_add_block_to_block (&block, &rse.pre);
11894 tmp = gfc_nullify_alloc_comp (expr1->ts.u.derived, rse.expr, 0);
11895 gfc_prepend_expr_to_block (&rse.post, tmp);
11897 gfc_add_block_to_block (&loop.post, &rse.post);
11904 tmp = trans_class_assignment (&body, expr1, expr2, &lse, &rse,
11914 rse.expr, expr2->rank);
11916 gfc_add_expr_to_block (&rse.post, tmp2);
11952 tmp = gfc_get_vptr_from_expr (rse.expr);
11960 gfc_build_addr_expr (NULL, rse.expr),
11967 tmp = gfc_trans_scalar_assign (&lse, &rse, expr1->ts,
11975 gfc_add_block_to_block (&body, &rse.pre);
11979 gfc_add_block_to_block (&body, &rse.post);
11996 && rse.ss == gfc_ss_terminator);
12004 gfc_init_se (&rse, NULL);
12006 gfc_copy_loopinfo_to_se (&rse, &loop);
12008 rse.ss = loop.temp_ss;
12011 gfc_conv_tmp_array_ref (&rse);
12015 && rse.ss == gfc_ss_terminator);
12018 rse.string_length = string_length;
12020 tmp = gfc_trans_scalar_assign (&lse, &rse, expr1->ts,