[llvm] Attributor: Infer noalias.addrspace metadata for memory instructions (PR #136553)
Matt Arsenault via llvm-commits
llvm-commits at lists.llvm.org
Thu May 22 12:19:03 PDT 2025
================
@@ -12778,6 +12779,191 @@ struct AAAddressSpaceCallSiteArgument final : AAAddressSpaceImpl {
};
} // namespace
+/// ------------------------ No Alias Address Space ---------------------------
+// This attrubte assumes flat address space can alias all other address space
+namespace {
+struct AANoAliasAddrSpaceImpl : public AANoAliasAddrSpace {
+ AANoAliasAddrSpaceImpl(const IRPosition &IRP, Attributor &A)
+ : AANoAliasAddrSpace(IRP, A) {}
+
+ void initialize(Attributor &A) override {
+ assert(getAssociatedType()->isPtrOrPtrVectorTy() &&
+ "Associated value is not a pointer");
+
+ resetASRanges(A);
+
+ auto FlatAS = A.getInfoCache().getFlatAddressSpace();
+ if (!FlatAS.has_value()) {
+ indicatePessimisticFixpoint();
+ return;
+ }
+
+ removeAS(FlatAS.value());
----------------
arsenm wrote:
```suggestion
removeAS(*FlatAS);
```
It's more canonical to use operator bool() and operator* on optional
https://github.com/llvm/llvm-project/pull/136553
More information about the llvm-commits
mailing list