Skip to content

Commit 5183929

Browse files
committed
Cleanup the mergeAccessSummary API.
1 parent c2d4642 commit 5183929

File tree

1 file changed

+24
-25
lines changed

1 file changed

+24
-25
lines changed

lib/SILOptimizer/Transforms/AccessEnforcementOpts.cpp

Lines changed: 24 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -323,10 +323,9 @@ class AccessConflictAndMergeAnalysis {
323323
void addOutOfScopeAccessInsert(RegionState &state,
324324
BeginAccessInst *beginAccess);
325325
void addOutOfScopeAccessMerge(RegionState &state, BeginAccessInst *beginAccess);
326-
void mergeAccessStruct(RegionState &state,
327-
RegionState::AccessSummary &accessStruct,
328-
const RegionState::AccessSummary &RHSAccessStruct);
329-
void merge(RegionState &state, const RegionState &RHS);
326+
void mergeAccessSummary(RegionState::AccessSummary &accessSummary,
327+
const RegionState::AccessSummary &otherSummary);
328+
void mergeState(RegionState &state, const RegionState &otherState);
330329
void removeConflictFromStruct(RegionState &state,
331330
RegionState::AccessSummary &accessStruct,
332331
const AccessedStorage &storage, bool isInScope);
@@ -476,30 +475,30 @@ void AccessConflictAndMergeAnalysis::addOutOfScopeAccessMerge(
476475
}
477476
}
478477

479-
void AccessConflictAndMergeAnalysis::mergeAccessStruct(
480-
RegionState &state, RegionState::AccessSummary &accessStruct,
481-
const RegionState::AccessSummary &RHSAccessStruct) {
482-
if (!accessStruct.merged) {
483-
accessStruct.conflictFreeAccesses.insert(
484-
RHSAccessStruct.conflictFreeAccesses.begin(),
485-
RHSAccessStruct.conflictFreeAccesses.end());
486-
accessStruct.merged = true;
478+
// Merge the data flow result in `otherSummary` into `accessSummary`.
479+
void AccessConflictAndMergeAnalysis::mergeAccessSummary(
480+
RegionState::AccessSummary &accessSummary,
481+
const RegionState::AccessSummary &otherSummary) {
482+
const DenseAccessSet &otherAccesses = otherSummary.conflictFreeAccesses;
483+
if (!accessSummary.merged) {
484+
accessSummary.conflictFreeAccesses.insert(otherAccesses.begin(),
485+
otherAccesses.end());
486+
accessSummary.merged = true;
487487
return;
488488
}
489-
490-
auto pred = [&](BeginAccessInst *it) {
491-
return RHSAccessStruct.conflictFreeAccesses.count(it) == 0;
492-
};
493-
accessStruct.conflictFreeAccesses.remove_if(pred);
489+
accessSummary.conflictFreeAccesses.remove_if([&](BeginAccessInst *bai) {
490+
return !otherAccesses.count(bai);
491+
});
494492
}
495493

496-
void AccessConflictAndMergeAnalysis::merge(RegionState &state,
497-
const RegionState &RHS) {
498-
state.unidentifiedAccess |= RHS.unidentifiedAccess;
499-
mergeAccessStruct(state, state.inScopeConflictFreeAccesses,
500-
RHS.inScopeConflictFreeAccesses);
501-
mergeAccessStruct(state, state.outOfScopeConflictFreeAccesses,
502-
RHS.outOfScopeConflictFreeAccesses);
494+
// Merge the data flow result in `otherState` into `state`.
495+
void AccessConflictAndMergeAnalysis::mergeState(RegionState &state,
496+
const RegionState &otherState) {
497+
state.unidentifiedAccess |= otherState.unidentifiedAccess;
498+
mergeAccessSummary(state.inScopeConflictFreeAccesses,
499+
otherState.inScopeConflictFreeAccesses);
500+
mergeAccessSummary(state.outOfScopeConflictFreeAccesses,
501+
otherState.outOfScopeConflictFreeAccesses);
503502
}
504503

505504
// Top-level driver for AccessConflictAndMergeAnalysis
@@ -846,7 +845,7 @@ void AccessConflictAndMergeAnalysis::mergePredAccesses(
846845
}
847846
const RegionState &predState = localRegionStates.find(pred)->getSecond();
848847
changed = true;
849-
merge(state, predState);
848+
mergeState(state, predState);
850849
}
851850
if (!changed) {
852851
// If there are no predecessors

0 commit comments

Comments
 (0)