[llvm-branch-commits] [llvm] [AMDGPU] Preserve noclobber after acquire operations from a different addrspace (PR #231855)
Sameer Sahasrabuddhe via llvm-branch-commits
llvm-branch-commits at lists.llvm.org
Thu Oct 15 03:23:06 PDT 2026
================
@@ -411,15 +411,25 @@ bool isReallyAClobber(const Value *Ptr, MemoryDef *Def, AAResults *AA) {
return !AA->isNoAlias(I->getPointerOperand(), Ptr);
};
- if (const auto *F = dyn_cast<FenceInst>(DefInst))
- return isAcquireOrStronger(F->getOrdering());
+ if (const auto *F = dyn_cast<FenceInst>(DefInst)) {
+ if (!isAcquireOrStronger(F->getOrdering()))
+ return false;
+ SIAtomicAddrSpace AccessedAS =
+ toSIAtomicAddrSpace(Ptr->getType()->getPointerAddressSpace());
+ std::optional<SIAtomicAddrSpace> SynchronizedAS =
+ getSynchronizeAddrSpace(*F);
+ // If SynchronizedAS is std::nullopt, it refers to all address spaces.
+ return !SynchronizedAS ||
+ (*SynchronizedAS & AccessedAS) != SIAtomicAddrSpace::NONE;
+ }
if (const auto *I = dyn_cast<AtomicRMWInst>(DefInst))
return isAcquireOrStronger(I->getOrdering()) || MayAlias(I);
if (const auto *I = dyn_cast<AtomicCmpXchgInst>(DefInst))
return isAcquireOrStronger(I->getMergedOrdering()) || MayAlias(I);
+ // TODO This is pessimistic for one-as load-acquires from a different AS.
----------------
ssahasra wrote:
Why not address it in the same PR?
https://github.com/llvm/llvm-project/pull/231855
More information about the llvm-branch-commits
mailing list