summaryrefslogtreecommitdiffstats
path: root/polly/lib/Analysis/ScopDetection.cpp
diff options
context:
space:
mode:
authorJohannes Doerfert <doerfert@cs.uni-saarland.de>2015-10-18 12:28:00 +0000
committerJohannes Doerfert <doerfert@cs.uni-saarland.de>2015-10-18 12:28:00 +0000
commit01978cfa0c1f99e59233289c0e6bd4b64ea2fe57 (patch)
tree2fc6df9b8564062b1413bec00dd65b1d824ac53e /polly/lib/Analysis/ScopDetection.cpp
parentc2c154e07865cf4fe6920aed0d1e61a4cdb4d24b (diff)
downloadbcm5719-llvm-01978cfa0c1f99e59233289c0e6bd4b64ea2fe57.tar.gz
bcm5719-llvm-01978cfa0c1f99e59233289c0e6bd4b64ea2fe57.zip
Remove independent blocks pass
Polly can now be used as a analysis only tool as long as the code generation is disabled. However, we do not have an alternative to the independent blocks pass in place yet, though in the relevant cases this does not seem to impact the performance much. Nevertheless, a virtual alternative that allows the same transformations without changing the input region will follow shortly. llvm-svn: 250652
Diffstat (limited to 'polly/lib/Analysis/ScopDetection.cpp')
-rw-r--r--polly/lib/Analysis/ScopDetection.cpp17
1 files changed, 3 insertions, 14 deletions
diff --git a/polly/lib/Analysis/ScopDetection.cpp b/polly/lib/Analysis/ScopDetection.cpp
index e69d0b98eff..f513c81e198 100644
--- a/polly/lib/Analysis/ScopDetection.cpp
+++ b/polly/lib/Analysis/ScopDetection.cpp
@@ -648,10 +648,7 @@ bool ScopDetection::isValidMemoryAccess(Instruction &Inst,
// Check that the base address of the access is invariant in the current
// region.
if (!isInvariant(*BaseValue, CurRegion))
- // Verification of this property is difficult as the independent blocks
- // pass may introduce aliasing that we did not have when running the
- // scop detection.
- return invalid<ReportVariantBasePtr>(Context, /*Assert=*/false, BaseValue,
+ return invalid<ReportVariantBasePtr>(Context, /*Assert=*/true, BaseValue,
&Inst);
AccessFunction = SE->getMinusSCEV(AccessFunction, BasePointer);
@@ -684,8 +681,7 @@ bool ScopDetection::isValidMemoryAccess(Instruction &Inst,
AccessFunction, &Inst, BaseValue);
}
- // FIXME: Alias Analysis thinks IntToPtrInst aliases with alloca instructions
- // created by IndependentBlocks Pass.
+ // FIXME: Think about allowing IntToPtrInst
if (IntToPtrInst *Inst = dyn_cast<IntToPtrInst>(BaseValue))
return invalid<ReportIntToPtr>(Context, /*Assert=*/true, Inst);
@@ -699,13 +695,6 @@ bool ScopDetection::isValidMemoryAccess(Instruction &Inst,
AliasSet &AS = Context.AST.getAliasSetForPointer(
BaseValue, MemoryLocation::UnknownSize, AATags);
- // INVALID triggers an assertion in verifying mode, if it detects that a
- // SCoP was detected by SCoP detection and that this SCoP was invalidated by
- // a pass that stated it would preserve the SCoPs. We disable this check as
- // the independent blocks pass may create memory references which seem to
- // alias, if -basicaa is not available. They actually do not, but as we can
- // not proof this without -basicaa we would fail. We disable this check to
- // not cause irrelevant verification failures.
if (!AS.isMustAlias()) {
if (PollyUseRuntimeAliasChecks) {
bool CanBuildRunTimeCheck = true;
@@ -731,7 +720,7 @@ bool ScopDetection::isValidMemoryAccess(Instruction &Inst,
if (CanBuildRunTimeCheck)
return true;
}
- return invalid<ReportAlias>(Context, /*Assert=*/false, &Inst, AS);
+ return invalid<ReportAlias>(Context, /*Assert=*/true, &Inst, AS);
}
return true;
OpenPOWER on IntegriCloud