================
@@ -176,6 +204,37 @@ bool ScopedNoAliasAAResult::mayAliasInScopes(const MDNode
*Scopes,
return true;
}
+bool ScopedNoAliasAAResult::mayAliasInDisjointDomains(const MDNode *Scopes1,
+ const MDNode *Scopes2) {
+ if (!Scopes1 || !Scopes2)
+ return true;
+
+ // Collect the domains with disjoint scopes that the first access is in.
+ SmallPtrSet<const MDNode *, 16> Domains;
+ for (const MDOperand &MDOp : Scopes1->operands())
+ if (const MDNode *MD = dyn_cast<MDNode>(MDOp))
+ if (const MDNode *Domain = AliasScopeNode(MD).getDomain())
+ if (AliasScopeDomainNode(Domain).hasDisjointScopes())
+ Domains.insert(Domain);
----------------
brunodf-gf wrote:
This logic could be shared with `collectScopedDomains` above, it is very
similar?
https://github.com/llvm/llvm-project/pull/218768
_______________________________________________
llvm-branch-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits