From 55e4c76db2d443d5430de30949fbaaa6de0fe89b Mon Sep 17 00:00:00 2001 From: Florian Hahn Date: Fri, 14 Jun 2019 17:22:49 +0000 Subject: [PATCH] Revert [LFTR] Rename variable to minimize confusion [NFC] Reverting because it depends on r363289, which breaks a green dragon build: http://green.lab.llvm.org/green/job/clang-stage2-Rthinlto/18208 This reverts r363293 (git commit c37be29634214fb1cb4c823840bffc31e5ebfe40) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@363425 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Transforms/Scalar/IndVarSimplify.cpp | 33 +++++++++++++----------- 1 file changed, 18 insertions(+), 15 deletions(-) diff --git a/lib/Transforms/Scalar/IndVarSimplify.cpp b/lib/Transforms/Scalar/IndVarSimplify.cpp index aca16f8bc7f..962a2afee87 100644 --- a/lib/Transforms/Scalar/IndVarSimplify.cpp +++ b/lib/Transforms/Scalar/IndVarSimplify.cpp @@ -151,7 +151,7 @@ class IndVarSimplify { bool hasHardUserWithinLoop(const Loop *L, const Instruction *I) const; bool linearFunctionTestReplace(Loop *L, BasicBlock *ExitingBB, - const SCEV *ExitCount, + const SCEV *BackedgeTakenCount, PHINode *IndVar, SCEVExpander &Rewriter); bool sinkUnusedInvariants(Loop *L); @@ -2382,7 +2382,8 @@ static Value *genLoopLimit(PHINode *IndVar, BasicBlock *ExitingBB, /// determine a loop-invariant trip count of the loop, which is actually a much /// broader range than just linear tests. bool IndVarSimplify:: -linearFunctionTestReplace(Loop *L, BasicBlock *ExitingBB, const SCEV *ExitCount, +linearFunctionTestReplace(Loop *L, BasicBlock *ExitingBB, + const SCEV *BackedgeTakenCount, PHINode *IndVar, SCEVExpander &Rewriter) { assert(isLoopCounter(IndVar, L, SE)); assert(L->getLoopLatch() && "Loop no longer in simplified form?"); @@ -2391,7 +2392,7 @@ linearFunctionTestReplace(Loop *L, BasicBlock *ExitingBB, const SCEV *ExitCount, // Initialize CmpIndVar and IVCount to their preincremented values. Value *CmpIndVar = IndVar; - const SCEV *IVCount = ExitCount; + const SCEV *IVCount = BackedgeTakenCount; // If the exiting block is the same as the backedge block, we prefer to // compare against the post-incremented value, otherwise we must compare @@ -2411,9 +2412,10 @@ linearFunctionTestReplace(Loop *L, BasicBlock *ExitingBB, const SCEV *ExitCount, if (SafeToPostInc) { // Add one to the "backedge-taken" count to get the trip count. // This addition may overflow, which is valid as long as the comparison - // is truncated to ExitCount->getType(). - IVCount = SE->getAddExpr(ExitCount, SE->getOne(ExitCount->getType())); - // The ExitCount expression contains the number of times that the + // is truncated to BackedgeTakenCount->getType(). + IVCount = SE->getAddExpr(BackedgeTakenCount, + SE->getOne(BackedgeTakenCount->getType())); + // The BackedgeTaken expression contains the number of times that the // backedge branches to the loop header. This is one less than the // number of times the loop executes, so use the incremented indvar. CmpIndVar = IncVar; @@ -2479,9 +2481,9 @@ linearFunctionTestReplace(Loop *L, BasicBlock *ExitingBB, const SCEV *ExitCount, if (isa(ARStart) && isa(IVCount)) { const APInt &Start = cast(ARStart)->getAPInt(); APInt Count = cast(IVCount)->getAPInt(); - // Note that the post-inc value of ExitCount may have overflowed + // Note that the post-inc value of BackedgeTakenCount may have overflowed // above such that IVCount is now zero. - if (IVCount != ExitCount && Count == 0) { + if (IVCount != BackedgeTakenCount && Count == 0) { Count = APInt::getMaxValue(Count.getBitWidth()).zext(CmpIndVarSize); ++Count; } @@ -2708,21 +2710,21 @@ bool IndVarSimplify::run(Loop *L) { if (!needsLFTR(L, ExitingBB)) continue; - const SCEV *ExitCount = SE->getExitCount(L, ExitingBB); - if (isa(ExitCount)) + const SCEV *BETakenCount = SE->getExitCount(L, ExitingBB); + if (isa(BETakenCount)) continue; // Better to fold to true (TODO: do so!) - if (ExitCount->isZero()) + if (BETakenCount->isZero()) continue; - PHINode *IndVar = FindLoopCounter(L, ExitingBB, ExitCount, SE, DT); + PHINode *IndVar = FindLoopCounter(L, ExitingBB, BETakenCount, SE, DT); if (!IndVar) continue; // Avoid high cost expansions. Note: This heuristic is questionable in // that our definition of "high cost" is not exactly principled. - if (Rewriter.isHighCostExpansion(ExitCount, L)) + if (Rewriter.isHighCostExpansion(BETakenCount, L)) continue; // Check preconditions for proper SCEVExpander operation. SCEV does not @@ -2734,9 +2736,10 @@ bool IndVarSimplify::run(Loop *L) { // // FIXME: SCEV expansion has no way to bail out, so the caller must // explicitly check any assumptions made by SCEV. Brittle. - const SCEVAddRecExpr *AR = dyn_cast(ExitCount); + const SCEVAddRecExpr *AR = dyn_cast(BETakenCount); if (!AR || AR->getLoop()->getLoopPreheader()) - Changed |= linearFunctionTestReplace(L, ExitingBB, ExitCount, IndVar, + Changed |= linearFunctionTestReplace(L, ExitingBB, + BETakenCount, IndVar, Rewriter); } } -- 2.50.1