@@ -323,10 +323,9 @@ class AccessConflictAndMergeAnalysis {
323
323
void addOutOfScopeAccessInsert (RegionState &state,
324
324
BeginAccessInst *beginAccess);
325
325
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);
330
329
void removeConflictFromStruct (RegionState &state,
331
330
RegionState::AccessSummary &accessStruct,
332
331
const AccessedStorage &storage, bool isInScope);
@@ -476,30 +475,30 @@ void AccessConflictAndMergeAnalysis::addOutOfScopeAccessMerge(
476
475
}
477
476
}
478
477
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 ;
487
487
return ;
488
488
}
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
+ });
494
492
}
495
493
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 );
503
502
}
504
503
505
504
// Top-level driver for AccessConflictAndMergeAnalysis
@@ -846,7 +845,7 @@ void AccessConflictAndMergeAnalysis::mergePredAccesses(
846
845
}
847
846
const RegionState &predState = localRegionStates.find (pred)->getSecond ();
848
847
changed = true ;
849
- merge (state, predState);
848
+ mergeState (state, predState);
850
849
}
851
850
if (!changed) {
852
851
// If there are no predecessors
0 commit comments