summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChandler Carruth <chandlerc@gmail.com>2015-01-18 10:52:23 +0000
committerChandler Carruth <chandlerc@gmail.com>2015-01-18 10:52:23 +0000
commit5ec3333d2401eaa1e9454e0eaf60d74889c01fda (patch)
tree8d1babbae4cc678e7d6c8e42c9a56aaa92d4cd5b
parentb5797b659f879474b4081c4e1a00e955c38a4dcb (diff)
downloadbcm5719-llvm-5ec3333d2401eaa1e9454e0eaf60d74889c01fda.tar.gz
bcm5719-llvm-5ec3333d2401eaa1e9454e0eaf60d74889c01fda.zip
[PM] Update Polly for LLVM r226394 and r226396 which changed some of the
block splitting interfaces to accept specific analyses rather than a pass. llvm-svn: 226398
-rw-r--r--polly/lib/CodeGen/BlockGenerators.cpp14
-rw-r--r--polly/lib/CodeGen/IslCodeGeneration.cpp4
-rw-r--r--polly/lib/CodeGen/LoopGenerators.cpp2
-rw-r--r--polly/lib/Support/ScopHelper.cpp23
4 files changed, 35 insertions, 8 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
diff --git a/polly/lib/Support/ScopHelper.cpp b/polly/lib/Support/ScopHelper.cpp
index 1b7b9a217d0..bf6ad07e26b 100644
--- a/polly/lib/Support/ScopHelper.cpp
+++ b/polly/lib/Support/ScopHelper.cpp
@@ -13,6 +13,7 @@
#include "polly/Support/ScopHelper.h"
#include "polly/ScopInfo.h"
+#include "llvm/Analysis/AliasAnalysis.h"
#include "llvm/Analysis/LoopInfo.h"
#include "llvm/Analysis/RegionInfo.h"
#include "llvm/Analysis/ScalarEvolution.h"
@@ -89,7 +90,13 @@ BasicBlock *polly::createSingleExitEdge(Region *R, Pass *P) {
if (R->contains(*PI))
Preds.push_back(*PI);
- return SplitBlockPredecessors(BB, Preds, ".region", P);
+ auto *AA = P->getAnalysisIfAvailable<AliasAnalysis>();
+ auto *DTWP = P->getAnalysisIfAvailable<DominatorTreeWrapperPass>();
+ auto *DT = DTWP ? &DTWP->getDomTree() : nullptr;
+ auto *LIWP = P->getAnalysisIfAvailable<LoopInfoWrapperPass>();
+ auto *LI = LIWP ? &LIWP->getLoopInfo() : nullptr;
+
+ return SplitBlockPredecessors(BB, Preds, ".region", AA, DT, LI);
}
static void replaceScopAndRegionEntry(polly::Scop *S, BasicBlock *OldEntry,
@@ -110,7 +117,12 @@ BasicBlock *polly::simplifyRegion(Scop *S, Pass *P) {
// Create single entry edge if the region has multiple entry edges.
if (!EnteringBB) {
- NewEntry = SplitBlock(OldEntry, OldEntry->begin(), P);
+ auto *DTWP = P->getAnalysisIfAvailable<DominatorTreeWrapperPass>();
+ auto *DT = DTWP ? &DTWP->getDomTree() : nullptr;
+ auto *LIWP = P->getAnalysisIfAvailable<LoopInfoWrapperPass>();
+ auto *LI = LIWP ? &LIWP->getLoopInfo() : nullptr;
+
+ NewEntry = SplitBlock(OldEntry, OldEntry->begin(), DT, LI);
EnteringBB = OldEntry;
}
@@ -171,8 +183,13 @@ void polly::splitEntryBlockForAlloca(BasicBlock *EntryBlock, Pass *P) {
while (isa<AllocaInst>(I))
++I;
+ auto *DTWP = P->getAnalysisIfAvailable<DominatorTreeWrapperPass>();
+ auto *DT = DTWP ? &DTWP->getDomTree() : nullptr;
+ auto *LIWP = P->getAnalysisIfAvailable<LoopInfoWrapperPass>();
+ auto *LI = LIWP ? &LIWP->getLoopInfo() : nullptr;
+
// SplitBlock updates DT, DF and LI.
- BasicBlock *NewEntry = SplitBlock(EntryBlock, I, P);
+ BasicBlock *NewEntry = SplitBlock(EntryBlock, I, DT, LI);
if (RegionInfoPass *RIP = P->getAnalysisIfAvailable<RegionInfoPass>())
RIP->getRegionInfo().splitBlock(NewEntry, EntryBlock);
}
OpenPOWER on IntegriCloud