diff options
Diffstat (limited to 'polly/lib/Analysis/ScopDetection.cpp')
-rw-r--r-- | polly/lib/Analysis/ScopDetection.cpp | 8 |
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; |