diff options
Diffstat (limited to 'polly/lib/CodeGen')
-rw-r--r-- | polly/lib/CodeGen/BlockGenerators.cpp | 14 | ||||
-rw-r--r-- | polly/lib/CodeGen/IslCodeGeneration.cpp | 4 | ||||
-rw-r--r-- | polly/lib/CodeGen/LoopGenerators.cpp | 2 |
3 files changed, 15 insertions, 5 deletions
diff --git a/polly/lib/CodeGen/BlockGenerators.cpp b/polly/lib/CodeGen/BlockGenerators.cpp index 05b95e29789..208748a0262 100644 --- a/polly/lib/CodeGen/BlockGenerators.cpp +++ b/polly/lib/CodeGen/BlockGenerators.cpp @@ -238,9 +238,14 @@ void BlockGenerator::copyInstruction(const Instruction *Inst, ValueMapT &BBMap, } void BlockGenerator::copyBB(ValueMapT &GlobalMap, LoopToScevMapT <S) { + auto *DTWP = P->getAnalysisIfAvailable<DominatorTreeWrapperPass>(); + auto *DT = DTWP ? &DTWP->getDomTree() : nullptr; + auto *LIWP = P->getAnalysisIfAvailable<LoopInfoWrapperPass>(); + auto *LI = LIWP ? &LIWP->getLoopInfo() : nullptr;; + BasicBlock *BB = Statement.getBasicBlock(); BasicBlock *CopyBB = - SplitBlock(Builder.GetInsertBlock(), Builder.GetInsertPoint(), P); + SplitBlock(Builder.GetInsertBlock(), Builder.GetInsertPoint(), DT, LI); CopyBB->setName("polly.stmt." + BB->getName()); Builder.SetInsertPoint(CopyBB->begin()); @@ -572,9 +577,14 @@ void VectorBlockGenerator::copyInstruction(const Instruction *Inst, } void VectorBlockGenerator::copyBB() { + auto *DTWP = P->getAnalysisIfAvailable<DominatorTreeWrapperPass>(); + auto *DT = DTWP ? &DTWP->getDomTree() : nullptr; + auto *LIWP = P->getAnalysisIfAvailable<LoopInfoWrapperPass>(); + auto *LI = LIWP ? &LIWP->getLoopInfo() : nullptr;; + BasicBlock *BB = Statement.getBasicBlock(); BasicBlock *CopyBB = - SplitBlock(Builder.GetInsertBlock(), Builder.GetInsertPoint(), P); + SplitBlock(Builder.GetInsertBlock(), Builder.GetInsertPoint(), DT, LI); CopyBB->setName("polly.stmt." + BB->getName()); Builder.SetInsertPoint(CopyBB->begin()); diff --git a/polly/lib/CodeGen/IslCodeGeneration.cpp b/polly/lib/CodeGen/IslCodeGeneration.cpp index b80a25089ce..db8712b3920 100644 --- a/polly/lib/CodeGen/IslCodeGeneration.cpp +++ b/polly/lib/CodeGen/IslCodeGeneration.cpp @@ -698,9 +698,9 @@ void IslNodeBuilder::createIf(__isl_take isl_ast_node *If) { LLVMContext &Context = F->getContext(); BasicBlock *CondBB = - SplitBlock(Builder.GetInsertBlock(), Builder.GetInsertPoint(), P); + SplitBlock(Builder.GetInsertBlock(), Builder.GetInsertPoint(), &DT, &LI); CondBB->setName("polly.cond"); - BasicBlock *MergeBB = SplitBlock(CondBB, CondBB->begin(), P); + BasicBlock *MergeBB = SplitBlock(CondBB, CondBB->begin(), &DT, &LI); MergeBB->setName("polly.merge"); BasicBlock *ThenBB = BasicBlock::Create(Context, "polly.then", F); BasicBlock *ElseBB = BasicBlock::Create(Context, "polly.else", F); diff --git a/polly/lib/CodeGen/LoopGenerators.cpp b/polly/lib/CodeGen/LoopGenerators.cpp index 05ab6207904..183ce9c4481 100644 --- a/polly/lib/CodeGen/LoopGenerators.cpp +++ b/polly/lib/CodeGen/LoopGenerators.cpp @@ -92,7 +92,7 @@ Value *polly::createLoop(Value *LB, Value *UB, Value *Stride, Annotator->pushLoop(NewLoop, Parallel); // ExitBB - ExitBB = SplitBlock(BeforeBB, Builder.GetInsertPoint()++, P); + ExitBB = SplitBlock(BeforeBB, Builder.GetInsertPoint()++, &DT, &LI); ExitBB->setName("polly.loop_exit"); // BeforeBB |