This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[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);
  }

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]