Hi Tobias!

On 2019-12-11T13:47:51+0100, Tobias Burnus <tob...@codesourcery.com> wrote:
> This patch cleans up the public/private handling in libgomp/openacc.f90:
>
> * module openacc_kinds marked symbols explicitly as public and private 
> (but default is public). Make this explicit by a 'PUBLIC' and remove the 
> (redundant) explicit 'public :: <symb>' lines.
>
> * 'module openacc' had a bunch of 'public :: ' lines but the default was 
> already 'public'. Changed this to 'private' and marked the 
> use-associated 'openacc_kinds' symbols as 'public' and added 'public' 
> statements for the two missing items. (Net effect: this will hide all 
> openacc_internal symbols.)
>
> I think this patch is rather obvious. Nonetheless: are the comments?

Sounds good, don't have any comments on the Fortran details ;-) -- but
I'll point out there also exists 'libgomp/config/accel/openacc.f90',
which probably needs similar treatment?

> (If not, I will commit it in the next days.)

(Got committed in r279337.)

> PS: I found the two missing symbols by looking at the 'interface <name>' 
> lines; 'module openacc' has only those + the version symbol.

Ouch.  Ah, no: you said "the default was already 'public'" -- so there's
no need to backport that to gcc-9-branch, so that 'acc_copyout_finalize',
'acc_delete_finalize' will be available for OpenACC Fortran users.

(These functions are, what would you expect, no covered by any test case
in 'libgomp.oacc-fortran/'...)


A few comments anyway:

> --- a/libgomp/openacc.f90
> +++ b/libgomp/openacc.f90
> @@ -31,13 +31,12 @@ module openacc_kinds
>    use iso_fortran_env, only: int32
>    implicit none
>  
> +  public
>    private :: int32
> -  public :: acc_device_kind
>  
> -  integer, parameter :: acc_device_kind = int32
> +  ! When adding items, also update 'public' setting in 'module openmp' below.

This isn't "'module openmp'".  ;-)

>  
> -  public :: acc_device_none, acc_device_default, acc_device_host
> -  public :: acc_device_not_host, acc_device_nvidia

(So this was missing 'acc_device_gcn' -- but 'public' was the default.)

> +  integer, parameter :: acc_device_kind = int32
>  
>    ! Keep in sync with include/gomp-constants.h.
>    integer (acc_device_kind), parameter :: acc_device_none = 0
> @@ -48,16 +47,11 @@ module openacc_kinds
>    integer (acc_device_kind), parameter :: acc_device_nvidia = 5
>    integer (acc_device_kind), parameter :: acc_device_gcn = 8
>  
> -  public :: acc_handle_kind
> -
>    integer, parameter :: acc_handle_kind = int32
>  
> -  public :: acc_async_noval, acc_async_sync
> -
>    ! Keep in sync with include/gomp-constants.h.
>    integer (acc_handle_kind), parameter :: acc_async_noval = -1
>    integer (acc_handle_kind), parameter :: acc_async_sync = -2
> -
>  end module
>  
>  module openacc_internal
> @@ -717,6 +711,13 @@ module openacc
>    use openacc_internal
>    implicit none
>  
> +  private
> +  ! From openacc_kinds
> +  public :: acc_device_kind, acc_handle_kind
> +  public :: acc_device_none, acc_device_default, acc_device_host
> +  public :: acc_device_not_host, acc_device_nvidia, acc_device_gcn
> +  public :: acc_async_noval, acc_async_sync
> +

Some vertical space before the "From openacc_kinds" comment, and before
the 'acc_async_*' ones?

>    public :: openacc_version
>  
>    public :: acc_get_num_devices, acc_set_device_type, acc_get_device_type
> @@ -730,6 +731,7 @@ module openacc
>    public :: acc_update_device, acc_update_self, acc_is_present
>    public :: acc_copyin_async, acc_create_async, acc_copyout_async
>    public :: acc_delete_async, acc_update_device_async, acc_update_self_async
> +  public :: acc_copyout_finalize, acc_delete_finalize

Put these into the place where they really belong, after 'acc_copyout,
and 'acc_delete', respectively?


Grüße
 Thomas

Attachment: signature.asc
Description: PGP signature

Reply via email to