diff options
Diffstat (limited to 'llvm/lib/Analysis/ScalarEvolution.cpp')
| -rw-r--r-- | llvm/lib/Analysis/ScalarEvolution.cpp | 17 |
1 files changed, 6 insertions, 11 deletions
diff --git a/llvm/lib/Analysis/ScalarEvolution.cpp b/llvm/lib/Analysis/ScalarEvolution.cpp index 648412a63a0..26a9a5ddf1e 100644 --- a/llvm/lib/Analysis/ScalarEvolution.cpp +++ b/llvm/lib/Analysis/ScalarEvolution.cpp @@ -4507,17 +4507,6 @@ static Optional<BinaryOp> MatchBinaryOp(Value *V, DominatorTree &DT) { if (!Op) return None; - // Recognise intrinsic loop.decrement.reg, and as this has exactly the same - // semantics as a Sub, return a binary sub expression. - if (auto *II = dyn_cast<IntrinsicInst>(V)) { - switch (II->getIntrinsicID()) { - case Intrinsic::loop_decrement_reg: - return BinaryOp(Instruction::Sub, II->getOperand(0), II->getOperand(1)); - default: - return None; - } - } - // Implementation detail: all the cleverness here should happen without // creating new SCEV expressions -- our caller knowns tricks to avoid creating // SCEV expressions when possible, and we should not break that. @@ -4586,6 +4575,12 @@ static Optional<BinaryOp> MatchBinaryOp(Value *V, DominatorTree &DT) { break; } + // Recognise intrinsic loop.decrement.reg, and as this has exactly the same + // semantics as a Sub, return a binary sub expression. + if (auto *II = dyn_cast<IntrinsicInst>(V)) + if (II->getIntrinsicID() == Intrinsic::loop_decrement_reg) + return BinaryOp(Instruction::Sub, II->getOperand(0), II->getOperand(1)); + return None; } |

