diff options
author | Alexandre Isoard <alexandre.isoard@gmail.com> | 2017-06-29 18:48:56 +0000 |
---|---|---|
committer | Alexandre Isoard <alexandre.isoard@gmail.com> | 2017-06-29 18:48:56 +0000 |
commit | 41044876fcefb5a6917002d679599b7ede6a41bc (patch) | |
tree | 7edf2ca5eeaf0a6813d369059f16bb4cf4f6ac57 /llvm/lib/Analysis/ScalarEvolution.cpp | |
parent | cae83f78aa28f40c023892b5a625a55fda12c1d9 (diff) | |
download | bcm5719-llvm-41044876fcefb5a6917002d679599b7ede6a41bc.tar.gz bcm5719-llvm-41044876fcefb5a6917002d679599b7ede6a41bc.zip |
Reverting r306695 while investigating failing test case.
Failing test case:
Transforms/LoopVectorize.iv_outside_user.ll
llvm-svn: 306723
Diffstat (limited to 'llvm/lib/Analysis/ScalarEvolution.cpp')
-rw-r--r-- | llvm/lib/Analysis/ScalarEvolution.cpp | 26 |
1 files changed, 0 insertions, 26 deletions
diff --git a/llvm/lib/Analysis/ScalarEvolution.cpp b/llvm/lib/Analysis/ScalarEvolution.cpp index 80bbc8b05e2..73a95ec405c 100644 --- a/llvm/lib/Analysis/ScalarEvolution.cpp +++ b/llvm/lib/Analysis/ScalarEvolution.cpp @@ -2935,29 +2935,6 @@ const SCEV *ScalarEvolution::getMulExpr(SmallVectorImpl<const SCEV *> &Ops, return getOrCreateMulExpr(Ops, Flags); } -/// Represents an unsigned remainder expression based on unsigned division. -const SCEV *ScalarEvolution::getURemExpr(const SCEV *LHS, - const SCEV *RHS) { - assert(getEffectiveSCEVType(LHS->getType()) == - getEffectiveSCEVType(RHS->getType()) && - "SCEVURemExpr operand types don't match!"); - - // TODO: - // - short circuit '%a = %x urem %x --> 0' (why is it not done for udiv?) - // - short circuit '%a = %x urem 0 --> %a' (same as for udiv) - // - update upper-bound and lower-bound cache for the final result - // (or improve how subtraction is estimated) - - // Short-circuit easy cases - if (const SCEVConstant *RHSC = dyn_cast<SCEVConstant>(RHS)) - if (RHSC->getValue()->equalsInt(1)) - return getZero(LHS->getType()); // X urem 1 --> 0 - - const SCEV *UDiv = getUDivExpr(LHS, RHS); - const SCEV *Mult = getMulExpr(UDiv, RHS, SCEV::FlagNUW); - return getMinusSCEV(LHS, Mult, SCEV::FlagNUW); -} - /// Get a canonical unsigned division expression, or something simpler if /// possible. const SCEV *ScalarEvolution::getUDivExpr(const SCEV *LHS, @@ -4118,7 +4095,6 @@ static Optional<BinaryOp> MatchBinaryOp(Value *V, DominatorTree &DT) { case Instruction::Sub: case Instruction::Mul: case Instruction::UDiv: - case Instruction::URem: case Instruction::And: case Instruction::Or: case Instruction::AShr: @@ -5440,8 +5416,6 @@ const SCEV *ScalarEvolution::createSCEV(Value *V) { } case Instruction::UDiv: return getUDivExpr(getSCEV(BO->LHS), getSCEV(BO->RHS)); - case Instruction::URem: - return getURemExpr(getSCEV(BO->LHS), getSCEV(BO->RHS)); case Instruction::Sub: { SCEV::NoWrapFlags Flags = SCEV::FlagAnyWrap; if (BO->Op) |