summaryrefslogtreecommitdiffstats
path: root/polly/lib/CodeGen
diff options
context:
space:
mode:
Diffstat (limited to 'polly/lib/CodeGen')
-rw-r--r--polly/lib/CodeGen/BlockGenerators.cpp14
-rw-r--r--polly/lib/CodeGen/IslCodeGeneration.cpp4
-rw-r--r--polly/lib/CodeGen/LoopGenerators.cpp2
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 &LTS) {
+ 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
OpenPOWER on IntegriCloud