This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[lto] PATCH: CALL_EXPR changes to gcc/fortran/trans-io.c
- From: Sandra Loosemore <sandra at codesourcery dot com>
- To: GCC Patches <gcc-patches at gcc dot gnu dot org>
- Date: Fri, 21 Jul 2006 21:09:29 -0400
- Subject: [lto] PATCH: CALL_EXPR changes to gcc/fortran/trans-io.c
Already committed as "obvious".
2006-07-21 Sandra Loosemore <sandra@codesourcery.com>
* gcc/fortran/trans-io.c (gfc_trans_open): Use build_call_expr.
(gfc_trans_close): Likewise.
(build_filepos): Likewise.
(gfc_trans_inquire): Likewise.
(transfer_namelist_element): Likewise.
(build_dt): Likewise.
(gfc_trans_dt_end): Likewise.
(transfer_expr): Likewise.
(transfer_array_desc): Likewise.
Index: gcc/fortran/trans-io.c
===================================================================
*** gcc/fortran/trans-io.c (revision 115645)
--- gcc/fortran/trans-io.c (working copy)
*************** gfc_trans_open (gfc_code * code)
*** 806,813 ****
set_parameter_const (&block, var, IOPARM_common_flags, mask);
tmp = build_fold_addr_expr (var);
! tmp = gfc_chainon_list (NULL_TREE, tmp);
! tmp = build_function_call_expr (iocall[IOCALL_OPEN], tmp);
gfc_add_expr_to_block (&block, tmp);
gfc_add_block_to_block (&block, &post_block);
--- 806,812 ----
set_parameter_const (&block, var, IOPARM_common_flags, mask);
tmp = build_fold_addr_expr (var);
! tmp = build_call_expr (iocall[IOCALL_OPEN], 1, tmp);
gfc_add_expr_to_block (&block, tmp);
gfc_add_block_to_block (&block, &post_block);
*************** gfc_trans_close (gfc_code * code)
*** 859,866 ****
set_parameter_const (&block, var, IOPARM_common_flags, mask);
tmp = build_fold_addr_expr (var);
! tmp = gfc_chainon_list (NULL_TREE, tmp);
! tmp = build_function_call_expr (iocall[IOCALL_CLOSE], tmp);
gfc_add_expr_to_block (&block, tmp);
gfc_add_block_to_block (&block, &post_block);
--- 858,864 ----
set_parameter_const (&block, var, IOPARM_common_flags, mask);
tmp = build_fold_addr_expr (var);
! tmp = build_call_expr (iocall[IOCALL_CLOSE], 1, tmp);
gfc_add_expr_to_block (&block, tmp);
gfc_add_block_to_block (&block, &post_block);
*************** build_filepos (tree function, gfc_code *
*** 910,917 ****
set_parameter_const (&block, var, IOPARM_common_flags, mask);
tmp = build_fold_addr_expr (var);
! tmp = gfc_chainon_list (NULL_TREE, tmp);
! tmp = build_function_call_expr (function, tmp);
gfc_add_expr_to_block (&block, tmp);
gfc_add_block_to_block (&block, &post_block);
--- 908,914 ----
set_parameter_const (&block, var, IOPARM_common_flags, mask);
tmp = build_fold_addr_expr (var);
! tmp = build_call_expr (function, 1, tmp);
gfc_add_expr_to_block (&block, tmp);
gfc_add_block_to_block (&block, &post_block);
*************** gfc_trans_inquire (gfc_code * code)
*** 1092,1099 ****
set_parameter_const (&block, var, IOPARM_common_flags, mask);
tmp = build_fold_addr_expr (var);
! tmp = gfc_chainon_list (NULL_TREE, tmp);
! tmp = build_function_call_expr (iocall[IOCALL_INQUIRE], tmp);
gfc_add_expr_to_block (&block, tmp);
gfc_add_block_to_block (&block, &post_block);
--- 1089,1095 ----
set_parameter_const (&block, var, IOPARM_common_flags, mask);
tmp = build_fold_addr_expr (var);
! tmp = build_call_expr (iocall[IOCALL_INQUIRE], 1, tmp);
gfc_add_expr_to_block (&block, tmp);
gfc_add_block_to_block (&block, &post_block);
*************** nml_get_addr_expr (gfc_symbol * sym, gfc
*** 1215,1222 ****
call to iocall[IOCALL_SET_NML_VAL]. For derived type variable, recursively
generate calls to iocall[IOCALL_SET_NML_VAL] for each component. */
- #define NML_FIRST_ARG(a) args = gfc_chainon_list (NULL_TREE, a)
- #define NML_ADD_ARG(a) args = gfc_chainon_list (args, a)
#define IARG(i) build_int_cst (gfc_array_index_type, i)
static void
--- 1211,1216 ----
*************** transfer_namelist_element (stmtblock_t *
*** 1230,1236 ****
tree dt = NULL;
tree string;
tree tmp;
- tree args;
tree dtype;
tree dt_parm_addr;
int n_dim;
--- 1224,1229 ----
*************** transfer_namelist_element (stmtblock_t *
*** 1296,1313 ****
(address, name, type, kind or string_length, dtype) */
dt_parm_addr = build_fold_addr_expr (dt_parm);
- NML_FIRST_ARG (dt_parm_addr);
- NML_ADD_ARG (addr_expr);
- NML_ADD_ARG (string);
- NML_ADD_ARG (IARG (ts->kind));
if (ts->type == BT_CHARACTER)
! NML_ADD_ARG (ts->cl->backend_decl);
else
! NML_ADD_ARG (convert (gfc_charlen_type_node, integer_zero_node));
!
! NML_ADD_ARG (dtype);
! tmp = build_function_call_expr (iocall[IOCALL_SET_NML_VAL], args);
gfc_add_expr_to_block (block, tmp);
/* If the object is an array, transfer rank times:
--- 1289,1302 ----
(address, name, type, kind or string_length, dtype) */
dt_parm_addr = build_fold_addr_expr (dt_parm);
if (ts->type == BT_CHARACTER)
! tmp = ts->cl->backend_decl;
else
! tmp = convert (gfc_charlen_type_node, integer_zero_node);
! tmp = build_call_expr (iocall[IOCALL_SET_NML_VAL], 6,
! dt_parm_addr, addr_expr, string,
! IARG (ts->kind), tmp, dtype);
gfc_add_expr_to_block (block, tmp);
/* If the object is an array, transfer rank times:
*************** transfer_namelist_element (stmtblock_t *
*** 1315,1326 ****
for ( n_dim = 0 ; n_dim < rank ; n_dim++ )
{
! NML_FIRST_ARG (dt_parm_addr);
! NML_ADD_ARG (IARG (n_dim));
! NML_ADD_ARG (GFC_TYPE_ARRAY_STRIDE (dt, n_dim));
! NML_ADD_ARG (GFC_TYPE_ARRAY_LBOUND (dt, n_dim));
! NML_ADD_ARG (GFC_TYPE_ARRAY_UBOUND (dt, n_dim));
! tmp = build_function_call_expr (iocall[IOCALL_SET_NML_VAL_DIM], args);
gfc_add_expr_to_block (block, tmp);
}
--- 1304,1315 ----
for ( n_dim = 0 ; n_dim < rank ; n_dim++ )
{
! tmp = build_call_expr (iocall[IOCALL_SET_NML_VAL_DIM], 5,
! dt_parm_addr,
! IARG (n_dim),
! GFC_TYPE_ARRAY_STRIDE (dt, n_dim),
! GFC_TYPE_ARRAY_LBOUND (dt, n_dim),
! GFC_TYPE_ARRAY_UBOUND (dt, n_dim));
gfc_add_expr_to_block (block, tmp);
}
*************** transfer_namelist_element (stmtblock_t *
*** 1344,1351 ****
}
#undef IARG
- #undef NML_ADD_ARG
- #undef NML_FIRST_ARG
/* Create a data transfer statement. Not all of the fields are valid
for both reading and writing, but improper use has been filtered
--- 1333,1338 ----
*************** build_dt (tree function, gfc_code * code
*** 1474,1481 ****
set_parameter_const (&block, var, IOPARM_common_flags, mask);
tmp = build_fold_addr_expr (var);
! tmp = gfc_chainon_list (NULL_TREE, tmp);
! tmp = build_function_call_expr (function, tmp);
gfc_add_expr_to_block (&block, tmp);
gfc_add_block_to_block (&block, &post_block);
--- 1461,1467 ----
set_parameter_const (&block, var, IOPARM_common_flags, mask);
tmp = build_fold_addr_expr (var);
! tmp = build_call_expr (function, 1, tmp);
gfc_add_expr_to_block (&block, tmp);
gfc_add_block_to_block (&block, &post_block);
*************** gfc_trans_dt_end (gfc_code * code)
*** 1553,1560 ****
}
tmp = build_fold_addr_expr (dt_parm);
! tmp = gfc_chainon_list (NULL_TREE, tmp);
! tmp = build_function_call_expr (function, tmp);
gfc_add_expr_to_block (&block, tmp);
gfc_add_block_to_block (&block, dt_post_end_block);
gfc_init_block (dt_post_end_block);
--- 1539,1545 ----
}
tmp = build_fold_addr_expr (dt_parm);
! tmp = build_call_expr (function, 1, tmp);
gfc_add_expr_to_block (&block, tmp);
gfc_add_block_to_block (&block, dt_post_end_block);
gfc_init_block (dt_post_end_block);
*************** transfer_array_component (tree expr, gfc
*** 1665,1671 ****
static void
transfer_expr (gfc_se * se, gfc_typespec * ts, tree addr_expr)
{
! tree args, tmp, function, arg2, field, expr;
gfc_component *c;
int kind;
--- 1650,1656 ----
static void
transfer_expr (gfc_se * se, gfc_typespec * ts, tree addr_expr)
{
! tree tmp, function, arg2, field, expr;
gfc_component *c;
int kind;
*************** transfer_expr (gfc_se * se, gfc_typespec
*** 1739,1749 ****
}
tmp = build_fold_addr_expr (dt_parm);
! args = gfc_chainon_list (NULL_TREE, tmp);
! args = gfc_chainon_list (args, addr_expr);
! args = gfc_chainon_list (args, arg2);
!
! tmp = build_function_call_expr (function, args);
gfc_add_expr_to_block (&se->pre, tmp);
gfc_add_block_to_block (&se->pre, &se->post);
--- 1724,1730 ----
}
tmp = build_fold_addr_expr (dt_parm);
! tmp = build_call_expr (function, 3, tmp, addr_expr, arg2);
gfc_add_expr_to_block (&se->pre, tmp);
gfc_add_block_to_block (&se->pre, &se->post);
*************** transfer_expr (gfc_se * se, gfc_typespec
*** 1756,1762 ****
static void
transfer_array_desc (gfc_se * se, gfc_typespec * ts, tree addr_expr)
{
! tree args, tmp, charlen_arg, kind_arg;
if (ts->type == BT_CHARACTER)
charlen_arg = se->string_length;
--- 1737,1743 ----
static void
transfer_array_desc (gfc_se * se, gfc_typespec * ts, tree addr_expr)
{
! tree tmp, charlen_arg, kind_arg;
if (ts->type == BT_CHARACTER)
charlen_arg = se->string_length;
*************** transfer_array_desc (gfc_se * se, gfc_ty
*** 1766,1776 ****
kind_arg = build_int_cst (NULL_TREE, ts->kind);
tmp = build_fold_addr_expr (dt_parm);
! args = gfc_chainon_list (NULL_TREE, tmp);
! args = gfc_chainon_list (args, addr_expr);
! args = gfc_chainon_list (args, kind_arg);
! args = gfc_chainon_list (args, charlen_arg);
! tmp = build_function_call_expr (iocall[IOCALL_X_ARRAY], args);
gfc_add_expr_to_block (&se->pre, tmp);
gfc_add_block_to_block (&se->pre, &se->post);
}
--- 1747,1754 ----
kind_arg = build_int_cst (NULL_TREE, ts->kind);
tmp = build_fold_addr_expr (dt_parm);
! tmp = build_call_expr (iocall[IOCALL_X_ARRAY], 4,
! tmp, addr_expr, kind_arg, charlen_arg);
gfc_add_expr_to_block (&se->pre, tmp);
gfc_add_block_to_block (&se->pre, &se->post);
}