summaryrefslogtreecommitdiffstats
path: root/polly/lib/Analysis/ScopBuilder.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'polly/lib/Analysis/ScopBuilder.cpp')
-rw-r--r--polly/lib/Analysis/ScopBuilder.cpp7
1 files changed, 5 insertions, 2 deletions
diff --git a/polly/lib/Analysis/ScopBuilder.cpp b/polly/lib/Analysis/ScopBuilder.cpp
index f3623525df4..b6d2ba2e40f 100644
--- a/polly/lib/Analysis/ScopBuilder.cpp
+++ b/polly/lib/Analysis/ScopBuilder.cpp
@@ -640,8 +640,11 @@ void ScopBuilder::buildStmts(Region &SR) {
buildStmts(*I->getNodeAs<Region>());
else {
std::vector<Instruction *> Instructions;
- for (Instruction &Inst : *I->getNodeAs<BasicBlock>())
- Instructions.push_back(&Inst);
+ for (Instruction &Inst : *I->getNodeAs<BasicBlock>()) {
+ Loop *L = LI.getLoopFor(Inst.getParent());
+ if (!isa<TerminatorInst>(&Inst) && !canSynthesize(&Inst, *scop, &SE, L))
+ Instructions.push_back(&Inst);
+ }
Loop *SurroundingLoop = LI.getLoopFor(I->getNodeAs<BasicBlock>());
scop->addScopStmt(I->getNodeAs<BasicBlock>(), SurroundingLoop,
Instructions);
OpenPOWER on IntegriCloud