[Libomptarget] Change visibility to hidden for device RTL

This patch changes the visibility for all construct in the new device
RTL to be hidden by default. This is done after the changes introduced
in D117806 changed the visibility from being hidden by default for all
device compilations. This asserts that the visibility for the device
runtime library will be hidden except for the internal environment
variable. This is done to aid optimization and linking of the device
library.

Reviewed By: JonChesterfield

Differential Revision: https://reviews.llvm.org/D117807
This commit is contained in:
Joseph Huber 2022-01-20 13:06:22 -05:00
parent 0dfe953294
commit 26feef0846
6 changed files with 10 additions and 8 deletions

View File

@ -130,7 +130,7 @@ set (LIBOMPTARGET_LLVM_INCLUDE_DIRS_DEVICERTL "${LIBOMPTARGET_LLVM_INCLUDE_DIRS}
list(TRANSFORM LIBOMPTARGET_LLVM_INCLUDE_DIRS_DEVICERTL PREPEND "-I")
# Set flags for LLVM Bitcode compilation.
set(bc_flags -S -x c++ -std=c++17
set(bc_flags -S -x c++ -std=c++17 -fvisibility=hidden
${clang_opt_flags}
-Xclang -emit-llvm-bc
-Xclang -aux-triple -Xclang ${aux_triple}
@ -231,5 +231,5 @@ foreach(sm ${nvptx_sm_list})
endforeach()
foreach(mcpu ${amdgpu_mcpus})
compileDeviceRTLLibrary(${mcpu} amdgpu -target amdgcn-amd-amdhsa -D__AMDGCN__ -fvisibility=default -nogpulib)
compileDeviceRTLLibrary(${mcpu} amdgpu -target amdgcn-amd-amdhsa -D__AMDGCN__ -nogpulib)
endforeach()

View File

@ -193,8 +193,7 @@ enum OMPTgtExecModeFlags : int8_t {
// TODO: clang should use address space 5 for omp_thread_mem_alloc, but right
// now that's not the case.
#define THREAD_LOCAL(NAME) \
NAME [[clang::loader_uninitialized, clang::address_space(5), \
gnu::visibility("hidden")]]
NAME [[clang::loader_uninitialized, clang::address_space(5)]]
// TODO: clang should use address space 4 for omp_const_mem_alloc, maybe it
// does?

View File

@ -23,8 +23,10 @@ using namespace _OMP;
extern uint32_t __omp_rtl_debug_kind; // defined by CGOpenMPRuntimeGPU
// TODO: We want to change the name as soon as the old runtime is gone.
// This variable should be visibile to the plugin so we override the default
// hidden visibility.
DeviceEnvironmentTy CONSTANT(omptarget_device_environment)
__attribute__((used, retain, weak));
__attribute__((used, retain, weak, visibility("protected")));
uint32_t config::getDebugKind() {
return __omp_rtl_debug_kind & omptarget_device_environment.DebugKind;

View File

@ -132,7 +132,7 @@ macro(add_cuda_bc_library)
-fopenmp -fopenmp-cuda-mode -Xclang -fopenmp-is-device
-D__AMDGCN__
-Xclang -target-cpu -Xclang ${mcpu}
-fvisibility=default
-fvisibility=hidden
-Wno-unused-value
-nogpulib
-O${optimization_level}

View File

@ -34,8 +34,8 @@ typedef uint64_t __kmpc_impl_lanemask_t;
__attribute__((used)) /* Don't discard values the plugin reads */ \
__attribute__((weak)) /* We may have multiple definitions */ \
__attribute__((retain)) /* Also needed to keep values alive */ \
__attribute__((visibility("default"))) /* Access via SHT_HASH */ \
__attribute__((section(".data"))) /* Not .bss, can write before load */
__attribute__((visibility("protected"))) /* Access via SHT_HASH */ \
__attribute__((section(".data"))) /* Not .bss, can write before load */
#include "llvm/Frontend/OpenMP/OMPGridValues.h"

View File

@ -165,6 +165,7 @@ set(bc_flags -S -x c++ -O1 -std=c++14
-mllvm -openmp-opt-disable
-ffreestanding
-target nvptx64
-fvisibility=hidden
-Xclang -emit-llvm-bc
-Xclang -aux-triple -Xclang ${aux_triple}
-fopenmp -fopenmp-cuda-mode -Xclang -fopenmp-is-device