<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Sun, Jun 12, 2016 at 8:03 PM, Yichao Yu via llvm-commits <span dir="ltr"><<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">yuyichao added a comment.<br>
<br>
In another word, IMHO,<br>
<br>
  %v1 = load i64, i64 *%p1, !tbaa !0<br>
  %v2 = load i64, i64 *%p1, !tbaa !1<br>
<br>
should be invalid IR (and the optimizer should not be allowed to create this) if `!1` and `!2` are non-aliasing tbaa node. </blockquote><div>Why?</div><div>It's entirely possible to create a language where this is a valid and useful lowering.</div><div>TBAA applies *to the load*, not to the *pointer*, and the langref says nothing about it requiring it to assign consistent TBAA nodes to different loads of the same pointer.</div><div><br></div></div></div></div>