diff --git a/gcc/fortran/expr.c b/gcc/fortran/expr.c index 7328898..6d0eb22 100644 --- a/gcc/fortran/expr.c +++ b/gcc/fortran/expr.c @@ -4437,9 +4437,9 @@ gfc_find_stat_co(gfc_expr *e) if (ref->type == REF_ARRAY && ref->u.ar.codimen > 0) return ref->u.ar.stat; - if(e->value.function.actual->expr) - for(ref = e->value.function.actual->expr->ref; ref; - ref = ref->next) + if (e->value.function.actual->expr) + for (ref = e->value.function.actual->expr->ref; ref; + ref = ref->next) if (ref->type == REF_ARRAY && ref->u.ar.codimen > 0) return ref->u.ar.stat; diff --git a/gcc/fortran/gfortran.texi b/gcc/fortran/gfortran.texi index 4d288ba..cc80204 100644 --- a/gcc/fortran/gfortran.texi +++ b/gcc/fortran/gfortran.texi @@ -3799,7 +3799,7 @@ compared to the base address of the coarray. number. @item @var{dest} @tab intent(in) Array descriptor for the remote image for the bounds and the size. The base_addr shall not be accessed. -@item @var{dst_vector} @tab intent(int) If not NULL, it contains the vector +@item @var{dst_vector} @tab intent(in) If not NULL, it contains the vector subscript of the destination array; the values are relative to the dimension triplet of the dest argument. @item @var{src} @tab intent(in) Array descriptor of the local array to be @@ -3839,7 +3839,7 @@ Called to get an array section or whole array from a a remote, image identified by the image_index. @item @emph{Syntax}: -@code{void _gfortran_caf_get_desc (caf_token_t token, size_t offset, +@code{void _gfortran_caf_get (caf_token_t token, size_t offset, int image_index, gfc_descriptor_t *src, caf_vector_t *src_vector, gfc_descriptor_t *dest, int src_kind, int dst_kind, bool may_require_tmp)} @@ -3850,13 +3850,13 @@ gfc_descriptor_t *dest, int src_kind, int dst_kind, bool may_require_tmp)} compared to the base address of the coarray. @item @var{image_index} @tab The ID of the remote image; must be a positive number. -@item @var{dest} @tab intent(in) Array descriptor of the local array to be -transferred to the remote image +@item @var{dest} @tab intent(out) Array descriptor of the local array to store +the data transferred from the remote image @item @var{src} @tab intent(in) Array descriptor for the remote image for the bounds and the size. The base_addr shall not be accessed. -@item @var{src_vector} @tab intent(int) If not NULL, it contains the vector -subscript of the destination array; the values are relative to the dimension -triplet of the dest argument. +@item @var{src_vector} @tab intent(in) If not NULL, it contains the vector +subscript of the source array; the values are relative to the dimension +triplet of the src argument. @item @var{dst_kind} @tab Kind of the destination argument @item @var{src_kind} @tab Kind of the source argument @item @var{may_require_tmp} @tab The variable is false it is known at compile diff --git a/gcc/fortran/trans-decl.c b/gcc/fortran/trans-decl.c index 69ddd17..05dfcb4 100644 --- a/gcc/fortran/trans-decl.c +++ b/gcc/fortran/trans-decl.c @@ -3538,38 +3538,38 @@ gfc_build_builtin_function_decls (void) = build_pointer_type (build_pointer_type (pchar_type_node)); gfor_fndecl_caf_init = gfc_build_library_function_decl ( - get_identifier (PREFIX("caf_init")), void_type_node, - 2, pint_type, pppchar_type); + get_identifier (PREFIX("caf_init")), void_type_node, + 2, pint_type, pppchar_type); gfor_fndecl_caf_finalize = gfc_build_library_function_decl ( get_identifier (PREFIX("caf_finalize")), void_type_node, 0); gfor_fndecl_caf_this_image = gfc_build_library_function_decl ( - get_identifier (PREFIX("caf_this_image")), integer_type_node, - 1, integer_type_node); + get_identifier (PREFIX("caf_this_image")), integer_type_node, + 1, integer_type_node); gfor_fndecl_caf_num_images = gfc_build_library_function_decl ( - get_identifier (PREFIX("caf_num_images")), integer_type_node, - 2, integer_type_node, integer_type_node); + get_identifier (PREFIX("caf_num_images")), integer_type_node, + 2, integer_type_node, integer_type_node); gfor_fndecl_caf_register = gfc_build_library_function_decl_with_spec ( get_identifier (PREFIX("caf_register")), "...WWW", pvoid_type_node, 6, - size_type_node, integer_type_node, ppvoid_type_node, pint_type, - pchar_type_node, integer_type_node); + size_type_node, integer_type_node, ppvoid_type_node, pint_type, + pchar_type_node, integer_type_node); gfor_fndecl_caf_deregister = gfc_build_library_function_decl_with_spec ( get_identifier (PREFIX("caf_deregister")), ".WWW", void_type_node, 4, - ppvoid_type_node, pint_type, pchar_type_node, integer_type_node); + ppvoid_type_node, pint_type, pchar_type_node, integer_type_node); gfor_fndecl_caf_get = gfc_build_library_function_decl_with_spec ( - get_identifier (PREFIX("caf_get")), ".R.RRRWW", void_type_node, 10, - pvoid_type_node, size_type_node, integer_type_node, pvoid_type_node, + get_identifier (PREFIX("caf_get")), ".R.RRWRRRW", void_type_node, 10, + pvoid_type_node, size_type_node, integer_type_node, pvoid_type_node, pvoid_type_node, pvoid_type_node, integer_type_node, integer_type_node, boolean_type_node, pint_type); gfor_fndecl_caf_send = gfc_build_library_function_decl_with_spec ( - get_identifier (PREFIX("caf_send")), ".R.RRRRW", void_type_node, 10, - pvoid_type_node, size_type_node, integer_type_node, pvoid_type_node, + get_identifier (PREFIX("caf_send")), ".R.RRRRRRW", void_type_node, 10, + pvoid_type_node, size_type_node, integer_type_node, pvoid_type_node, pvoid_type_node, pvoid_type_node, integer_type_node, integer_type_node, boolean_type_node, pint_type); @@ -3606,31 +3606,31 @@ gfc_build_builtin_function_decls (void) TREE_THIS_VOLATILE (gfor_fndecl_caf_error_stop_str) = 1; gfor_fndecl_caf_stop_numeric = gfc_build_library_function_decl_with_spec ( - get_identifier (PREFIX("caf_stop_numeric")), ".R.", - void_type_node, 1, gfc_int4_type_node); + get_identifier (PREFIX("caf_stop_numeric")), ".R.", + void_type_node, 1, gfc_int4_type_node); /* CAF's STOP doesn't return. */ TREE_THIS_VOLATILE (gfor_fndecl_caf_stop_numeric) = 1; gfor_fndecl_caf_stop_str = gfc_build_library_function_decl_with_spec ( - get_identifier (PREFIX("caf_stop_str")), ".R.", - void_type_node, 2, pchar_type_node, gfc_int4_type_node); + get_identifier (PREFIX("caf_stop_str")), ".R.", + void_type_node, 2, pchar_type_node, gfc_int4_type_node); /* CAF's STOP doesn't return. */ TREE_THIS_VOLATILE (gfor_fndecl_caf_stop_str) = 1; gfor_fndecl_caf_atomic_def = gfc_build_library_function_decl_with_spec ( get_identifier (PREFIX("caf_atomic_define")), "R..RW", void_type_node, 7, pvoid_type_node, size_type_node, integer_type_node, - pvoid_type_node, pint_type, integer_type_node, integer_type_node); + pvoid_type_node, pint_type, integer_type_node, integer_type_node); gfor_fndecl_caf_atomic_ref = gfc_build_library_function_decl_with_spec ( get_identifier (PREFIX("caf_atomic_ref")), "R..WW", void_type_node, 7, pvoid_type_node, size_type_node, integer_type_node, - pvoid_type_node, pint_type, integer_type_node, integer_type_node); + pvoid_type_node, pint_type, integer_type_node, integer_type_node); gfor_fndecl_caf_atomic_cas = gfc_build_library_function_decl_with_spec ( get_identifier (PREFIX("caf_atomic_cas")), "R..WRRW", void_type_node, 9, pvoid_type_node, size_type_node, integer_type_node, - pvoid_type_node, pvoid_type_node, pvoid_type_node, pint_type, + pvoid_type_node, pvoid_type_node, pvoid_type_node, pint_type, integer_type_node, integer_type_node); gfor_fndecl_caf_atomic_op = gfc_build_library_function_decl_with_spec ( @@ -3682,7 +3682,7 @@ gfc_build_builtin_function_decls (void) gfor_fndecl_co_reduce = gfc_build_library_function_decl_with_spec ( get_identifier (PREFIX("caf_co_reduce")), "W.R.WW", void_type_node, 8, pvoid_type_node, - build_pointer_type (build_varargs_function_type_list (void_type_node, + build_pointer_type (build_varargs_function_type_list (void_type_node, NULL_TREE)), integer_type_node, integer_type_node, pint_type, pchar_type_node, integer_type_node, integer_type_node); diff --git a/gcc/fortran/trans-intrinsic.c b/gcc/fortran/trans-intrinsic.c index c655540..abc1c6d 100644 --- a/gcc/fortran/trans-intrinsic.c +++ b/gcc/fortran/trans-intrinsic.c @@ -1122,12 +1122,12 @@ gfc_conv_intrinsic_caf_get (gfc_se *se, gfc_expr *expr, tree lhs, tree lhs_kind, dst_var = lhs; vec = null_pointer_node; - tmp_stat = gfc_find_stat_co(expr); + tmp_stat = gfc_find_stat_co (expr); if (tmp_stat) { gfc_se stat_se; - gfc_init_se(&stat_se, NULL); + gfc_init_se (&stat_se, NULL); gfc_conv_expr_reference (&stat_se, tmp_stat); stat = stat_se.expr; gfc_add_block_to_block (&se->pre, &stat_se.pre); @@ -1225,7 +1225,7 @@ gfc_conv_intrinsic_caf_get (gfc_se *se, gfc_expr *expr, tree lhs, tree lhs_kind, may_require_tmp = boolean_false_node; /* It guarantees memory consistency within the same segment */ - tmp = gfc_build_string_const (strlen ("memory")+1, "memory"), + tmp = gfc_build_string_const (strlen ("memory") + 1, "memory"), tmp = build5_loc (input_location, ASM_EXPR, void_type_node, gfc_build_string_const (1, ""), NULL_TREE, NULL_TREE, tree_cons (NULL_TREE, tmp, NULL_TREE), NULL_TREE); @@ -1390,7 +1390,7 @@ conv_caf_send (gfc_code *code) { rhs_kind = build_int_cst (integer_type_node, rhs_expr->ts.kind); - tmp_stat = gfc_find_stat_co(lhs_expr); + tmp_stat = gfc_find_stat_co (lhs_expr); if (tmp_stat) { @@ -1414,8 +1414,8 @@ conv_caf_send (gfc_code *code) { tree rhs_token, rhs_offset, rhs_image_index; /* It guarantees memory consistency within the same segment */ - tmp = gfc_build_string_const (strlen ("memory")+1, "memory"), - tmp = build5_loc (input_location, ASM_EXPR, void_type_node, + tmp = gfc_build_string_const (strlen ("memory") + 1, "memory"), + tmp = build5_loc (input_location, ASM_EXPR, void_type_node, gfc_build_string_const (1, ""), NULL_TREE, NULL_TREE, tree_cons (NULL_TREE, tmp, NULL_TREE), NULL_TREE); ASM_VOLATILE_P (tmp) = 1; @@ -1438,7 +1438,7 @@ conv_caf_send (gfc_code *code) { gfc_add_block_to_block (&block, &rhs_se.post); /* It guarantees memory consistency within the same segment */ - tmp = gfc_build_string_const (strlen ("memory")+1, "memory"), + tmp = gfc_build_string_const (strlen ("memory") + 1, "memory"), tmp = build5_loc (input_location, ASM_EXPR, void_type_node, gfc_build_string_const (1, ""), NULL_TREE, NULL_TREE, tree_cons (NULL_TREE, tmp, NULL_TREE), NULL_TREE);