[llvm] d1033e3 - [OpenMP] Disable ICV deduction by default.
Johannes Doerfert via llvm-commits
llvm-commits at lists.llvm.org
Tue Jan 10 15:04:38 PST 2023
Author: Johannes Doerfert
Date: 2023-01-10T15:03:51-08:00
New Revision: d1033e3cadf46508222787f63a1e5c3a5e3dbffa
URL: https://github.com/llvm/llvm-project/commit/d1033e3cadf46508222787f63a1e5c3a5e3dbffa
DIFF: https://github.com/llvm/llvm-project/commit/d1033e3cadf46508222787f63a1e5c3a5e3dbffa.diff
LOG: [OpenMP] Disable ICV deduction by default.
This is not tested well and needs to be revisited in the future.
Added:
Modified:
llvm/lib/Transforms/IPO/OpenMPOpt.cpp
llvm/test/Transforms/OpenMP/icv_tracking.ll
Removed:
################################################################################
diff --git a/llvm/lib/Transforms/IPO/OpenMPOpt.cpp b/llvm/lib/Transforms/IPO/OpenMPOpt.cpp
index 44871e94a71ca..1b226c763a9cc 100644
--- a/llvm/lib/Transforms/IPO/OpenMPOpt.cpp
+++ b/llvm/lib/Transforms/IPO/OpenMPOpt.cpp
@@ -71,6 +71,8 @@ static cl::opt<bool>
cl::desc("Disable function internalization."),
cl::Hidden, cl::init(false));
+static cl::opt<bool> DeduceICVValues("openmp-deduce-icv-values",
+ cl::init(false), cl::Hidden);
static cl::opt<bool> PrintICVValues("openmp-print-icv-values", cl::init(false),
cl::Hidden);
static cl::opt<bool> PrintOpenMPKernels("openmp-print-gpu-kernels",
@@ -4806,24 +4808,26 @@ void OpenMPOpt::registerAAs(bool IsModulePass) {
}
// Create CallSite AA for all Getters.
- for (int Idx = 0; Idx < OMPInfoCache.ICVs.size() - 1; ++Idx) {
- auto ICVInfo = OMPInfoCache.ICVs[static_cast<InternalControlVar>(Idx)];
+ if (DeduceICVValues) {
+ for (int Idx = 0; Idx < OMPInfoCache.ICVs.size() - 1; ++Idx) {
+ auto ICVInfo = OMPInfoCache.ICVs[static_cast<InternalControlVar>(Idx)];
- auto &GetterRFI = OMPInfoCache.RFIs[ICVInfo.Getter];
+ auto &GetterRFI = OMPInfoCache.RFIs[ICVInfo.Getter];
- auto CreateAA = [&](Use &U, Function &Caller) {
- CallInst *CI = OpenMPOpt::getCallIfRegularCall(U, &GetterRFI);
- if (!CI)
- return false;
+ auto CreateAA = [&](Use &U, Function &Caller) {
+ CallInst *CI = OpenMPOpt::getCallIfRegularCall(U, &GetterRFI);
+ if (!CI)
+ return false;
- auto &CB = cast<CallBase>(*CI);
+ auto &CB = cast<CallBase>(*CI);
- IRPosition CBPos = IRPosition::callsite_function(CB);
- A.getOrCreateAAFor<AAICVTracker>(CBPos);
- return false;
- };
+ IRPosition CBPos = IRPosition::callsite_function(CB);
+ A.getOrCreateAAFor<AAICVTracker>(CBPos);
+ return false;
+ };
- GetterRFI.foreachUse(SCC, CreateAA);
+ GetterRFI.foreachUse(SCC, CreateAA);
+ }
}
auto &GlobalizationRFI = OMPInfoCache.RFIs[OMPRTL___kmpc_alloc_shared];
auto CreateAA = [&](Use &U, Function &F) {
diff --git a/llvm/test/Transforms/OpenMP/icv_tracking.ll b/llvm/test/Transforms/OpenMP/icv_tracking.ll
index 57c8eaee9cb64..72273187a0395 100644
--- a/llvm/test/Transforms/OpenMP/icv_tracking.ll
+++ b/llvm/test/Transforms/OpenMP/icv_tracking.ll
@@ -1,5 +1,5 @@
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --function-signature
-; RUN: opt -S -passes=openmp-opt < %s | FileCheck %s
+; RUN: opt -S -openmp-deduce-icv-values -passes=openmp-opt < %s | FileCheck %s
%struct.ident_t = type { i32, i32, i32, i32, ptr }
More information about the llvm-commits
mailing list