<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><span class=""><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br>
<br>
I believe this follows from the GetUnderlyingObject and<br>
isIdentifiedObject related logic inĀ  BasicAAResult::aliasCheck.<br>
<br>
And I'm not aware of any transforms in LLVM today that contradict the<br>
pointer aliasing rules.<br></blockquote><div><br></div></span><div>I assume you meant "do the wrong thing here". Which i still believe is definitely wrong, FWIW, but i'm too lazy to go searching through bugzilla some more today, so i'm going to let it go.</div><div><br></div><div><br></div></div></div></div></blockquote><div>I'll also point out, you didn't read or write anything in your example.</div><div>Which is strange to me because the usual semantic is "allowed to alias, but not allowed to be used to load/store".</div><div>IE if you ask if the two pointers alias, the answer is yes.</div><div>If you ask if a load can touch a given store, the answer is no.</div><div><br></div><div>Here you are saying the pointer aliasing rules apply even to unwritten/unread pointers.</div><div>That to me, is ... very strange.</div><div><br></div></div></div></div>