@@ -1792,27 +1792,11 @@ getPredicateResult(CmpInst::Predicate Pred, Constant *C,
17921792    if  (!CI) return  LazyValueInfo::Unknown;
17931793
17941794    const  ConstantRange &CR = Val.getConstantRange ();
1795-     if  (Pred == ICmpInst::ICMP_EQ) {
1796-       if  (!CR.contains (CI->getValue ()))
1797-         return  LazyValueInfo::False;
1798- 
1799-       if  (CR.isSingleElement ())
1800-         return  LazyValueInfo::True;
1801-     } else  if  (Pred == ICmpInst::ICMP_NE) {
1802-       if  (!CR.contains (CI->getValue ()))
1803-         return  LazyValueInfo::True;
1804- 
1805-       if  (CR.isSingleElement ())
1806-         return  LazyValueInfo::False;
1807-     } else  {
1808-       //  Handle more complex predicates.
1809-       ConstantRange TrueValues =
1810-           ConstantRange::makeExactICmpRegion (Pred, CI->getValue ());
1811-       if  (TrueValues.contains (CR))
1812-         return  LazyValueInfo::True;
1813-       if  (TrueValues.inverse ().contains (CR))
1814-         return  LazyValueInfo::False;
1815-     }
1795+     ConstantRange RHS (CI->getValue ());
1796+     if  (CR.icmp (Pred, RHS))
1797+       return  LazyValueInfo::True;
1798+     if  (CR.icmp (CmpInst::getInversePredicate (Pred), RHS))
1799+       return  LazyValueInfo::False;
18161800    return  LazyValueInfo::Unknown;
18171801  }
18181802
0 commit comments