@@ -71,6 +71,8 @@ static cl::opt<bool>
71
71
cl::desc (" Disable function internalization." ),
72
72
cl::Hidden, cl::init(false ));
73
73
74
+ static cl::opt<bool > DeduceICVValues (" openmp-deduce-icv-values" ,
75
+ cl::init (false ), cl::Hidden);
74
76
static cl::opt<bool > PrintICVValues (" openmp-print-icv-values" , cl::init(false ),
75
77
cl::Hidden);
76
78
static cl::opt<bool > PrintOpenMPKernels (" openmp-print-gpu-kernels" ,
@@ -4806,24 +4808,26 @@ void OpenMPOpt::registerAAs(bool IsModulePass) {
4806
4808
}
4807
4809
4808
4810
// Create CallSite AA for all Getters.
4809
- for (int Idx = 0 ; Idx < OMPInfoCache.ICVs .size () - 1 ; ++Idx) {
4810
- auto ICVInfo = OMPInfoCache.ICVs [static_cast <InternalControlVar>(Idx)];
4811
+ if (DeduceICVValues) {
4812
+ for (int Idx = 0 ; Idx < OMPInfoCache.ICVs .size () - 1 ; ++Idx) {
4813
+ auto ICVInfo = OMPInfoCache.ICVs [static_cast <InternalControlVar>(Idx)];
4811
4814
4812
- auto &GetterRFI = OMPInfoCache.RFIs [ICVInfo.Getter ];
4815
+ auto &GetterRFI = OMPInfoCache.RFIs [ICVInfo.Getter ];
4813
4816
4814
- auto CreateAA = [&](Use &U, Function &Caller) {
4815
- CallInst *CI = OpenMPOpt::getCallIfRegularCall (U, &GetterRFI);
4816
- if (!CI)
4817
- return false ;
4817
+ auto CreateAA = [&](Use &U, Function &Caller) {
4818
+ CallInst *CI = OpenMPOpt::getCallIfRegularCall (U, &GetterRFI);
4819
+ if (!CI)
4820
+ return false ;
4818
4821
4819
- auto &CB = cast<CallBase>(*CI);
4822
+ auto &CB = cast<CallBase>(*CI);
4820
4823
4821
- IRPosition CBPos = IRPosition::callsite_function (CB);
4822
- A.getOrCreateAAFor <AAICVTracker>(CBPos);
4823
- return false ;
4824
- };
4824
+ IRPosition CBPos = IRPosition::callsite_function (CB);
4825
+ A.getOrCreateAAFor <AAICVTracker>(CBPos);
4826
+ return false ;
4827
+ };
4825
4828
4826
- GetterRFI.foreachUse (SCC, CreateAA);
4829
+ GetterRFI.foreachUse (SCC, CreateAA);
4830
+ }
4827
4831
}
4828
4832
auto &GlobalizationRFI = OMPInfoCache.RFIs [OMPRTL___kmpc_alloc_shared];
4829
4833
auto CreateAA = [&](Use &U, Function &F) {
0 commit comments