diff options
Diffstat (limited to 'lib/Transforms/Scalar/LoopIndexSplit.cpp')
-rw-r--r-- | lib/Transforms/Scalar/LoopIndexSplit.cpp | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/lib/Transforms/Scalar/LoopIndexSplit.cpp b/lib/Transforms/Scalar/LoopIndexSplit.cpp index cb5060a676..d30f18d91b 100644 --- a/lib/Transforms/Scalar/LoopIndexSplit.cpp +++ b/lib/Transforms/Scalar/LoopIndexSplit.cpp @@ -356,11 +356,7 @@ void LoopIndexSplit::findLoopConditionals() { return; // FIXME - if (CI->getPredicate() == ICmpInst::ICMP_SGT - || CI->getPredicate() == ICmpInst::ICMP_UGT - || CI->getPredicate() == ICmpInst::ICMP_SGE - || CI->getPredicate() == ICmpInst::ICMP_UGE - || CI->getPredicate() == ICmpInst::ICMP_EQ + if (CI->getPredicate() == ICmpInst::ICMP_EQ || CI->getPredicate() == ICmpInst::ICMP_NE) return; @@ -1015,6 +1011,12 @@ void LoopIndexSplit::calculateLoopBounds(SplitInfo &SD) { Value *AEV = SD.SplitValue; Value *BSV = SD.SplitValue; + if (ExitCondition->getPredicate() == ICmpInst::ICMP_SGT + || ExitCondition->getPredicate() == ICmpInst::ICMP_UGT + || ExitCondition->getPredicate() == ICmpInst::ICMP_SGE + || ExitCondition->getPredicate() == ICmpInst::ICMP_UGE) + ExitCondition->swapOperands(); + switch (ExitCondition->getPredicate()) { case ICmpInst::ICMP_SGT: case ICmpInst::ICMP_UGT: |