diff options
Diffstat (limited to 'polly/lib/Analysis/ScopInfo.cpp')
| -rw-r--r-- | polly/lib/Analysis/ScopInfo.cpp | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/polly/lib/Analysis/ScopInfo.cpp b/polly/lib/Analysis/ScopInfo.cpp index dc18d618b3b..e549ba21327 100644 --- a/polly/lib/Analysis/ScopInfo.cpp +++ b/polly/lib/Analysis/ScopInfo.cpp @@ -2689,6 +2689,20 @@ bool Scop::buildAliasGroups(AliasAnalysis &AA) { continue; } + // 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) + if (!MA->isAffine()) { + invalidate(ALIASING, MA->getAccessInstruction()->getDebugLoc()); + return false; + } + for (auto &ReadOnlyPair : ReadOnlyPairs) + for (auto *MA : ReadOnlyPair.second) + if (!MA->isAffine()) { + invalidate(ALIASING, MA->getAccessInstruction()->getDebugLoc()); + return false; + } + // Calculate minimal and maximal accesses for non read only accesses. MinMaxAliasGroups.emplace_back(); MinMaxVectorPairTy &pair = MinMaxAliasGroups.back(); |

