<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Sun, Aug 20, 2017 at 2:47 AM, Ivan A. Kosarev via llvm-dev <span dir="ltr"><<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@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">Hello Daniel,<span class=""><br>
<br>
>>>> the type of (*x) is not compatible with the type of (*b) or,<br>
>>>> recursively, type of b->i. Similarly, the type of (*b) is<br>
>>>> not compatible with (*x) or, recursively, x->i.<br>
>> ...<br>
>>> I think these are interesting interpretations.  I'm not sure<br>
>>> i'd personally agree with them (and there are definitely<br>
>>> compilers out there that do not).<br>
>><br>
>> I wonder how you know that those compilers interpret it<br></span><span class="">
>> differently. If the correct answer for a specific case is<br>
>> "no alias", then reloading of values does not say anything<br>
>> about how authors interpret the cited clause.<br>
>><br>
>> It's only omission of reloading that does matter.<br>
><br></span><span class="">
> I know how to produce internal pass dump files and debug output<br>
> from a lot of compilers (XLC, ICC, GCC, etc)<br>
> So i'm staring at the debug output  to see what it says.<br>
<br></span>
Sorry, what I'm trying to determine here is whether observed facts contradict with either or both of the interpretations. I would appreciate if you can help me with this so once it is settled, we can proceed with resolving outstanding TBAA issues.<br></blockquote><div><br></div><div>I really don't have the energy to keep going around on this.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
So once again, if for a specific case the correct answer is "no alias", then how you know by looking at the generated code, dump files and debug output what way the authors interpret the clause?<br></blockquote><div><br></div><div>Because i can get the compilers to print, explicitly, what their interpretation of tbaa is.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
You said that there are compilers that definitely do not agree with that 'a->i' and 'b->i' may not overlap if the types of (*a) and (*b) are not compatible.</blockquote><div><br></div><div>This is actually not what i said at all.   Because we disagree as to whether they are compatible.  You are asserting "compatibility" as if the rules are easy and everyone must agree with your interpretation, but this is not the case.  I'm not sure why you find that surprising, it's been the case forever that people disagree on interpretations of these rules.</div><div><br></div><div> <br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"> Can we know how you came to this conclusion? Can you provide specific examples?<span class=""><br>
<br></span></blockquote><div><br></div><div>This conversation is becoming both frustrating, energy eating, and honestly, not worth arguing about as there is simply no objective truth to TBAA rules.  So i'm going to bow out.</div><div>Please feel free to do whatever you think is right, that users are happy with, and that you document and test very well.</div><div><br></div><div>Thanks,</div><div>Dan</div></div></div></div>