mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-14 00:32:55 +00:00
Move the EliminateIVUsers call back out to its original location. Now that
a ScalarEvolution bug with overflow handling is fixed, the normal analysis code will automatically decline to operate on the icmp instructions which are responsible for the loop exit. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101032 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
27dead44e0
commit
d890f29ca6
@ -406,6 +406,9 @@ bool IndVarSimplify::runOnLoop(Loop *L, LPPassManager &LPM) {
|
||||
if (!isa<SCEVCouldNotCompute>(BackedgeTakenCount))
|
||||
RewriteLoopExitValues(L, Rewriter);
|
||||
|
||||
// Simplify ICmp IV users.
|
||||
EliminateIVComparisons();
|
||||
|
||||
// Compute the type of the largest recurrence expression, and decide whether
|
||||
// a canonical induction variable should be inserted.
|
||||
const Type *LargestType = 0;
|
||||
@ -471,19 +474,10 @@ bool IndVarSimplify::runOnLoop(Loop *L, LPPassManager &LPM) {
|
||||
ExitingBlock) {
|
||||
assert(NeedCannIV &&
|
||||
"LinearFunctionTestReplace requires a canonical induction variable");
|
||||
|
||||
// Can't rewrite non-branch yet.
|
||||
if (BranchInst *BI = dyn_cast<BranchInst>(ExitingBlock->getTerminator())) {
|
||||
// Eliminate comparisons which are always true or always false, due to
|
||||
// the known backedge-taken count. This may include comparisons which
|
||||
// are currently controlling (part of) the loop exit, so we can only do
|
||||
// it when we know we're going to insert our own loop exit code.
|
||||
EliminateIVComparisons();
|
||||
|
||||
// Insert new loop exit code.
|
||||
if (BranchInst *BI = dyn_cast<BranchInst>(ExitingBlock->getTerminator()))
|
||||
NewICmp = LinearFunctionTestReplace(L, BackedgeTakenCount, IndVar,
|
||||
ExitingBlock, BI, Rewriter);
|
||||
}
|
||||
}
|
||||
|
||||
// Rewrite IV-derived expressions. Clears the rewriter cache.
|
||||
|
Loading…
x
Reference in New Issue
Block a user