<div dir="ltr">Hi Chandler,<div><br></div><div style>I attempted to address your concerns back in October/November. I may not have gotten it right, but I certainly didn't ignore your input. If you look at the section starting at line 3244 in DependenceAnalysis.cpp, you'll see that I try to take advantage of GEPs if they exist and if they are the same type. If they don't or aren't, then I fall back and use the SCEVs directly.</div>
<div style><br></div><div style>I'll have to read the rest of Arnold's email carefully.</div><div style><br></div><div style>Thanks,</div><div style>Preston</div><div style><br></div><div style><br></div></div><div class="gmail_extra">
<br><br><div class="gmail_quote">On Mon, Jul 1, 2013 at 11:24 AM, Chandler Carruth <span dir="ltr"><<a href="mailto:chandlerc@google.com" target="_blank">chandlerc@google.com</a>></span> wrote:<br><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">Just FYI,</div><div class="gmail_extra"><div class="im"><br><div class="gmail_quote">On Mon, Jul 1, 2013 at 11:18 AM, Arnold Schwaighofer <span dir="ltr"><<a href="mailto:aschwaighofer@apple.com" target="_blank">aschwaighofer@apple.com</a>></span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="overflow:hidden">- Using GetElementPtr during the analysis.<br>
<br>
  Part of the current analysis depends on two geps with matching pointer types. I don’t think this is the right approach. Two differently typed GetElementPtr’s can compute the same access function. The GetElementPtr is only a way to describe address computation. GetElementPtrs don’t impose interesting constraints (see my next point) that would not be embodied by the ScalarEvolution of the pointer. But the ScalarEvolution is in a canonical form and therefore we would not need to dependent on matching gep pointer types.<br>


  I believe the analysis should directly work from and directly interpret the ScalarEvolution function describing the access function.</div></blockquote></div><br></div>This has come up before. I made similar comments a long time ago about the dependence analysis pass. I really think that it is using GEPs as though they were SCEV descriptions of a pointer, and would be substantially better to implement (as you describe) in terms of SCEVs directly.</div>

</div>
</blockquote></div><br></div>