[llvm] 68490ae - [NFC] Move lambdae into static functions

Max Kazantsev via llvm-commits llvm-commits at lists.llvm.org
Fri Nov 13 02:07:58 PST 2020


Author: Max Kazantsev
Date: 2020-11-13T17:07:25+07:00
New Revision: 68490aec4e19d72b9249f3144380f006df23aac5

URL: https://github.com/llvm/llvm-project/commit/68490aec4e19d72b9249f3144380f006df23aac5
DIFF: https://github.com/llvm/llvm-project/commit/68490aec4e19d72b9249f3144380f006df23aac5.diff

LOG: [NFC] Move lambdae into static functions

Added: 
    

Modified: 
    llvm/lib/Transforms/Scalar/IndVarSimplify.cpp

Removed: 
    


################################################################################
diff  --git a/llvm/lib/Transforms/Scalar/IndVarSimplify.cpp b/llvm/lib/Transforms/Scalar/IndVarSimplify.cpp
index 4c31064a77da..dfcf89f6d225 100644
--- a/llvm/lib/Transforms/Scalar/IndVarSimplify.cpp
+++ b/llvm/lib/Transforms/Scalar/IndVarSimplify.cpp
@@ -1350,6 +1350,41 @@ analyzeCond(const Loop *L, BranchInst *BI, ScalarEvolution *SE,
   return CanBeReplacedWithInvariant;
 }
 
+static void replaceExitCond(BranchInst *BI, Value *NewCond,
+                            SmallVectorImpl<WeakTrackingVH> &DeadInsts) {
+  auto *OldCond = BI->getCondition();
+  BI->setCondition(NewCond);
+  if (OldCond->use_empty())
+    DeadInsts.emplace_back(OldCond);
+}
+
+static void foldExit(const Loop *L, BasicBlock *ExitingBB, bool IsTaken,
+                     SmallVectorImpl<WeakTrackingVH> &DeadInsts) {
+  BranchInst *BI = cast<BranchInst>(ExitingBB->getTerminator());
+  bool ExitIfTrue = !L->contains(*succ_begin(ExitingBB));
+  auto *OldCond = BI->getCondition();
+  auto *NewCond =
+      ConstantInt::get(OldCond->getType(), IsTaken ? ExitIfTrue : !ExitIfTrue);
+  replaceExitCond(BI, NewCond, DeadInsts);
+}
+
+static void replaceWithInvariantCond(
+    const Loop *L, BasicBlock *ExitingBB, ICmpInst::Predicate InvariantPred,
+    const SCEV *InvariantLHS, const SCEV *InvariantRHS, SCEVExpander &Rewriter,
+    SmallVectorImpl<WeakTrackingVH> &DeadInsts) {
+  BranchInst *BI = cast<BranchInst>(ExitingBB->getTerminator());
+  Rewriter.setInsertPoint(BI);
+  auto *LHSV = Rewriter.expandCodeFor(InvariantLHS);
+  auto *RHSV = Rewriter.expandCodeFor(InvariantRHS);
+  bool ExitIfTrue = !L->contains(*succ_begin(ExitingBB));
+  if (ExitIfTrue)
+    InvariantPred = ICmpInst::getInversePredicate(InvariantPred);
+  IRBuilder<> Builder(BI);
+  auto *NewCond = Builder.CreateICmp(InvariantPred, LHSV, RHSV,
+                                     BI->getCondition()->getName());
+  replaceExitCond(BI, NewCond, DeadInsts);
+}
+
 bool IndVarSimplify::optimizeLoopExits(Loop *L, SCEVExpander &Rewriter) {
   SmallVector<BasicBlock*, 16> ExitingBlocks;
   L->getExitingBlocks(ExitingBlocks);
@@ -1409,38 +1444,6 @@ bool IndVarSimplify::optimizeLoopExits(Loop *L, SCEVExpander &Rewriter) {
   }
 #endif
 
-  auto ReplaceExitCond = [&](BranchInst *BI, Value *NewCond) {
-    auto *OldCond = BI->getCondition();
-    BI->setCondition(NewCond);
-    if (OldCond->use_empty())
-      DeadInsts.emplace_back(OldCond);
-  };
-
-  auto FoldExit = [&](BasicBlock *ExitingBB, bool IsTaken) {
-    BranchInst *BI = cast<BranchInst>(ExitingBB->getTerminator());
-    bool ExitIfTrue = !L->contains(*succ_begin(ExitingBB));
-    auto *OldCond = BI->getCondition();
-    auto *NewCond = ConstantInt::get(OldCond->getType(),
-                                     IsTaken ? ExitIfTrue : !ExitIfTrue);
-    ReplaceExitCond(BI, NewCond);
-  };
-
-  auto ReplaceWithInvariantCond = [&](
-      BasicBlock *ExitingBB, ICmpInst::Predicate InvariantPred,
-      const SCEV *InvariantLHS, const SCEV *InvariantRHS) {
-    BranchInst *BI = cast<BranchInst>(ExitingBB->getTerminator());
-    Rewriter.setInsertPoint(BI);
-    auto *LHSV = Rewriter.expandCodeFor(InvariantLHS);
-    auto *RHSV = Rewriter.expandCodeFor(InvariantRHS);
-    bool ExitIfTrue = !L->contains(*succ_begin(ExitingBB));
-    if (ExitIfTrue)
-      InvariantPred = ICmpInst::getInversePredicate(InvariantPred);
-    IRBuilder<> Builder(BI);
-    auto *NewCond = Builder.CreateICmp(InvariantPred, LHSV, RHSV,
-                                       BI->getCondition()->getName());
-    ReplaceExitCond(BI, NewCond);
-  };
-
   bool Changed = false;
   bool SkipLastIter = false;
   SmallSet<const SCEV*, 8> DominatingExitCounts;
@@ -1450,9 +1453,8 @@ bool IndVarSimplify::optimizeLoopExits(Loop *L, SCEVExpander &Rewriter) {
       // Okay, we do not know the exit count here. Can we at least prove that it
       // will remain the same within iteration space?
       auto *BI = cast<BranchInst>(ExitingBB->getTerminator());
-      auto OptimizeCond = [this, L, BI, ExitingBB, MaxExitCount, &FoldExit,
-                           &ReplaceWithInvariantCond](bool Inverted,
-                                                      bool SkipLastIter) {
+      auto OptimizeCond = [this, L, BI, ExitingBB, MaxExitCount, &Rewriter](
+          bool Inverted, bool SkipLastIter) {
         const SCEV *MaxIter = MaxExitCount;
         if (SkipLastIter) {
           const SCEV *One = SE->getOne(MaxIter->getType());
@@ -1463,11 +1465,11 @@ bool IndVarSimplify::optimizeLoopExits(Loop *L, SCEVExpander &Rewriter) {
         switch (analyzeCond(L, BI, SE, Inverted, MaxIter, InvariantPred,
                             InvariantLHS, InvariantRHS)) {
         case CanBeRemoved:
-          FoldExit(ExitingBB, Inverted);
+          foldExit(L, ExitingBB, Inverted, DeadInsts);
           return true;
         case CanBeReplacedWithInvariant: {
-          ReplaceWithInvariantCond(ExitingBB, InvariantPred, InvariantLHS,
-                                   InvariantRHS);
+          replaceWithInvariantCond(L, ExitingBB, InvariantPred, InvariantLHS,
+                                   InvariantRHS, Rewriter, DeadInsts);
           return true;
         }
         case CannotOptimize:
@@ -1511,7 +1513,7 @@ bool IndVarSimplify::optimizeLoopExits(Loop *L, SCEVExpander &Rewriter) {
     // TODO: Given we know the backedge can't be taken, we should go ahead
     // and break it.  Or at least, kill all the header phis and simplify.
     if (ExitCount->isZero()) {
-      FoldExit(ExitingBB, true);
+      foldExit(L, ExitingBB, true, DeadInsts);
       Changed = true;
       continue;
     }
@@ -1533,7 +1535,7 @@ bool IndVarSimplify::optimizeLoopExits(Loop *L, SCEVExpander &Rewriter) {
     // one?
     if (SE->isLoopEntryGuardedByCond(L, CmpInst::ICMP_ULT,
                                      MaxExitCount, ExitCount)) {
-      FoldExit(ExitingBB, false);
+      foldExit(L, ExitingBB, false, DeadInsts);
       Changed = true;
       continue;
     }
@@ -1543,7 +1545,7 @@ bool IndVarSimplify::optimizeLoopExits(Loop *L, SCEVExpander &Rewriter) {
     // exiting iteration, but (from the visit order) strictly follows another
     // which does the same and is thus dead.
     if (!DominatingExitCounts.insert(ExitCount).second) {
-      FoldExit(ExitingBB, false);
+      foldExit(L, ExitingBB, false, DeadInsts);
       Changed = true;
       continue;
     }


        


More information about the llvm-commits mailing list