commit 24bd657202379595b514ee17241f019294e86bc9
Author: Stefan Pintilie <stefanp@ca.ibm.com>
Date:   Fri May 28 11:35:12 2021 -0500

    Revert "[NFCI][LoopDeletion] Only query SCEV about loop successor if another successor is also in loop"
    
    This reverts commit b0b2bf3b5da950679db1431aae431a6dedea2245.

diff --git a/llvm/lib/Transforms/Scalar/LoopDeletion.cpp b/llvm/lib/Transforms/Scalar/LoopDeletion.cpp
index 14eb07ab17e6..41be776ec141 100644
--- a/llvm/lib/Transforms/Scalar/LoopDeletion.cpp
+++ b/llvm/lib/Transforms/Scalar/LoopDeletion.cpp
@@ -267,10 +267,10 @@ static bool canProveExitOnFirstIteration(Loop *L, DominatorTree &DT,
     ICmpInst::Predicate Pred;
     Value *LHS, *RHS;
     const BasicBlock *IfTrue, *IfFalse;
-    auto *Term = BB->getTerminator();
     // TODO: Handle switches.
-    if (!match(Term, m_Br(m_ICmp(Pred, m_Value(LHS), m_Value(RHS)),
-                          m_BasicBlock(IfTrue), m_BasicBlock(IfFalse)))) {
+    if (!match(BB->getTerminator(),
+               m_Br(m_ICmp(Pred, m_Value(LHS), m_Value(RHS)),
+                    m_BasicBlock(IfTrue), m_BasicBlock(IfFalse)))) {
       MarkAllSuccessorsLive(BB);
       continue;
     }
@@ -283,16 +283,13 @@ static bool canProveExitOnFirstIteration(Loop *L, DominatorTree &DT,
     // Can we prove constant true or false for this condition?
     const SCEV *LHSS = getSCEVOnFirstIteration(LHS, L, SE, FirstIterSCEV);
     const SCEV *RHSS = getSCEVOnFirstIteration(RHS, L, SE, FirstIterSCEV);
-        // Only query for liveness of in-loop edge if another successor is also
-        // in-loop.
-        // TODO: isKnownPredicateAt is more powerful, but it's too compile time
-        // consuming. So we avoid using it here.
-        if (L->contains(Term->getSuccessor(1)) &&
-            SE.isKnownPredicate(Pred, LHSS, RHSS))
-        MarkLiveEdge(BB, Term->getSuccessor(0));
-    else if (L->contains(Term->getSuccessor(0)) &&
-             SE.isKnownPredicate(ICmpInst::getInversePredicate(Pred), LHSS,
-                                 RHSS)) MarkLiveEdge(BB, Term->getSuccessor(1));
+    // TODO: isKnownPredicateAt is more powerful, but it's too compile time
+    // consuming. So we avoid using it here.
+    if (SE.isKnownPredicate(Pred, LHSS, RHSS))
+      MarkLiveEdge(BB, BB->getTerminator()->getSuccessor(0));
+    else if (SE.isKnownPredicate(ICmpInst::getInversePredicate(Pred), LHSS,
+                                 RHSS))
+      MarkLiveEdge(BB, BB->getTerminator()->getSuccessor(1));
     else
       MarkAllSuccessorsLive(BB);
   }
