[Openmp-commits] [PATCH] D106438: [OpenMP] Add an option to disable function internalization
Joseph Huber via Phabricator via Openmp-commits
openmp-commits at lists.llvm.org
Wed Jul 21 06:50:49 PDT 2021
jhuber6 created this revision.
jhuber6 added reviewers: jdoerfert, tianshilei1992.
Herald added subscribers: ormris, guansong, hiraditya, yaxunl, mgorny.
jhuber6 requested review of this revision.
Herald added subscribers: llvm-commits, openmp-commits, sstefan1.
Herald added projects: OpenMP, LLVM.
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.
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D106438
Files:
llvm/lib/Transforms/IPO/OpenMPOpt.cpp
openmp/libomptarget/deviceRTLs/nvptx/CMakeLists.txt
Index: openmp/libomptarget/deviceRTLs/nvptx/CMakeLists.txt
===================================================================
--- openmp/libomptarget/deviceRTLs/nvptx/CMakeLists.txt
+++ openmp/libomptarget/deviceRTLs/nvptx/CMakeLists.txt
@@ -153,6 +153,7 @@
# 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}
Index: llvm/lib/Transforms/IPO/OpenMPOpt.cpp
===================================================================
--- llvm/lib/Transforms/IPO/OpenMPOpt.cpp
+++ llvm/lib/Transforms/IPO/OpenMPOpt.cpp
@@ -56,6 +56,11 @@
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",
@@ -3771,7 +3776,8 @@
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)) {
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D106438.360433.patch
Type: text/x-patch
Size: 1779 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/openmp-commits/attachments/20210721/f2c27f72/attachment-0001.bin>
More information about the Openmp-commits
mailing list