diff options
-rw-r--r-- | llvm/lib/Transforms/Scalar/LICM.cpp | 27 |
1 files changed, 12 insertions, 15 deletions
diff --git a/llvm/lib/Transforms/Scalar/LICM.cpp b/llvm/lib/Transforms/Scalar/LICM.cpp index 17ac6b83993..249db1553e6 100644 --- a/llvm/lib/Transforms/Scalar/LICM.cpp +++ b/llvm/lib/Transforms/Scalar/LICM.cpp @@ -139,8 +139,7 @@ static void hoist(Instruction &I, const DominatorTree *DT, const Loop *CurLoop, MemorySSAUpdater *MSSAU, OptimizationRemarkEmitter *ORE); static bool sink(Instruction &I, LoopInfo *LI, DominatorTree *DT, const Loop *CurLoop, ICFLoopSafetyInfo *SafetyInfo, - MemorySSAUpdater *MSSAU, OptimizationRemarkEmitter *ORE, - bool FreeInLoop); + MemorySSAUpdater *MSSAU, OptimizationRemarkEmitter *ORE); static bool isSafeToExecuteUnconditionally(Instruction &Inst, const DominatorTree *DT, const Loop *CurLoop, @@ -511,7 +510,7 @@ bool llvm::sinkRegion(DomTreeNode *N, AliasAnalysis *AA, LoopInfo *LI, canSinkOrHoistInst(I, AA, DT, CurLoop, CurAST, MSSAU, true, NoOfMemAccTooLarge, &LicmMssaOptCounter, ORE) && !I.mayHaveSideEffects()) { - if (sink(I, LI, DT, CurLoop, SafetyInfo, MSSAU, ORE, FreeInLoop)) { + if (sink(I, LI, DT, CurLoop, SafetyInfo, MSSAU, ORE)) { if (!FreeInLoop) { ++II; eraseInstruction(I, *SafetyInfo, CurAST, MSSAU); @@ -998,16 +997,15 @@ static bool isLoadInvariantInLoop(LoadInst *LI, DominatorTree *DT, namespace { /// Return true if-and-only-if we know how to (mechanically) both hoist and /// sink a given instruction out of a loop. Does not address legality -/// concerns such as aliasing or speculation safety. +/// concerns such as aliasing or speculation safety. bool isHoistableAndSinkableInst(Instruction &I) { // Only these instructions are hoistable/sinkable. - return (isa<LoadInst>(I) || isa<StoreInst>(I) || - isa<CallInst>(I) || isa<FenceInst>(I) || - isa<BinaryOperator>(I) || isa<CastInst>(I) || - isa<SelectInst>(I) || isa<GetElementPtrInst>(I) || - isa<CmpInst>(I) || isa<InsertElementInst>(I) || - isa<ExtractElementInst>(I) || isa<ShuffleVectorInst>(I) || - isa<ExtractValueInst>(I) || isa<InsertValueInst>(I)); + return (isa<LoadInst>(I) || isa<StoreInst>(I) || isa<CallInst>(I) || + isa<FenceInst>(I) || isa<BinaryOperator>(I) || isa<CastInst>(I) || + isa<SelectInst>(I) || isa<GetElementPtrInst>(I) || isa<CmpInst>(I) || + isa<InsertElementInst>(I) || isa<ExtractElementInst>(I) || + isa<ShuffleVectorInst>(I) || isa<ExtractValueInst>(I) || + isa<InsertValueInst>(I)); } /// Return true if all of the alias sets within this AST are known not to /// contain a Mod, or if MSSA knows thare are no MemoryDefs in the loop. @@ -1317,7 +1315,7 @@ static Instruction *CloneInstructionInExitBlock( // Sinking call-sites need to be handled differently from other // instructions. The cloned call-site needs a funclet bundle operand - // appropriate for it's location in the CFG. + // appropriate for its location in the CFG. SmallVector<OperandBundleDef, 1> OpBundles; for (unsigned BundleIdx = 0, BundleEnd = CI->getNumOperandBundles(); BundleIdx != BundleEnd; ++BundleIdx) { @@ -1515,8 +1513,7 @@ static void splitPredecessorsOfLoopExit(PHINode *PN, DominatorTree *DT, /// static bool sink(Instruction &I, LoopInfo *LI, DominatorTree *DT, const Loop *CurLoop, ICFLoopSafetyInfo *SafetyInfo, - MemorySSAUpdater *MSSAU, OptimizationRemarkEmitter *ORE, - bool FreeInLoop) { + MemorySSAUpdater *MSSAU, OptimizationRemarkEmitter *ORE) { LLVM_DEBUG(dbgs() << "LICM sinking instruction: " << I << "\n"); ORE->emit([&]() { return OptimizationRemark(DEBUG_TYPE, "InstSunk", &I) @@ -1530,7 +1527,7 @@ static bool sink(Instruction &I, LoopInfo *LI, DominatorTree *DT, ++NumSunk; // Iterate over users to be ready for actual sinking. Replace users via - // unrechable blocks with undef and make all user PHIs trivially replcable. + // unreachable blocks with undef and make all user PHIs trivially replaceable. SmallPtrSet<Instruction *, 8> VisitedUsers; for (Value::user_iterator UI = I.user_begin(), UE = I.user_end(); UI != UE;) { auto *User = cast<Instruction>(*UI); |