================
@@ -7654,6 +7674,30 @@ store float %2, ptr %arrayidx.i2, align 4, !noalias !6
store float %0, ptr %arrayidx.i, align 4, !noalias !7
```
+And, with a domain whose scopes are disjoint,
+
+```llvm
+; A domain with disjoint scopes and three scopes within it:
+!0 = !{!0, i1 true, !"disjoint domain"}
+!1 = !{!1, !0}
+!2 = !{!2, !0}
+!3 = !{!3, !0}
+
+; Some scope lists:
+!4 = !{!1}
+!5 = !{!2}
+!6 = !{!2, !3}
+!7 = !{!1, !3}
+
+; These two instructions don't alias, because tagging them with !1 and !2
+; implicitly tags them with !noalias !6 and !noalias !7, respectively:
----------------
brunodf-gf wrote:
Since there are now two equivalent definitions of the noalias constraint, it
makes sense to illustrate them both? That is: these two instructions **also**
don't alias because they both have a scope from disjoint-scope domain `!0` in
their `!alias.scope` list, and it is a different scope (respectively `!1` and
`!2`).
https://github.com/llvm/llvm-project/pull/218768
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits