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);
+ tmp = build_call_expr (iocall[IOCALL_OPEN], 1, tmp);
gfc_add_expr_to_block (&block, tmp);
gfc_add_block_to_block (&block, &post_block);
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);
+ tmp = build_call_expr (iocall[IOCALL_CLOSE], 1, tmp);
gfc_add_expr_to_block (&block, tmp);
gfc_add_block_to_block (&block, &post_block);
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);
+ tmp = build_call_expr (function, 1, tmp);
gfc_add_expr_to_block (&block, tmp);
gfc_add_block_to_block (&block, &post_block);
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);
+ tmp = build_call_expr (iocall[IOCALL_INQUIRE], 1, tmp);
gfc_add_expr_to_block (&block, tmp);
gfc_add_block_to_block (&block, &post_block);
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
tree dt = NULL;
tree string;
tree tmp;
- tree args;
tree dtype;
tree dt_parm_addr;
int n_dim;
(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);
+ tmp = ts->cl->backend_decl;
else
- NML_ADD_ARG (build_int_cst (gfc_charlen_type_node, 0));
-
- NML_ADD_ARG (dtype);
- tmp = build_function_call_expr (iocall[IOCALL_SET_NML_VAL], args);
+ tmp = build_int_cst (gfc_charlen_type_node, 0);
+ 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:
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);
+ 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);
}
}
#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
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);
+ tmp = build_call_expr (function, 1, tmp);
gfc_add_expr_to_block (&block, tmp);
gfc_add_block_to_block (&block, &post_block);
}
tmp = build_fold_addr_expr (dt_parm);
- tmp = gfc_chainon_list (NULL_TREE, tmp);
- tmp = build_function_call_expr (function, tmp);
+ 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);
static void
transfer_expr (gfc_se * se, gfc_typespec * ts, tree addr_expr)
{
- tree args, tmp, function, arg2, field, expr;
+ tree tmp, function, arg2, field, expr;
gfc_component *c;
int 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, arg2);
-
- tmp = build_function_call_expr (function, args);
+ 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);
static void
transfer_array_desc (gfc_se * se, gfc_typespec * ts, tree addr_expr)
{
- tree args, tmp, charlen_arg, kind_arg;
+ tree tmp, charlen_arg, kind_arg;
if (ts->type == BT_CHARACTER)
charlen_arg = se->string_length;
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);
+ 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);
}