diff options
-rw-r--r-- | polly/lib/Analysis/ScopInfo.cpp | 2 | ||||
-rw-r--r-- | polly/lib/CodeGen/BlockGenerators.cpp | 42 | ||||
-rw-r--r-- | polly/lib/CodeGen/CodeGeneration.cpp | 2 | ||||
-rw-r--r-- | polly/lib/CodeGen/IslExprBuilder.cpp | 4 | ||||
-rw-r--r-- | polly/lib/CodeGen/IslNodeBuilder.cpp | 38 | ||||
-rw-r--r-- | polly/lib/CodeGen/LoopGenerators.cpp | 14 | ||||
-rw-r--r-- | polly/lib/CodeGen/RuntimeDebugBuilder.cpp | 2 | ||||
-rw-r--r-- | polly/lib/Support/ScopHelper.cpp | 2 |
8 files changed, 54 insertions, 52 deletions
diff --git a/polly/lib/Analysis/ScopInfo.cpp b/polly/lib/Analysis/ScopInfo.cpp index 16ada559c8c..7efebe18dcc 100644 --- a/polly/lib/Analysis/ScopInfo.cpp +++ b/polly/lib/Analysis/ScopInfo.cpp @@ -3593,7 +3593,7 @@ void ScopInfo::buildAccessFunctions(Region &R, BasicBlock &BB, auto &ScopRIL = *SD->getRequiredInvariantLoads(&R); for (BasicBlock::iterator I = BB.begin(), E = --BB.end(); I != E; ++I) { - Instruction *Inst = I; + Instruction *Inst = &*I; PHINode *PHI = dyn_cast<PHINode>(Inst); if (PHI) diff --git a/polly/lib/CodeGen/BlockGenerators.cpp b/polly/lib/CodeGen/BlockGenerators.cpp index f51d2a441f3..40e83acc1fa 100644 --- a/polly/lib/CodeGen/BlockGenerators.cpp +++ b/polly/lib/CodeGen/BlockGenerators.cpp @@ -79,7 +79,7 @@ Value *BlockGenerator::trySynthesizeNewValue(ScopStmt &Stmt, Value *Old, assert(IP != Builder.GetInsertBlock()->end() && "Only instructions can be insert points for SCEVExpander"); Value *Expanded = expandCodeFor(S, SE, DL, "polly", NewScev, - Old->getType(), IP, &VTV); + Old->getType(), &*IP, &VTV); BBMap[Old] = Expanded; return Expanded; @@ -281,8 +281,8 @@ void BlockGenerator::copyStmt(ScopStmt &Stmt, LoopToScevMapT <S, } BasicBlock *BlockGenerator::splitBB(BasicBlock *BB) { - BasicBlock *CopyBB = - SplitBlock(Builder.GetInsertBlock(), Builder.GetInsertPoint(), &DT, &LI); + BasicBlock *CopyBB = SplitBlock(Builder.GetInsertBlock(), + &*Builder.GetInsertPoint(), &DT, &LI); CopyBB->setName("polly.stmt." + BB->getName()); return CopyBB; } @@ -291,7 +291,7 @@ BasicBlock *BlockGenerator::copyBB(ScopStmt &Stmt, BasicBlock *BB, ValueMapT &BBMap, LoopToScevMapT <S, isl_id_to_ast_expr *NewAccesses) { BasicBlock *CopyBB = splitBB(BB); - Builder.SetInsertPoint(CopyBB->begin()); + Builder.SetInsertPoint(&CopyBB->front()); generateScalarLoads(Stmt, BBMap); copyBB(Stmt, BB, CopyBB, BBMap, LTS, NewAccesses); @@ -319,7 +319,7 @@ Value *BlockGenerator::getOrCreateAlloca(Value *ScalarBase, auto *Ty = ScalarBase->getType(); auto NewAddr = new AllocaInst(Ty, ScalarBase->getName() + NameExt); EntryBB = &Builder.GetInsertBlock()->getParent()->getEntryBlock(); - NewAddr->insertBefore(EntryBB->getFirstInsertionPt()); + NewAddr->insertBefore(&*EntryBB->getFirstInsertionPt()); Map[ScalarBase] = NewAddr; } @@ -549,7 +549,7 @@ void BlockGenerator::createScalarFinalization(Region &R) { // Create the merge PHI that merges the optimized and unoptimized version. PHINode *MergePHI = PHINode::Create(EscapeInst->getType(), 2, EscapeInst->getName() + ".merge"); - MergePHI->insertBefore(MergeBB->getFirstInsertionPt()); + MergePHI->insertBefore(&*MergeBB->getFirstInsertionPt()); // Add the respective values to the merge PHI. MergePHI->addIncoming(EscapeInstReload, OptExitBB); @@ -624,7 +624,7 @@ void BlockGenerator::createExitPHINodeMerges(Scop &S) { Reload = Builder.CreateBitOrPointerCast(Reload, PHI->getType()); Value *OriginalValue = PHI->getIncomingValueForBlock(MergeBB); auto *MergePHI = PHINode::Create(PHI->getType(), 2, Name + ".ph.merge"); - MergePHI->insertBefore(MergeBB->getFirstInsertionPt()); + MergePHI->insertBefore(&*MergeBB->getFirstInsertionPt()); MergePHI->addIncoming(Reload, OptExitBB); MergePHI->addIncoming(OriginalValue, ExitBB); int Idx = PHI->getBasicBlockIndex(MergeBB); @@ -965,10 +965,10 @@ void VectorBlockGenerator::copyStmt( "the vector block generator"); BasicBlock *BB = Stmt.getBasicBlock(); - BasicBlock *CopyBB = - SplitBlock(Builder.GetInsertBlock(), Builder.GetInsertPoint(), &DT, &LI); + BasicBlock *CopyBB = SplitBlock(Builder.GetInsertBlock(), + &*Builder.GetInsertPoint(), &DT, &LI); CopyBB->setName("polly.stmt." + BB->getName()); - Builder.SetInsertPoint(CopyBB->begin()); + Builder.SetInsertPoint(&CopyBB->front()); // Create two maps that store the mapping from the original instructions of // the old basic block to their copies in the new basic block. Those maps @@ -1022,10 +1022,10 @@ void RegionGenerator::copyStmt(ScopStmt &Stmt, LoopToScevMapT <S, // Create a dedicated entry for the region where we can reload all demoted // inputs. BasicBlock *EntryBB = R->getEntry(); - BasicBlock *EntryBBCopy = - SplitBlock(Builder.GetInsertBlock(), Builder.GetInsertPoint(), &DT, &LI); + BasicBlock *EntryBBCopy = SplitBlock(Builder.GetInsertBlock(), + &*Builder.GetInsertPoint(), &DT, &LI); EntryBBCopy->setName("polly.stmt." + EntryBB->getName() + ".entry"); - Builder.SetInsertPoint(EntryBBCopy->begin()); + Builder.SetInsertPoint(&EntryBBCopy->front()); generateScalarLoads(Stmt, RegionMaps[EntryBBCopy]); @@ -1057,7 +1057,7 @@ void RegionGenerator::copyStmt(ScopStmt &Stmt, LoopToScevMapT <S, RegionMap = RegionMaps[BBCopyIDom]; // Copy the block with the BlockGenerator. - Builder.SetInsertPoint(BBCopy->begin()); + Builder.SetInsertPoint(&BBCopy->front()); copyBB(Stmt, BB, BBCopy, RegionMap, LTS, IdToAstExp); // In order to remap PHI nodes we store also basic block mappings. @@ -1079,8 +1079,8 @@ void RegionGenerator::copyStmt(ScopStmt &Stmt, LoopToScevMapT <S, } // Now create a new dedicated region exit block and add it to the region map. - BasicBlock *ExitBBCopy = - SplitBlock(Builder.GetInsertBlock(), Builder.GetInsertPoint(), &DT, &LI); + BasicBlock *ExitBBCopy = SplitBlock(Builder.GetInsertBlock(), + &*Builder.GetInsertPoint(), &DT, &LI); ExitBBCopy->setName("polly.stmt." + R->getExit()->getName() + ".exit"); BlockMap[R->getExit()] = ExitBBCopy; @@ -1122,7 +1122,7 @@ void RegionGenerator::copyStmt(ScopStmt &Stmt, LoopToScevMapT <S, PHINode::Create(Builder.getInt32Ty(), 2, "polly.subregion.iv"); Instruction *LoopPHIInc = BinaryOperator::CreateAdd( LoopPHI, Builder.getInt32(1), "polly.subregion.iv.inc"); - LoopPHI->insertBefore(BBCopy->begin()); + LoopPHI->insertBefore(&BBCopy->front()); LoopPHIInc->insertBefore(BBCopy->getTerminator()); for (auto *PredBB : make_range(pred_begin(BB), pred_end(BB))) { @@ -1142,7 +1142,7 @@ void RegionGenerator::copyStmt(ScopStmt &Stmt, LoopToScevMapT <S, } // Continue generating code in the exit block. - Builder.SetInsertPoint(ExitBBCopy->getFirstInsertionPt()); + Builder.SetInsertPoint(&*ExitBBCopy->getFirstInsertionPt()); // Write values visible to other statements. generateScalarStores(Stmt, LTS, ValueMap); @@ -1168,6 +1168,7 @@ void RegionGenerator::generateScalarStores(ScopStmt &Stmt, LoopToScevMapT <S, // In case we add the store into an exiting block, we need to restore the // position for stores in the exit node. + BasicBlock *SavedInsertBB = Builder.GetInsertBlock(); auto SavedInsertionPoint = Builder.GetInsertPoint(); ValueMapT *LocalBBMap = &BBMap; @@ -1189,7 +1190,7 @@ void RegionGenerator::generateScalarStores(ScopStmt &Stmt, LoopToScevMapT <S, // Restore the insertion point if necessary. if (isa<TerminatorInst>(ScalarInst)) - Builder.SetInsertPoint(SavedInsertionPoint); + Builder.SetInsertPoint(SavedInsertBB, SavedInsertionPoint); } } @@ -1216,10 +1217,11 @@ void RegionGenerator::addOperandToPHI(ScopStmt &Stmt, const PHINode *PHI, Value *Op = PHI->getIncomingValueForBlock(IncomingBB); + BasicBlock *OldBlock = Builder.GetInsertBlock(); auto OldIP = Builder.GetInsertPoint(); Builder.SetInsertPoint(BBCopy->getTerminator()); OpCopy = getNewValue(Stmt, Op, BBCopyMap, LTS, getLoopForInst(PHI)); - Builder.SetInsertPoint(OldIP); + Builder.SetInsertPoint(OldBlock, OldIP); } else { if (PHICopy->getBasicBlockIndex(BBCopy) >= 0) diff --git a/polly/lib/CodeGen/CodeGeneration.cpp b/polly/lib/CodeGen/CodeGeneration.cpp index 4ea9db338bc..7e6f044953d 100644 --- a/polly/lib/CodeGen/CodeGeneration.cpp +++ b/polly/lib/CodeGen/CodeGeneration.cpp @@ -153,7 +153,7 @@ public: Value *RTC = buildRTC(Builder, NodeBuilder.getExprBuilder()); Builder.GetInsertBlock()->getTerminator()->setOperand(0, RTC); - Builder.SetInsertPoint(StartBlock->begin()); + Builder.SetInsertPoint(&StartBlock->front()); NodeBuilder.create(AstRoot); diff --git a/polly/lib/CodeGen/IslExprBuilder.cpp b/polly/lib/CodeGen/IslExprBuilder.cpp index 8faaeafe33a..5e037e215cc 100644 --- a/polly/lib/CodeGen/IslExprBuilder.cpp +++ b/polly/lib/CodeGen/IslExprBuilder.cpp @@ -157,7 +157,7 @@ Value *IslExprBuilder::createAccessAddress(isl_ast_expr *Expr) { DimSCEV = SCEVParameterRewriter::rewrite(DimSCEV, SE, Map); Value *DimSize = expandCodeFor(S, SE, DL, "polly", DimSCEV, DimSCEV->getType(), - Builder.GetInsertPoint()); + &*Builder.GetInsertPoint()); Type *Ty = getWidestType(DimSize->getType(), IndexOp->getType()); @@ -495,7 +495,7 @@ IslExprBuilder::createOpBooleanConditional(__isl_take isl_ast_expr *Expr) { auto InsertBB = Builder.GetInsertBlock(); auto InsertPoint = Builder.GetInsertPoint(); - auto NextBB = SplitBlock(InsertBB, InsertPoint, &DT, &LI); + auto NextBB = SplitBlock(InsertBB, &*InsertPoint, &DT, &LI); BasicBlock *CondBB = BasicBlock::Create(Context, "polly.cond", F); LI.changeLoopFor(CondBB, LI.getLoopFor(InsertBB)); DT.addNewBlock(CondBB, InsertBB); diff --git a/polly/lib/CodeGen/IslNodeBuilder.cpp b/polly/lib/CodeGen/IslNodeBuilder.cpp index 6dc1678c6cf..1942d9d35c0 100644 --- a/polly/lib/CodeGen/IslNodeBuilder.cpp +++ b/polly/lib/CodeGen/IslNodeBuilder.cpp @@ -475,7 +475,7 @@ void IslNodeBuilder::createForSequential(__isl_take isl_ast_node *For) { IDToValue.erase(IDToValue.find(IteratorID)); - Builder.SetInsertPoint(ExitBlock->begin()); + Builder.SetInsertPoint(&ExitBlock->front()); isl_ast_node_free(For); isl_ast_expr_free(Iterator); @@ -538,10 +538,10 @@ void IslNodeBuilder::createForParallel(__isl_take isl_ast_node *For) { // The preamble of parallel code interacts different than normal code with // e.g., scalar initialization. Therefore, we ensure the parallel code is // separated from the last basic block. - BasicBlock *ParBB = - SplitBlock(Builder.GetInsertBlock(), Builder.GetInsertPoint(), &DT, &LI); + BasicBlock *ParBB = SplitBlock(Builder.GetInsertBlock(), + &*Builder.GetInsertPoint(), &DT, &LI); ParBB->setName("polly.parallel.for"); - Builder.SetInsertPoint(ParBB->begin()); + Builder.SetInsertPoint(&ParBB->front()); Body = isl_ast_node_for_get_body(For); Init = isl_ast_node_for_get_init(For); @@ -597,7 +597,7 @@ void IslNodeBuilder::createForParallel(__isl_take isl_ast_node *For) { IV = ParallelLoopGen.createParallelLoop(ValueLB, ValueUB, ValueInc, SubtreeValues, NewValues, &LoopBody); BasicBlock::iterator AfterLoop = Builder.GetInsertPoint(); - Builder.SetInsertPoint(LoopBody); + Builder.SetInsertPoint(&*LoopBody); // Save the current values. auto ValueMapCopy = ValueMap; @@ -620,7 +620,7 @@ void IslNodeBuilder::createForParallel(__isl_take isl_ast_node *For) { ValueMap = ValueMapCopy; IDToValue = IDToValueCopy; - Builder.SetInsertPoint(AfterLoop); + Builder.SetInsertPoint(&*AfterLoop); removeSubFuncFromDomTree((*LoopBody).getParent()->getParent(), DT); for (const Loop *L : Loops) @@ -656,10 +656,10 @@ void IslNodeBuilder::createIf(__isl_take isl_ast_node *If) { Function *F = Builder.GetInsertBlock()->getParent(); LLVMContext &Context = F->getContext(); - BasicBlock *CondBB = - SplitBlock(Builder.GetInsertBlock(), Builder.GetInsertPoint(), &DT, &LI); + BasicBlock *CondBB = SplitBlock(Builder.GetInsertBlock(), + &*Builder.GetInsertPoint(), &DT, &LI); CondBB->setName("polly.cond"); - BasicBlock *MergeBB = SplitBlock(CondBB, CondBB->begin(), &DT, &LI); + BasicBlock *MergeBB = SplitBlock(CondBB, &CondBB->front(), &DT, &LI); MergeBB->setName("polly.merge"); BasicBlock *ThenBB = BasicBlock::Create(Context, "polly.then", F); BasicBlock *ElseBB = BasicBlock::Create(Context, "polly.else", F); @@ -683,16 +683,16 @@ void IslNodeBuilder::createIf(__isl_take isl_ast_node *If) { Builder.CreateBr(MergeBB); Builder.SetInsertPoint(ElseBB); Builder.CreateBr(MergeBB); - Builder.SetInsertPoint(ThenBB->begin()); + Builder.SetInsertPoint(&ThenBB->front()); create(isl_ast_node_if_get_then(If)); - Builder.SetInsertPoint(ElseBB->begin()); + Builder.SetInsertPoint(&ElseBB->front()); if (isl_ast_node_if_has_else(If)) create(isl_ast_node_if_get_else(If)); - Builder.SetInsertPoint(MergeBB->begin()); + Builder.SetInsertPoint(&MergeBB->front()); isl_ast_node_free(If); } @@ -885,10 +885,10 @@ Value *IslNodeBuilder::preloadInvariantLoad(const MemoryAccess &MA, Cond = Builder.CreateIsNotNull(Cond); BasicBlock *CondBB = SplitBlock(Builder.GetInsertBlock(), - Builder.GetInsertPoint(), &DT, &LI); + &*Builder.GetInsertPoint(), &DT, &LI); CondBB->setName("polly.preload.cond"); - BasicBlock *MergeBB = SplitBlock(CondBB, CondBB->begin(), &DT, &LI); + BasicBlock *MergeBB = SplitBlock(CondBB, &CondBB->front(), &DT, &LI); MergeBB->setName("polly.preload.merge"); Function *F = Builder.GetInsertBlock()->getParent(); @@ -979,7 +979,7 @@ void IslNodeBuilder::preloadInvariantEquivClass( BasicBlock *EntryBB = &Builder.GetInsertBlock()->getParent()->getEntryBlock(); auto *Alloca = new AllocaInst(AccInstTy, AccInst->getName() + ".preload.s2a"); - Alloca->insertBefore(EntryBB->getFirstInsertionPt()); + Alloca->insertBefore(&*EntryBB->getFirstInsertionPt()); Builder.CreateStore(PreloadVal, Alloca); const Region &R = S.getRegion(); @@ -1007,10 +1007,10 @@ void IslNodeBuilder::preloadInvariantLoads() { if (InvariantEquivClasses.empty()) return; - BasicBlock *PreLoadBB = - SplitBlock(Builder.GetInsertBlock(), Builder.GetInsertPoint(), &DT, &LI); + BasicBlock *PreLoadBB = SplitBlock(Builder.GetInsertBlock(), + &*Builder.GetInsertPoint(), &DT, &LI); PreLoadBB->setName("polly.preload.begin"); - Builder.SetInsertPoint(PreLoadBB->begin()); + Builder.SetInsertPoint(&PreLoadBB->front()); for (const auto &IAClass : InvariantEquivClasses) preloadInvariantEquivClass(IAClass); @@ -1046,7 +1046,7 @@ void IslNodeBuilder::addParameters(__isl_take isl_set *Context) { } Value *IslNodeBuilder::generateSCEV(const SCEV *Expr) { - Instruction *InsertLocation = --(Builder.GetInsertBlock()->end()); + Instruction *InsertLocation = &*--(Builder.GetInsertBlock()->end()); return expandCodeFor(S, SE, DL, "polly", Expr, Expr->getType(), InsertLocation, &ValueMap); } diff --git a/polly/lib/CodeGen/LoopGenerators.cpp b/polly/lib/CodeGen/LoopGenerators.cpp index 74f19a8cffa..195e11df636 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()++, &DT, &LI); + ExitBB = SplitBlock(BeforeBB, &*Builder.GetInsertPoint(), &DT, &LI); ExitBB->setName("polly.loop_exit"); // BeforeBB @@ -153,7 +153,7 @@ Value *ParallelLoopGenerator::createParallelLoop( BasicBlock::iterator BeforeLoop = Builder.GetInsertPoint(); Value *IV = createSubFn(Stride, Struct, UsedValues, Map, &SubFn); *LoopBody = Builder.GetInsertPoint(); - Builder.SetInsertPoint(BeforeLoop); + Builder.SetInsertPoint(&*BeforeLoop); Value *SubFnParam = Builder.CreateBitCast(Struct, Builder.getInt8PtrTy(), "polly.par.userContext"); @@ -287,7 +287,7 @@ ParallelLoopGenerator::storeValuesIntoStruct(SetVector<Value *> &Values) { // in the entry block of the function and use annotations to denote the actual // live span (similar to clang). BasicBlock &EntryBB = Builder.GetInsertBlock()->getParent()->getEntryBlock(); - Instruction *IP = EntryBB.getFirstInsertionPt(); + Instruction *IP = &*EntryBB.getFirstInsertionPt(); StructType *Ty = StructType::get(Builder.getContext(), Members); AllocaInst *Struct = new AllocaInst(Ty, 0, "polly.par.userContext", IP); @@ -340,8 +340,8 @@ Value *ParallelLoopGenerator::createSubFn(Value *Stride, AllocaInst *StructData, Builder.SetInsertPoint(HeaderBB); LBPtr = Builder.CreateAlloca(LongType, 0, "polly.par.LBPtr"); UBPtr = Builder.CreateAlloca(LongType, 0, "polly.par.UBPtr"); - UserContext = Builder.CreateBitCast(SubFn->arg_begin(), StructData->getType(), - "polly.par.userContext"); + UserContext = Builder.CreateBitCast( + &*SubFn->arg_begin(), StructData->getType(), "polly.par.userContext"); extractValuesFromStruct(Data, StructData->getAllocatedType(), UserContext, Map); @@ -365,7 +365,7 @@ Value *ParallelLoopGenerator::createSubFn(Value *Stride, AllocaInst *StructData, "polly.par.UBAdjusted"); Builder.CreateBr(CheckNextBB); - Builder.SetInsertPoint(--Builder.GetInsertPoint()); + Builder.SetInsertPoint(&*--Builder.GetInsertPoint()); IV = createLoop(LB, UB, Stride, Builder, P, LI, DT, AfterBB, ICmpInst::ICMP_SLE, nullptr, true, /* UseGuard */ false); @@ -376,7 +376,7 @@ Value *ParallelLoopGenerator::createSubFn(Value *Stride, AllocaInst *StructData, createCallCleanupThread(); Builder.CreateRetVoid(); - Builder.SetInsertPoint(LoopBody); + Builder.SetInsertPoint(&*LoopBody); *SubFnPtr = SubFn; return IV; diff --git a/polly/lib/CodeGen/RuntimeDebugBuilder.cpp b/polly/lib/CodeGen/RuntimeDebugBuilder.cpp index 29f113dbd0c..96dab502248 100644 --- a/polly/lib/CodeGen/RuntimeDebugBuilder.cpp +++ b/polly/lib/CodeGen/RuntimeDebugBuilder.cpp @@ -174,7 +174,7 @@ void RuntimeDebugBuilder::createGPUPrinterT(PollyIRBuilder &Builder, auto T = ArrayType::get(Builder.getInt32Ty(), ToPrint.size() * 2); Value *Data = new AllocaInst( T, "polly.vprint.buffer", - Builder.GetInsertBlock()->getParent()->getEntryBlock().begin()); + &Builder.GetInsertBlock()->getParent()->getEntryBlock().front()); auto *DataPtr = Builder.CreateGEP(Data, {Zero, Zero}); int Offset = 0; diff --git a/polly/lib/Support/ScopHelper.cpp b/polly/lib/Support/ScopHelper.cpp index b17ffdc91a4..b85e8f96e58 100644 --- a/polly/lib/Support/ScopHelper.cpp +++ b/polly/lib/Support/ScopHelper.cpp @@ -224,7 +224,7 @@ void polly::splitEntryBlockForAlloca(BasicBlock *EntryBlock, Pass *P) { RegionInfo *RI = RIP ? &RIP->getRegionInfo() : nullptr; // splitBlock updates DT, LI and RI. - splitBlock(EntryBlock, I, DT, LI, RI); + splitBlock(EntryBlock, &*I, DT, LI, RI); } /// The SCEVExpander will __not__ generate any code for an existing SDiv/SRem |