[llvm] [Analysis] Add Scalable field in MemoryLocation.h (PR #69716)

Harvin Iriawan via llvm-commits llvm-commits at lists.llvm.org
Mon Oct 23 02:23:48 PDT 2023


================
@@ -150,16 +159,29 @@ class LocationSize {
       return beforeOrAfterPointer();
     if (Value == AfterPointer || Other.Value == AfterPointer)
       return afterPointer();
+    if (isScalable() || Other.isScalable())
+      return afterPointer();
 
     return upperBound(std::max(getValue(), Other.getValue()));
   }
 
   bool hasValue() const {
     return Value != AfterPointer && Value != BeforeOrAfterPointer;
   }
-  uint64_t getValue() const {
+  bool isScalable() const { return (Value & ScalableBit); }
+
+  uint64_t getUIntValue() const {
     assert(hasValue() && "Getting value from an unknown LocationSize!");
-    return Value & ~ImpreciseBit;
+    assert((Value & ~(ImpreciseBit | ScalableBit)) < MaxValue &&
+           "Scalable bit of value should be masked");
+    return Value & ~(ImpreciseBit | ScalableBit);
+  }
----------------
harviniriawan wrote:

you meant `getValue().getKnownMinValue()` ? yes ok agreed

https://github.com/llvm/llvm-project/pull/69716


More information about the llvm-commits mailing list