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?
(If not, I will commit it in the next days.)

Tobias

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

PPS: I have filled PR 92913 as gfortran feature request to compare the 'interface' block's procedure declarations with the actual procedure declarations outside of the modules; as, unfortunately, no argument-mismatch check exists, currently.

2019-12-11  Tobias Burnus  <tob...@codesourcery.com>

	libgomp/
	* openacc.f90 (module openacc_kinds): Use 'PUBLIC' to mark all symbols
	as public except for the 'use …, only' imported symbol, which is
	private.
	(module openacc): Default to 'PRIVATE' to exclude openacc_internal; mark
	all symbols from module openacc_kinds as PUBLIC; add missing PUBLIC
	attributes for acc_copyout_finalize and acc_delete_finalize.

diff --git a/libgomp/openacc.f90 b/libgomp/openacc.f90
index 831a157e703..b37f1872d50 100644
--- 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.
 
-  public :: acc_device_none, acc_device_default, acc_device_host
-  public :: acc_device_not_host, acc_device_nvidia
+  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
+
   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
 
   integer, parameter :: openacc_version = 201306
 

Reply via email to