summaryrefslogtreecommitdiffstats
path: root/polly/lib
diff options
context:
space:
mode:
Diffstat (limited to 'polly/lib')
-rw-r--r--polly/lib/Analysis/ScopBuilder.cpp21
-rw-r--r--polly/lib/Analysis/ScopInfo.cpp19
2 files changed, 20 insertions, 20 deletions
diff --git a/polly/lib/Analysis/ScopBuilder.cpp b/polly/lib/Analysis/ScopBuilder.cpp
index c4ac225d04e..dcacd3eae5e 100644
--- a/polly/lib/Analysis/ScopBuilder.cpp
+++ b/polly/lib/Analysis/ScopBuilder.cpp
@@ -1320,6 +1320,25 @@ void ScopBuilder::verifyInvariantLoads() {
}
}
+void ScopBuilder::hoistInvariantLoads() {
+ if (!PollyInvariantLoadHoisting)
+ return;
+
+ isl::union_map Writes = scop->getWrites();
+ for (ScopStmt &Stmt : *scop) {
+ InvariantAccessesTy InvariantAccesses;
+
+ for (MemoryAccess *Access : Stmt)
+ if (isl::set NHCtx = scop->getNonHoistableCtx(Access, Writes))
+ InvariantAccesses.push_back({Access, NHCtx});
+
+ // Transfer the memory access from the statement to the SCoP.
+ for (auto InvMA : InvariantAccesses)
+ Stmt.removeMemoryAccess(InvMA.MA);
+ scop->addInvariantLoads(Stmt, InvariantAccesses);
+ }
+}
+
void ScopBuilder::collectCandidateReductionLoads(
MemoryAccess *StoreMA, SmallVectorImpl<MemoryAccess *> &Loads) {
ScopStmt *Stmt = StoreMA->getStatement();
@@ -1670,7 +1689,7 @@ void ScopBuilder::buildScop(Region &R, AssumptionCache &AC,
return;
}
- scop->hoistInvariantLoads();
+ hoistInvariantLoads();
canonicalizeDynamicBasePtrs();
verifyInvariantLoads();
scop->simplifySCoP(true);
diff --git a/polly/lib/Analysis/ScopInfo.cpp b/polly/lib/Analysis/ScopInfo.cpp
index 0a8da7426bc..00ede96ada3 100644
--- a/polly/lib/Analysis/ScopInfo.cpp
+++ b/polly/lib/Analysis/ScopInfo.cpp
@@ -3778,25 +3778,6 @@ isl::set Scop::getNonHoistableCtx(MemoryAccess *Access, isl::union_map Writes) {
return WrittenCtx;
}
-void Scop::hoistInvariantLoads() {
- if (!PollyInvariantLoadHoisting)
- return;
-
- isl::union_map Writes = getWrites();
- for (ScopStmt &Stmt : *this) {
- InvariantAccessesTy InvariantAccesses;
-
- for (MemoryAccess *Access : Stmt)
- if (isl::set NHCtx = getNonHoistableCtx(Access, Writes))
- InvariantAccesses.push_back({Access, NHCtx});
-
- // Transfer the memory access from the statement to the SCoP.
- for (auto InvMA : InvariantAccesses)
- Stmt.removeMemoryAccess(InvMA.MA);
- addInvariantLoads(Stmt, InvariantAccesses);
- }
-}
-
ScopArrayInfo *Scop::getOrCreateScopArrayInfo(Value *BasePtr, Type *ElementType,
ArrayRef<const SCEV *> Sizes,
MemoryKind Kind,
OpenPOWER on IntegriCloud