summaryrefslogtreecommitdiffstats
path: root/polly/lib/Analysis/ScopDetection.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'polly/lib/Analysis/ScopDetection.cpp')
-rw-r--r--polly/lib/Analysis/ScopDetection.cpp8
1 files changed, 7 insertions, 1 deletions
diff --git a/polly/lib/Analysis/ScopDetection.cpp b/polly/lib/Analysis/ScopDetection.cpp
index 5b7fc34f932..a637afa5a41 100644
--- a/polly/lib/Analysis/ScopDetection.cpp
+++ b/polly/lib/Analysis/ScopDetection.cpp
@@ -347,10 +347,16 @@ bool ScopDetection::onlyValidRequiredInvariantLoads(
if (!PollyInvariantLoadHoisting && !RequiredILS.empty())
return false;
- for (LoadInst *Load : RequiredILS)
+ for (LoadInst *Load : RequiredILS) {
if (!isHoistableLoad(Load, CurRegion, *LI, *SE, *DT))
return false;
+ for (auto NonAffineRegion : Context.NonAffineSubRegionSet)
+ if (NonAffineRegion->contains(Load) &&
+ Load->getParent() != NonAffineRegion->getEntry())
+ return false;
+ }
+
Context.RequiredILS.insert(RequiredILS.begin(), RequiredILS.end());
return true;
OpenPOWER on IntegriCloud