diff options
author | Tom de Vries <tdevries@suse.de> | 2018-08-06 22:13:46 +0000 |
---|---|---|
committer | Tom de Vries <vries@gcc.gnu.org> | 2018-08-06 22:13:46 +0000 |
commit | 9e28b107796b79f09227de541543466a146162be (patch) | |
tree | a19609d27ea80e60f7fb0422ea6898c0eb8af245 | |
parent | 611c75f0efa4351d91f18c8af3bba8ff2b8fa616 (diff) | |
download | gcc-9e28b107796b79f09227de541543466a146162be.zip gcc-9e28b107796b79f09227de541543466a146162be.tar.gz gcc-9e28b107796b79f09227de541543466a146162be.tar.bz2 |
[libgomp, nvptx] Minimize lifetime of CUDA_ONE_CALL defines
This patch makes sure that the lifetimes of the CUDA_ONE_CALL macro (which is
defined twice in plugin-nvptx.c) are minimized, to make it obvious that the
definitions are used only in the lib-cuda.def include.
Build on x86_64 with nvptx accelerator and reg-tested libgomp.
2018-08-07 Tom de Vries <tdevries@suse.de>
* plugin/plugin-nvptx.c (struct cuda_lib_s, init_cuda_lib): Put
CUDA_ONE_CALL defines right before the cuda-lib.def include, and the
corresponding undefs right after.
From-SVN: r263345
-rw-r--r-- | libgomp/ChangeLog | 6 | ||||
-rw-r--r-- | libgomp/plugin/plugin-nvptx.c | 14 |
2 files changed, 15 insertions, 5 deletions
diff --git a/libgomp/ChangeLog b/libgomp/ChangeLog index 0742c78..d96ab1f 100644 --- a/libgomp/ChangeLog +++ b/libgomp/ChangeLog @@ -1,3 +1,9 @@ +2018-08-07 Tom de Vries <tdevries@suse.de> + + * plugin/plugin-nvptx.c (struct cuda_lib_s, init_cuda_lib): Put + CUDA_ONE_CALL defines right before the cuda-lib.def include, and the + corresponding undefs right after. + 2018-08-04 Tom de Vries <tdevries@suse.de> * plugin/configfrag.ac: For --without-cuda-driver, set diff --git a/libgomp/plugin/plugin-nvptx.c b/libgomp/plugin/plugin-nvptx.c index cc465b4..2e72a63 100644 --- a/libgomp/plugin/plugin-nvptx.c +++ b/libgomp/plugin/plugin-nvptx.c @@ -52,10 +52,13 @@ #if PLUGIN_NVPTX_DYNAMIC # include <dlfcn.h> -# define CUDA_ONE_CALL(call) \ - __typeof (call) *call; struct cuda_lib_s { + +# define CUDA_ONE_CALL(call) \ + __typeof (call) *call; #include "cuda-lib.def" +# undef CUDA_ONE_CALL + } cuda_lib; /* -1 if init_cuda_lib has not been called yet, false @@ -74,18 +77,19 @@ init_cuda_lib (void) cuda_lib_inited = false; if (h == NULL) return false; -# undef CUDA_ONE_CALL + # define CUDA_ONE_CALL(call) CUDA_ONE_CALL_1 (call) # define CUDA_ONE_CALL_1(call) \ cuda_lib.call = dlsym (h, #call); \ if (cuda_lib.call == NULL) \ return false; #include "cuda-lib.def" +# undef CUDA_ONE_CALL +# undef CUDA_ONE_CALL_1 + cuda_lib_inited = true; return true; } -# undef CUDA_ONE_CALL -# undef CUDA_ONE_CALL_1 # define CUDA_CALL_PREFIX cuda_lib. #else # define CUDA_CALL_PREFIX |