[polly] r292126 - ScopInfo: No need to keep ReadOnlyAccesses in an additional map [NFC]
Tobias Grosser via llvm-commits
llvm-commits at lists.llvm.org
Mon Jan 16 06:24:48 PST 2017
Author: grosser
Date: Mon Jan 16 08:24:48 2017
New Revision: 292126
URL: http://llvm.org/viewvc/llvm-project?rev=292126&view=rev
Log:
ScopInfo: No need to keep ReadOnlyAccesses in an additional map [NFC]
It seems over time we added an additional map that maps from the base address
of a read-only access to the actual access. However this map is never used.
Drop the creation and use of this map to simplify our alias check generation
code.
Modified:
polly/trunk/lib/Analysis/ScopInfo.cpp
Modified: polly/trunk/lib/Analysis/ScopInfo.cpp
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/lib/Analysis/ScopInfo.cpp?rev=292126&r1=292125&r2=292126&view=diff
==============================================================================
--- polly/trunk/lib/Analysis/ScopInfo.cpp (original)
+++ polly/trunk/lib/Analysis/ScopInfo.cpp Mon Jan 16 08:24:48 2017
@@ -2978,7 +2978,7 @@ bool Scop::buildAliasGroups(AliasAnalysi
auto &F = getFunction();
for (AliasGroupTy &AG : AliasGroups) {
- MapVector<const Value *, SmallSetVector<MemoryAccess *, 8>> ReadOnlyPairs;
+ AliasGroupTy ReadOnlyAccesses;
SmallPtrSet<const Value *, 4> NonReadOnlyBaseValues;
if (AG.size() < 2)
@@ -2995,14 +2995,14 @@ bool Scop::buildAliasGroups(AliasAnalysi
NonReadOnlyBaseValues.insert(BaseAddr);
II++;
} else {
- ReadOnlyPairs[BaseAddr].insert(*II);
+ ReadOnlyAccesses.push_back(*II);
II = AG.erase(II);
}
}
// If we don't have read only pointers check if there are at least two
// non read only pointers, otherwise clear the alias group.
- if (ReadOnlyPairs.empty() && NonReadOnlyBaseValues.size() <= 1)
+ if (ReadOnlyAccesses.empty() && NonReadOnlyBaseValues.size() <= 1)
continue;
// If we don't have non read only pointers clear the alias group.
@@ -3011,25 +3011,24 @@ bool Scop::buildAliasGroups(AliasAnalysi
// Check if we have non-affine accesses left, if so bail out as we cannot
// generate a good access range yet.
- for (auto *MA : AG) {
+ for (MemoryAccess *MA : AG) {
if (!MA->isAffine()) {
invalidate(ALIASING, MA->getAccessInstruction()->getDebugLoc());
return false;
}
- if (auto *BasePtrMA = lookupBasePtrAccess(MA))
+ if (MemoryAccess *BasePtrMA = lookupBasePtrAccess(MA))
addRequiredInvariantLoad(
cast<LoadInst>(BasePtrMA->getAccessInstruction()));
}
- for (auto &ReadOnlyPair : ReadOnlyPairs)
- for (auto *MA : ReadOnlyPair.second) {
- if (!MA->isAffine()) {
- invalidate(ALIASING, MA->getAccessInstruction()->getDebugLoc());
- return false;
- }
- if (auto *BasePtrMA = lookupBasePtrAccess(MA))
- addRequiredInvariantLoad(
- cast<LoadInst>(BasePtrMA->getAccessInstruction()));
+ for (MemoryAccess *MA : ReadOnlyAccesses) {
+ if (!MA->isAffine()) {
+ invalidate(ALIASING, MA->getAccessInstruction()->getDebugLoc());
+ return false;
}
+ if (MemoryAccess *BasePtrMA = lookupBasePtrAccess(MA))
+ addRequiredInvariantLoad(
+ cast<LoadInst>(BasePtrMA->getAccessInstruction()));
+ }
// Calculate minimal and maximal accesses for non read only accesses.
MinMaxAliasGroups.emplace_back();
@@ -3051,17 +3050,16 @@ bool Scop::buildAliasGroups(AliasAnalysi
// This is important as the number of comparisons grows quadratically with
// the number of values we need to compare.
if (!Valid ||
- (MinMaxAccessesNonReadOnly.size() + ReadOnlyPairs.size() >
+ (MinMaxAccessesNonReadOnly.size() + ReadOnlyAccesses.size() >
RunTimeChecksMaxArraysPerGroup))
return false;
// Calculate minimal and maximal accesses for read only accesses.
- MinMaxAccessesReadOnly.reserve(ReadOnlyPairs.size());
+ MinMaxAccessesReadOnly.reserve(ReadOnlyAccesses.size());
Accesses = isl_union_map_empty(getParamSpace());
- for (const auto &ReadOnlyPair : ReadOnlyPairs)
- for (MemoryAccess *MA : ReadOnlyPair.second)
- Accesses = isl_union_map_add_map(Accesses, MA->getAccessRelation());
+ for (MemoryAccess *MA : ReadOnlyAccesses)
+ Accesses = isl_union_map_add_map(Accesses, MA->getAccessRelation());
Valid =
calculateMinMaxAccess(Accesses, getDomains(), MinMaxAccessesReadOnly);
More information about the llvm-commits
mailing list