================
@@ -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

Reply via email to