diff options
Diffstat (limited to 'polly/lib/Analysis/ScopBuilder.cpp')
| -rw-r--r-- | polly/lib/Analysis/ScopBuilder.cpp | 7 |
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); |

