diff options
author | Tobias Grosser <tobias@grosser.es> | 2015-11-11 12:44:18 +0000 |
---|---|---|
committer | Tobias Grosser <tobias@grosser.es> | 2015-11-11 12:44:18 +0000 |
commit | b12b006c4ba6c4a363f488e27851eb619e2dd915 (patch) | |
tree | 2ad45bd5242e249590118d925498821b92a9744a /polly/lib/Support/ScopHelper.cpp | |
parent | e76a7c41e9d596d9212e3e07e6be5bf574bbca6f (diff) | |
download | bcm5719-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.cpp | 3 |
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()) |