[llvm] a2ed216 - [LVI] Simplify the getPredicateResult() implementation (NFC)

Nikita Popov via llvm-commits llvm-commits at lists.llvm.org
Thu Jul 4 00:18:01 PDT 2024


Author: Nikita Popov
Date: 2024-07-04T09:17:54+02:00
New Revision: a2ed21648c5faa148037f9e022fccdcb5178cbc3

URL: https://github.com/llvm/llvm-project/commit/a2ed21648c5faa148037f9e022fccdcb5178cbc3
DIFF: https://github.com/llvm/llvm-project/commit/a2ed21648c5faa148037f9e022fccdcb5178cbc3.diff

LOG: [LVI] Simplify the getPredicateResult() implementation (NFC)

By using ConstantRange::icmp().

Added: 
    

Modified: 
    llvm/lib/Analysis/LazyValueInfo.cpp

Removed: 
    


################################################################################
diff  --git a/llvm/lib/Analysis/LazyValueInfo.cpp b/llvm/lib/Analysis/LazyValueInfo.cpp
index 4209ee4a77953..caa5b2559690a 100644
--- a/llvm/lib/Analysis/LazyValueInfo.cpp
+++ b/llvm/lib/Analysis/LazyValueInfo.cpp
@@ -1792,27 +1792,11 @@ getPredicateResult(CmpInst::Predicate Pred, Constant *C,
     if (!CI) return LazyValueInfo::Unknown;
 
     const ConstantRange &CR = Val.getConstantRange();
-    if (Pred == ICmpInst::ICMP_EQ) {
-      if (!CR.contains(CI->getValue()))
-        return LazyValueInfo::False;
-
-      if (CR.isSingleElement())
-        return LazyValueInfo::True;
-    } else if (Pred == ICmpInst::ICMP_NE) {
-      if (!CR.contains(CI->getValue()))
-        return LazyValueInfo::True;
-
-      if (CR.isSingleElement())
-        return LazyValueInfo::False;
-    } else {
-      // Handle more complex predicates.
-      ConstantRange TrueValues =
-          ConstantRange::makeExactICmpRegion(Pred, CI->getValue());
-      if (TrueValues.contains(CR))
-        return LazyValueInfo::True;
-      if (TrueValues.inverse().contains(CR))
-        return LazyValueInfo::False;
-    }
+    ConstantRange RHS(CI->getValue());
+    if (CR.icmp(Pred, RHS))
+      return LazyValueInfo::True;
+    if (CR.icmp(CmpInst::getInversePredicate(Pred), RHS))
+      return LazyValueInfo::False;
     return LazyValueInfo::Unknown;
   }
 


        


More information about the llvm-commits mailing list