[llvm] [LVI] Handle nonnull attributes at callsite (PR #125377)

Yingwei Zheng via llvm-commits llvm-commits at lists.llvm.org
Sun Feb 2 21:59:46 PST 2025


================
@@ -622,10 +622,12 @@ LazyValueInfoImpl::solveBlockValueImpl(Value *Val, BasicBlock *BB) {
   return getFromRangeMetadata(BBI);
 }
 
-static void AddNonNullPointer(Value *Ptr, NonNullPointerSet &PtrSet) {
+static void AddNonNullPointer(Value *Ptr, NonNullPointerSet &PtrSet,
+                              bool IsDereferenced = true) {
   // TODO: Use NullPointerIsDefined instead.
   if (Ptr->getType()->getPointerAddressSpace() == 0)
-    PtrSet.insert(getUnderlyingObject(Ptr));
+    PtrSet.insert(IsDereferenced ? getUnderlyingObject(Ptr)
+                                 : Ptr->stripInBoundsOffsets());
----------------
dtcxzyw wrote:

It is worse than `getUnderlyingObject`.


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


More information about the llvm-commits mailing list