Relax loop ExitCondition predicate restriction.
authorDevang Patel <dpatel@apple.com>
Wed, 19 Sep 2007 00:28:47 +0000 (00:28 +0000)
committerDevang Patel <dpatel@apple.com>
Wed, 19 Sep 2007 00:28:47 +0000 (00:28 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42122 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Transforms/Scalar/LoopIndexSplit.cpp

index cb5060a676540f82e425587acd83914552c660da..d30f18d91b6c1d836abf768b833af905e0a4002b 100644 (file)
@@ -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: