diff --git a/llvm/lib/Transforms/Scalar/LICM.cpp b/llvm/lib/Transforms/Scalar/LICM.cpp index 631fa2f27c5b3f..b63544062f39c8 100644 --- a/llvm/lib/Transforms/Scalar/LICM.cpp +++ b/llvm/lib/Transforms/Scalar/LICM.cpp @@ -1782,7 +1782,7 @@ class LoopPromoter : public LoadAndStorePromoter { SmallVectorImpl &LoopInsertPts; SmallVectorImpl &MSSAInsertPts; PredIteratorCache &PredCache; - AliasSetTracker * + AliasSetTracker *AST; MemorySSAUpdater *MSSAU; LoopInfo &LI; DebugLoc DL; @@ -1812,7 +1812,7 @@ class LoopPromoter : public LoadAndStorePromoter { SmallVectorImpl &LEB, SmallVectorImpl &LIP, SmallVectorImpl &MSSAIP, PredIteratorCache &PIC, - AliasSetTracker &ast, MemorySSAUpdater *MSSAU, LoopInfo &li, + AliasSetTracker *ast, MemorySSAUpdater *MSSAU, LoopInfo &li, DebugLoc dl, int alignment, bool UnorderedAtomic, const AAMDNodes &AATags, ICFLoopSafetyInfo &SafetyInfo) : LoadAndStorePromoter(Insts, S), SomePtr(SP), PointerMustAliases(PMA), @@ -1869,11 +1869,13 @@ class LoopPromoter : public LoadAndStorePromoter { void replaceLoadWithValue(LoadInst *LI, Value *V) const override { // Update alias analysis. - AST.copyValue(LI, V); + if (AST) + AST->copyValue(LI, V); } void instructionDeleted(Instruction *I) const override { SafetyInfo.removeInstruction(I); - AST.deleteValue(I); + if (AST) + AST->deleteValue(I); if (MSSAU) MSSAU->removeMemoryAccess(I); } @@ -1919,7 +1921,7 @@ bool llvm::promoteLoopAccessesToScalars( ICFLoopSafetyInfo *SafetyInfo, OptimizationRemarkEmitter *ORE) { // Verify inputs. assert(LI != nullptr && DT != nullptr && CurLoop != nullptr && - CurAST != nullptr && SafetyInfo != nullptr && + SafetyInfo != nullptr && "Unexpected Input to promoteLoopAccessesToScalars"); Value *SomePtr = *PointerMustAliases.begin(); @@ -2147,7 +2149,7 @@ bool llvm::promoteLoopAccessesToScalars( SmallVector NewPHIs; SSAUpdater SSA(&NewPHIs); LoopPromoter Promoter(SomePtr, LoopUses, SSA, PointerMustAliases, ExitBlocks, - InsertPts, MSSAInsertPts, PIC, *CurAST, MSSAU, *LI, DL, + InsertPts, MSSAInsertPts, PIC, CurAST, MSSAU, *LI, DL, Alignment.value(), SawUnorderedAtomic, AATags, *SafetyInfo);