forked from OSchip/llvm-project
[OpenMP] Add an option to disable function internalization
Function internalization can sometimes occur in situations where we want to keep the call sites intact. This patch adds an option to disable function internalization and prevents the device runtime from being internalized while creating the bitcode library. Reviewed By: jdoerfert Differential Revision: https://reviews.llvm.org/D106438
This commit is contained in:
parent
1684012a47
commit
4a66860424
|
@ -56,6 +56,11 @@ static cl::opt<bool> EnableParallelRegionMerging(
|
|||
cl::desc("Enable the OpenMP region merging optimization."), cl::Hidden,
|
||||
cl::init(false));
|
||||
|
||||
static cl::opt<bool>
|
||||
DisableInternalization("openmp-opt-disable-internalization", cl::ZeroOrMore,
|
||||
cl::desc("Disable function internalization."),
|
||||
cl::Hidden, cl::init(false));
|
||||
|
||||
static cl::opt<bool> PrintICVValues("openmp-print-icv-values", cl::init(false),
|
||||
cl::Hidden);
|
||||
static cl::opt<bool> PrintOpenMPKernels("openmp-print-gpu-kernels",
|
||||
|
@ -3824,7 +3829,8 @@ PreservedAnalyses OpenMPOptPass::run(Module &M, ModuleAnalysisManager &AM) {
|
|||
DenseSet<const Function *> InternalizedFuncs;
|
||||
if (isOpenMPDevice(M))
|
||||
for (Function &F : M)
|
||||
if (!F.isDeclaration() && !Kernels.contains(&F) && IsCalled(F)) {
|
||||
if (!F.isDeclaration() && !Kernels.contains(&F) && IsCalled(F) &&
|
||||
!DisableInternalization) {
|
||||
if (Attributor::internalizeFunction(F, /* Force */ true)) {
|
||||
InternalizedFuncs.insert(&F);
|
||||
} else if (!F.hasLocalLinkage() && !F.hasFnAttribute(Attribute::Cold)) {
|
||||
|
|
|
@ -107,6 +107,7 @@ macro(add_cuda_bc_library)
|
|||
set(cu_cmd ${CLANG_TOOL}
|
||||
-xc++
|
||||
-c
|
||||
-mllvm -openmp-opt-disable-internalization
|
||||
-std=c++14
|
||||
-ffreestanding
|
||||
-target amdgcn-amd-amdhsa
|
||||
|
|
|
@ -153,6 +153,7 @@ set(cuda_src_files
|
|||
|
||||
# Set flags for LLVM Bitcode compilation.
|
||||
set(bc_flags -S -x c++ -O1 -std=c++14
|
||||
-mllvm -openmp-opt-disable-internalization
|
||||
-target nvptx64
|
||||
-Xclang -emit-llvm-bc
|
||||
-Xclang -aux-triple -Xclang ${aux_triple}
|
||||
|
|
Loading…
Reference in New Issue