diff --git a/polly/lib/CodeGen/Utils.cpp b/polly/lib/CodeGen/Utils.cpp index 87e3703edd6a..d6492ffb413f 100644 --- a/polly/lib/CodeGen/Utils.cpp +++ b/polly/lib/CodeGen/Utils.cpp @@ -30,7 +30,7 @@ BasicBlock *polly::executeScopConditionally(Scop &S, Pass *P, Value *RTC) { // Split the entry edge of the region and generate a new basic block on this // edge. This function also updates ScopInfo and RegionInfo. - NewBlock = SplitEdge(R.getEnteringBlock(), R.getEntry(), P); + NewBlock = SplitEdge(R.getEnteringBlock(), R.getEntry(), &DT, &LI); if (DT.dominates(R.getEntry(), NewBlock)) { BasicBlock *OldBlock = R.getEntry(); std::string OldName = OldBlock->getName(); @@ -71,7 +71,7 @@ BasicBlock *polly::executeScopConditionally(Scop &S, Pass *P, Value *RTC) { // PHI nodes that would complicate life. MergeBlock = R.getExit(); else { - MergeBlock = SplitEdge(R.getExitingBlock(), R.getExit(), P); + MergeBlock = SplitEdge(R.getExitingBlock(), R.getExit(), &DT, &LI); // SplitEdge will never split R.getExit(), as R.getExit() has more than // one predecessor. Hence, mergeBlock is always a newly generated block. R.replaceExitRecursive(MergeBlock); diff --git a/polly/lib/Support/ScopHelper.cpp b/polly/lib/Support/ScopHelper.cpp index bf6ad07e26bf..52e673357ae1 100644 --- a/polly/lib/Support/ScopHelper.cpp +++ b/polly/lib/Support/ScopHelper.cpp @@ -115,13 +115,13 @@ BasicBlock *polly::simplifyRegion(Scop *S, Pass *P) { BasicBlock *OldEntry = R->getEntry(); BasicBlock *NewEntry = nullptr; + auto *DTWP = P->getAnalysisIfAvailable(); + auto *DT = DTWP ? &DTWP->getDomTree() : nullptr; + auto *LIWP = P->getAnalysisIfAvailable(); + auto *LI = LIWP ? &LIWP->getLoopInfo() : nullptr; + // Create single entry edge if the region has multiple entry edges. if (!EnteringBB) { - auto *DTWP = P->getAnalysisIfAvailable(); - auto *DT = DTWP ? &DTWP->getDomTree() : nullptr; - auto *LIWP = P->getAnalysisIfAvailable(); - auto *LI = LIWP ? &LIWP->getLoopInfo() : nullptr; - NewEntry = SplitBlock(OldEntry, OldEntry->begin(), DT, LI); EnteringBB = OldEntry; } @@ -129,7 +129,7 @@ BasicBlock *polly::simplifyRegion(Scop *S, Pass *P) { // Create an unconditional entry edge. if (EnteringBB->getTerminator()->getNumSuccessors() != 1) { BasicBlock *EntryBB = NewEntry ? NewEntry : OldEntry; - BasicBlock *SplitEdgeBB = SplitEdge(EnteringBB, EntryBB, P); + BasicBlock *SplitEdgeBB = SplitEdge(EnteringBB, EntryBB, DT, LI); // Once the edge between EnteringBB and EntryBB is split, two cases arise. // The first is simple. The new block is inserted between EnteringBB and