[Openmp-commits] [PATCH] D106085: [OpenMP] Fix carefully track SPMDCompatibilityTracker
Johannes Doerfert via Phabricator via Openmp-commits
openmp-commits at lists.llvm.org
Mon Jul 19 20:50:49 PDT 2021
This revision was landed with ongoing or failed builds.
This revision was automatically updated to reflect the committed changes.
Closed by commit rG97387fdf6db4: [OpenMP] Fix carefully track SPMDCompatibilityTracker (authored by jdoerfert).
Changed prior to commit:
https://reviews.llvm.org/D106085?vs=359059&id=360001#toc
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D106085/new/
https://reviews.llvm.org/D106085
Files:
llvm/lib/Transforms/IPO/OpenMPOpt.cpp
Index: llvm/lib/Transforms/IPO/OpenMPOpt.cpp
===================================================================
--- llvm/lib/Transforms/IPO/OpenMPOpt.cpp
+++ llvm/lib/Transforms/IPO/OpenMPOpt.cpp
@@ -2759,7 +2759,7 @@
// __kmpc_target_init or
// __kmpc_target_deinit call. We will answer this one with the internal
// state.
- if (!isValidState())
+ if (!SPMDCompatibilityTracker.isValidState())
return nullptr;
if (!SPMDCompatibilityTracker.isAtFixpoint()) {
if (AA)
@@ -3162,20 +3162,22 @@
};
bool UsedAssumedInformationInCheckRWInst = false;
- if (!A.checkForAllReadWriteInstructions(
- CheckRWInst, *this, UsedAssumedInformationInCheckRWInst))
- SPMDCompatibilityTracker.indicatePessimisticFixpoint();
+ if (!SPMDCompatibilityTracker.isAtFixpoint())
+ if (!A.checkForAllReadWriteInstructions(
+ CheckRWInst, *this, UsedAssumedInformationInCheckRWInst))
+ SPMDCompatibilityTracker.indicatePessimisticFixpoint();
if (!IsKernelEntry)
updateReachingKernelEntries(A);
// Callback to check a call instruction.
+ bool AllSPMDStatesWereFixed = true;
auto CheckCallInst = [&](Instruction &I) {
auto &CB = cast<CallBase>(I);
auto &CBAA = A.getAAFor<AAKernelInfo>(
*this, IRPosition::callsite_function(CB), DepClassTy::OPTIONAL);
- if (CBAA.getState().isValidState())
- getState() ^= CBAA.getState();
+ getState() ^= CBAA.getState();
+ AllSPMDStatesWereFixed &= CBAA.SPMDCompatibilityTracker.isAtFixpoint();
return true;
};
@@ -3184,6 +3186,12 @@
CheckCallInst, *this, UsedAssumedInformationInCheckCallInst))
return indicatePessimisticFixpoint();
+ // If we haven't used any assumed information for the SPMD state we can fix
+ // it.
+ if (!UsedAssumedInformationInCheckRWInst &&
+ !UsedAssumedInformationInCheckCallInst && AllSPMDStatesWereFixed)
+ SPMDCompatibilityTracker.indicateOptimisticFixpoint();
+
return StateBefore == getState() ? ChangeStatus::UNCHANGED
: ChangeStatus::CHANGED;
}
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D106085.360001.patch
Type: text/x-patch
Size: 2181 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/openmp-commits/attachments/20210720/a4caa49c/attachment.bin>
More information about the Openmp-commits
mailing list