diff --git a/llvm/lib/Transforms/IPO/AttributorAttributes.cpp b/llvm/lib/Transforms/IPO/AttributorAttributes.cpp index b3f656da5e33fb..26196f0a241622 100644 --- a/llvm/lib/Transforms/IPO/AttributorAttributes.cpp +++ b/llvm/lib/Transforms/IPO/AttributorAttributes.cpp @@ -6229,9 +6229,13 @@ void AAMemoryLocationImpl::categorizePtrValue( MLK = NO_GLOBAL_INTERNAL_MEM; else MLK = NO_GLOBAL_EXTERNAL_MEM; - } else if (isa(V)) + } else if (isa(V) && + !NullPointerIsDefined(getAssociatedFunction(), + V.getType()->getPointerAddressSpace())) { + return true; + } else if (isa(V)) { MLK = NO_LOCAL_MEM; - else if (const auto *CB = dyn_cast(&V)) { + } else if (const auto *CB = dyn_cast(&V)) { const auto &NoAliasAA = A.getAAFor(*this, IRPosition::callsite_returned(*CB)); if (NoAliasAA.isAssumedNoAlias())