diff --git a/llvm/lib/Frontend/OpenMP/OMPIRBuilder.cpp b/llvm/lib/Frontend/OpenMP/OMPIRBuilder.cpp --- a/llvm/lib/Frontend/OpenMP/OMPIRBuilder.cpp +++ b/llvm/lib/Frontend/OpenMP/OMPIRBuilder.cpp @@ -1843,6 +1843,9 @@ OpenMPIRBuilder::createCanonicalLoop(const LocationDescription &Loc, LoopBodyGenCallbackTy BodyGenCB, Value *TripCount, const Twine &Name) { + if (!updateToLocation(Loc)) + return nullptr; + BasicBlock *BB = Loc.IP.getBlock(); BasicBlock *NextBB = BB->getNextNode(); @@ -1887,7 +1890,8 @@ LocationDescription ComputeLoc = ComputeIP.isSet() ? LocationDescription(ComputeIP, Loc.DL) : Loc; - updateToLocation(ComputeLoc); + if (!updateToLocation(ComputeLoc)) + return nullptr; ConstantInt *Zero = ConstantInt::get(IndVarTy, 0); ConstantInt *One = ConstantInt::get(IndVarTy, 1); @@ -3326,7 +3330,7 @@ "Unexpected Insertion point location!"); auto merged = MergeBlockIntoPredecessor(ExitBB); BasicBlock *ExitPredBB = SplitPos->getParent(); - auto InsertBB = merged ? ExitPredBB : ExitBB; + auto *InsertBB = merged ? ExitPredBB : ExitBB; if (!isa_and_nonnull(SplitPos)) SplitPos->eraseFromParent(); Builder.SetInsertPoint(InsertBB); @@ -3451,8 +3455,8 @@ CallInst *OpenMPIRBuilder::createOMPAlloc(const LocationDescription &Loc, Value *Size, Value *Allocator, std::string Name) { - IRBuilder<>::InsertPointGuard IPG(Builder); - Builder.restoreIP(Loc.IP); + if (!updateToLocation(Loc)) + return nullptr; uint32_t SrcLocStrSize; Constant *SrcLocStr = getOrCreateSrcLocStr(Loc, SrcLocStrSize); @@ -3468,8 +3472,8 @@ CallInst *OpenMPIRBuilder::createOMPFree(const LocationDescription &Loc, Value *Addr, Value *Allocator, std::string Name) { - IRBuilder<>::InsertPointGuard IPG(Builder); - Builder.restoreIP(Loc.IP); + if (!updateToLocation(Loc)) + return nullptr; uint32_t SrcLocStrSize; Constant *SrcLocStr = getOrCreateSrcLocStr(Loc, SrcLocStrSize); @@ -3484,8 +3488,8 @@ const LocationDescription &Loc, Value *InteropVar, omp::OMPInteropType InteropType, Value *Device, Value *NumDependences, Value *DependenceAddress, bool HaveNowaitClause) { - IRBuilder<>::InsertPointGuard IPG(Builder); - Builder.restoreIP(Loc.IP); + if (!updateToLocation(Loc)) + return nullptr; uint32_t SrcLocStrSize; Constant *SrcLocStr = getOrCreateSrcLocStr(Loc, SrcLocStrSize); @@ -3512,8 +3516,8 @@ CallInst *OpenMPIRBuilder::createOMPInteropDestroy( const LocationDescription &Loc, Value *InteropVar, Value *Device, Value *NumDependences, Value *DependenceAddress, bool HaveNowaitClause) { - IRBuilder<>::InsertPointGuard IPG(Builder); - Builder.restoreIP(Loc.IP); + if (!updateToLocation(Loc)) + return nullptr; uint32_t SrcLocStrSize; Constant *SrcLocStr = getOrCreateSrcLocStr(Loc, SrcLocStrSize); @@ -3541,8 +3545,9 @@ Value *NumDependences, Value *DependenceAddress, bool HaveNowaitClause) { - IRBuilder<>::InsertPointGuard IPG(Builder); - Builder.restoreIP(Loc.IP); + if (!updateToLocation(Loc)) + return nullptr; + uint32_t SrcLocStrSize; Constant *SrcLocStr = getOrCreateSrcLocStr(Loc, SrcLocStrSize); Value *Ident = getOrCreateIdent(SrcLocStr, SrcLocStrSize); @@ -3567,8 +3572,8 @@ CallInst *OpenMPIRBuilder::createCachedThreadPrivate( const LocationDescription &Loc, llvm::Value *Pointer, llvm::ConstantInt *Size, const llvm::Twine &Name) { - IRBuilder<>::InsertPointGuard IPG(Builder); - Builder.restoreIP(Loc.IP); + if (!updateToLocation(Loc)) + return nullptr; uint32_t SrcLocStrSize; Constant *SrcLocStr = getOrCreateSrcLocStr(Loc, SrcLocStrSize);