summaryrefslogtreecommitdiffstats
path: root/polly/lib/Support/ScopHelper.cpp
diff options
context:
space:
mode:
authorTobias Grosser <tobias@grosser.es>2015-11-11 12:44:18 +0000
committerTobias Grosser <tobias@grosser.es>2015-11-11 12:44:18 +0000
commitb12b006c4ba6c4a363f488e27851eb619e2dd915 (patch)
tree2ad45bd5242e249590118d925498821b92a9744a /polly/lib/Support/ScopHelper.cpp
parente76a7c41e9d596d9212e3e07e6be5bf574bbca6f (diff)
downloadbcm5719-llvm-b12b006c4ba6c4a363f488e27851eb619e2dd915.tar.gz
bcm5719-llvm-b12b006c4ba6c4a363f488e27851eb619e2dd915.zip
ScopDetection: Do not allow blocks to reference operands in error blocks
r252713 introduced a couple of regressions due to later basic blocks refering to instructions defined in error blocks which have not yet been modeled. This commit is currently just encoding limitations of our modeling and code generation backends to ensure correctness. In theory, we should be able to generate and optimize such regions, as everything that is dominated by an error region is assumed to not be executed anyhow. We currently just lack the code to make this happen in practice. llvm-svn: 252725
Diffstat (limited to 'polly/lib/Support/ScopHelper.cpp')
-rw-r--r--polly/lib/Support/ScopHelper.cpp3
1 files changed, 3 insertions, 0 deletions
diff --git a/polly/lib/Support/ScopHelper.cpp b/polly/lib/Support/ScopHelper.cpp
index b85e8f96e58..49e1e9eab17 100644
--- a/polly/lib/Support/ScopHelper.cpp
+++ b/polly/lib/Support/ScopHelper.cpp
@@ -368,6 +368,9 @@ bool polly::isErrorBlock(BasicBlock &BB, const Region &R, LoopInfo &LI,
for (Instruction &Inst : BB)
if (CallInst *CI = dyn_cast<CallInst>(&Inst)) {
+ if (isIgnoredIntrinsic(CI))
+ return false;
+
if (!CI->doesNotAccessMemory())
return true;
if (CI->doesNotReturn())
OpenPOWER on IntegriCloud