[llvm] r299829 - [InstCombine] remove dead cases from icmp pair switches; NFCI

Sanjay Patel via llvm-commits llvm-commits at lists.llvm.org
Sun Apr 9 14:51:34 PDT 2017


Author: spatel
Date: Sun Apr  9 16:51:34 2017
New Revision: 299829

URL: http://llvm.org/viewvc/llvm-project?rev=299829&view=rev
Log:
[InstCombine] remove dead cases from icmp pair switches; NFCI

"PredicatesFoldable" returns false for signed/unsigned mismatched pairs,
so these cases should never exist. We'll default to 'unreachable' on those 
predicate combos instead.

Most of what's left in these switches belongs in InstSimplify (and may 
already be there), so there's probably more that can be done to reduce
this code.

Modified:
    llvm/trunk/lib/Transforms/InstCombine/InstCombineAndOrXor.cpp

Modified: llvm/trunk/lib/Transforms/InstCombine/InstCombineAndOrXor.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/InstCombine/InstCombineAndOrXor.cpp?rev=299829&r1=299828&r2=299829&view=diff
==============================================================================
--- llvm/trunk/lib/Transforms/InstCombine/InstCombineAndOrXor.cpp (original)
+++ llvm/trunk/lib/Transforms/InstCombine/InstCombineAndOrXor.cpp Sun Apr  9 16:51:34 2017
@@ -897,26 +897,18 @@ Value *InstCombiner::FoldAndOfICmps(ICmp
     case ICmpInst::ICMP_EQ:  // (X u< 13 & X == 15) -> false
     case ICmpInst::ICMP_UGT: // (X u< 13 & X u> 15) -> false
       return ConstantInt::get(CmpInst::makeCmpResultType(LHS->getType()), 0);
-    case ICmpInst::ICMP_SGT: // (X u< 13 & X s> 15) -> no change
-      break;
     case ICmpInst::ICMP_NE:  // (X u< 13 & X != 15) -> X u< 13
     case ICmpInst::ICMP_ULT: // (X u< 13 & X u< 15) -> X u< 13
       return LHS;
-    case ICmpInst::ICMP_SLT: // (X u< 13 & X s< 15) -> no change
-      break;
     }
     break;
   case ICmpInst::ICMP_SLT:
     switch (PredR) {
     default:
       llvm_unreachable("Unknown integer condition code!");
-    case ICmpInst::ICMP_UGT: // (X s< 13 & X u> 15) -> no change
-      break;
     case ICmpInst::ICMP_NE:  // (X s< 13 & X != 15) -> X < 13
     case ICmpInst::ICMP_SLT: // (X s< 13 & X s< 15) -> X < 13
       return LHS;
-    case ICmpInst::ICMP_ULT: // (X s< 13 & X u< 15) -> no change
-      break;
     }
     break;
   case ICmpInst::ICMP_UGT:
@@ -926,8 +918,6 @@ Value *InstCombiner::FoldAndOfICmps(ICmp
     case ICmpInst::ICMP_EQ:  // (X u> 13 & X == 15) -> X == 15
     case ICmpInst::ICMP_UGT: // (X u> 13 & X u> 15) -> X u> 15
       return RHS;
-    case ICmpInst::ICMP_SGT: // (X u> 13 & X s> 15) -> no change
-      break;
     case ICmpInst::ICMP_NE:
       if (RHSC == AddOne(LHSC)) // (X u> 13 & X != 14) -> X u> 14
         return Builder->CreateICmp(PredL, Val, RHSC);
@@ -935,8 +925,6 @@ Value *InstCombiner::FoldAndOfICmps(ICmp
     case ICmpInst::ICMP_ULT: // (X u> 13 & X u< 15) -> (X-14) <u 1
       return insertRangeTest(Val, LHSC->getValue() + 1, RHSC->getValue(), false,
                              true);
-    case ICmpInst::ICMP_SLT: // (X u> 13 & X s< 15) -> no change
-      break;
     }
     break;
   case ICmpInst::ICMP_SGT:
@@ -946,8 +934,6 @@ Value *InstCombiner::FoldAndOfICmps(ICmp
     case ICmpInst::ICMP_EQ:  // (X s> 13 & X == 15) -> X == 15
     case ICmpInst::ICMP_SGT: // (X s> 13 & X s> 15) -> X s> 15
       return RHS;
-    case ICmpInst::ICMP_UGT: // (X s> 13 & X u> 15) -> no change
-      break;
     case ICmpInst::ICMP_NE:
       if (RHSC == AddOne(LHSC)) // (X s> 13 & X != 14) -> X s> 14
         return Builder->CreateICmp(PredL, Val, RHSC);
@@ -955,8 +941,6 @@ Value *InstCombiner::FoldAndOfICmps(ICmp
     case ICmpInst::ICMP_SLT: // (X s> 13 & X s< 15) -> (X-14) s< 1
       return insertRangeTest(Val, LHSC->getValue() + 1, RHSC->getValue(), true,
                              true);
-    case ICmpInst::ICMP_ULT: // (X s> 13 & X u< 15) -> no change
-      break;
     }
     break;
   }
@@ -1846,13 +1830,9 @@ Value *InstCombiner::FoldOrOfICmps(ICmpI
         return LHS;
       return insertRangeTest(Val, LHSC->getValue(), RHSC->getValue() + 1, false,
                              false);
-    case ICmpInst::ICMP_SGT: // (X u< 13 | X s> 15) -> no change
-      break;
     case ICmpInst::ICMP_NE:  // (X u< 13 | X != 15) -> X != 15
     case ICmpInst::ICMP_ULT: // (X u< 13 | X u< 15) -> X u< 15
       return RHS;
-    case ICmpInst::ICMP_SLT: // (X u< 13 | X s< 15) -> no change
-      break;
     }
     break;
   case ICmpInst::ICMP_SLT:
@@ -1868,13 +1848,9 @@ Value *InstCombiner::FoldOrOfICmps(ICmpI
         return LHS;
       return insertRangeTest(Val, LHSC->getValue(), RHSC->getValue() + 1, true,
                              false);
-    case ICmpInst::ICMP_UGT: // (X s< 13 | X u> 15) -> no change
-      break;
     case ICmpInst::ICMP_NE:  // (X s< 13 | X != 15) -> X != 15
     case ICmpInst::ICMP_SLT: // (X s< 13 | X s< 15) -> X s< 15
       return RHS;
-    case ICmpInst::ICMP_ULT: // (X s< 13 | X u< 15) -> no change
-      break;
     }
     break;
   case ICmpInst::ICMP_UGT:
@@ -1884,13 +1860,9 @@ Value *InstCombiner::FoldOrOfICmps(ICmpI
     case ICmpInst::ICMP_EQ:  // (X u> 13 | X == 15) -> X u> 13
     case ICmpInst::ICMP_UGT: // (X u> 13 | X u> 15) -> X u> 13
       return LHS;
-    case ICmpInst::ICMP_SGT: // (X u> 13 | X s> 15) -> no change
-      break;
     case ICmpInst::ICMP_NE:  // (X u> 13 | X != 15) -> true
     case ICmpInst::ICMP_ULT: // (X u> 13 | X u< 15) -> true
       return Builder->getTrue();
-    case ICmpInst::ICMP_SLT: // (X u> 13 | X s< 15) -> no change
-      break;
     }
     break;
   case ICmpInst::ICMP_SGT:
@@ -1900,13 +1872,9 @@ Value *InstCombiner::FoldOrOfICmps(ICmpI
     case ICmpInst::ICMP_EQ:  // (X s> 13 | X == 15) -> X > 13
     case ICmpInst::ICMP_SGT: // (X s> 13 | X s> 15) -> X > 13
       return LHS;
-    case ICmpInst::ICMP_UGT: // (X s> 13 | X u> 15) -> no change
-      break;
     case ICmpInst::ICMP_NE:  // (X s> 13 | X != 15) -> true
     case ICmpInst::ICMP_SLT: // (X s> 13 | X s< 15) -> true
       return Builder->getTrue();
-    case ICmpInst::ICMP_ULT: // (X s> 13 | X u< 15) -> no change
-      break;
     }
     break;
   }




More information about the llvm-commits mailing list