From 61fad608d4ccacdccacec499f8b3fbe73a125c70 Mon Sep 17 00:00:00 2001 From: Andre Vehreschild Date: Sun, 11 Feb 2018 19:59:59 +0100 Subject: [PATCH] gfortran.texi: Fix typos in documentation of caf_register (). gcc/fortran/ChangeLog: 2018-02-11 Andre Vehreschild * gfortran.texi: Fix typos in documentation of caf_register (). * trans-array.c (structure_alloc_comps): Only register a component of a derived typed corray, not of an ultimate component coarray. From-SVN: r257567 --- gcc/fortran/ChangeLog | 6 ++++++ gcc/fortran/gfortran.texi | 16 ++++++++-------- gcc/fortran/trans-array.c | 10 ++++++---- 3 files changed, 20 insertions(+), 12 deletions(-) diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index d5c2675a427..9d0ab3a23b9 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,9 @@ +2018-02-11 Andre Vehreschild + + * gfortran.texi: Fix typos in documentation of caf_register (). + * trans-array.c (structure_alloc_comps): Only register a component of + a derived typed corray, not of an ultimate component coarray. + 2018-02-11 Steven G. Kargl PR fortran/54223 diff --git a/gcc/fortran/gfortran.texi b/gcc/fortran/gfortran.texi index 11246696e18..9ffe6ade661 100644 --- a/gcc/fortran/gfortran.texi +++ b/gcc/fortran/gfortran.texi @@ -4453,8 +4453,8 @@ is not used then. On the contrary when @code{CAF_REGTYPE_COARRAY_ALLOC_ALLOCATE_ONLY} is specified, then the @var{token} needs to be registered by a previous call with regtype @code{CAF_REGTYPE_COARRAY_ALLOC_REGISTER_ONLY} and either the memory specified -in the @var{desc}'s data-ptr is registered or allocate when the data-ptr is -NULL. +in the @var{DESC}'s data-ptr is registered or allocate when the data-ptr is +@code{NULL}. @item @emph{Syntax}: @code{void caf_register (size_t size, caf_register_t type, caf_token_t *token, @@ -4468,24 +4468,24 @@ allocated; for lock types and event types, the number of elements. @item @var{token} @tab intent(out) An opaque pointer identifying the coarray. @item @var{desc} @tab intent(inout) The (pseudo) array descriptor. @item @var{stat} @tab intent(out) For allocatable coarrays, stores the STAT=; -may be NULL +may be @code{NULL} @item @var{errmsg} @tab intent(out) When an error occurs, this will be set to -an error message; may be NULL +an error message; may be @code{NULL} @item @var{errmsg_len} @tab the buffer size of errmsg. @end multitable @item @emph{NOTES} -Nonalloatable coarrays have to be registered prior use from remote images. +Nonallocatable coarrays have to be registered prior use from remote images. In order to guarantee this, they have to be registered before the main program. This can be achieved by creating constructor functions. That is what -GCC does such that also nonallocatable coarrays the memory is allocated and no -static memory is used. The token permits to identify the coarray; to the +GCC does such that also for nonallocatable coarrays the memory is allocated and +no static memory is used. The token permits to identify the coarray; to the processor, the token is a nonaliasing pointer. The library can, for instance, store the base address of the coarray in the token, some handle or a more complicated struct. The library may also store the array descriptor @var{DESC} when its rank is non-zero. -For lock types, the value shall only used for checking the allocation +For lock types, the value shall only be used for checking the allocation status. Note that for critical blocks, the locking is only required on one image; in the locking statement, the processor shall always pass an image index of one for critical-block lock variables diff --git a/gcc/fortran/trans-array.c b/gcc/fortran/trans-array.c index d8b4381251e..4ffda26ca7d 100644 --- a/gcc/fortran/trans-array.c +++ b/gcc/fortran/trans-array.c @@ -8747,15 +8747,17 @@ structure_alloc_comps (gfc_symbol * der_type, tree decl, cmp_has_alloc_comps = false; } - if (flag_coarray == GFC_FCOARRAY_LIB - && (caf_in_coarray (caf_mode) || c->attr.codimension)) + if (flag_coarray == GFC_FCOARRAY_LIB && caf_in_coarray (caf_mode)) { - /* Register the component with the coarray library. */ + /* Register a component of a derived type coarray with the + coarray library. Do not register ultimate component + coarrays here. They are treated like regular coarrays and + are either allocated on all images or on none. */ tree token; comp = fold_build3_loc (input_location, COMPONENT_REF, ctype, decl, cdecl, NULL_TREE); - if (c->attr.dimension || c->attr.codimension) + if (c->attr.dimension) { /* Set the dtype, because caf_register needs it. */ gfc_add_modify (&fnblock, gfc_conv_descriptor_dtype (comp), -- 2.30.2