<html><head><style type='text/css'>p { margin: 0; }</style></head><body><div style='font-family: arial,helvetica,sans-serif; font-size: 10pt; color: #000000'><br><hr id="zwchr"><blockquote style="border-left: 2px solid rgb(16, 16, 255); margin-left: 5px; padding-left: 5px; color: rgb(0, 0, 0); font-weight: normal; font-style: normal; text-decoration: none; font-family: Helvetica,Arial,sans-serif; font-size: 12pt;"><b>From: </b>"Chandler Carruth" <chandlerc@gmail.com><br><b>To: </b>"Hal Finkel" <hfinkel@anl.gov>, "Sean Silva" <chisophugis@gmail.com><br><b>Cc: </b>"Xinliang David Li" <davidxl@google.com>, "llvm-dev" <llvm-dev@lists.llvm.org>, "Davide Italiano" <dccitaliano@gmail.com>, "Tim Amini Golling" <mehdi.amini@apple.com>, "Sanjoy Das" <sanjoy@playingwithpointers.com>, "Pete Cooper" <peter_cooper@apple.com><br><b>Sent: </b>Wednesday, July 13, 2016 3:05:26 AM<br><b>Subject: </b>Re: [PM] I think that the new PM needs to learn about inter-analysis dependencies...<br><br><div dir="ltr"><div class="gmail_quote"><div dir="ltr">On Wed, Jul 13, 2016 at 12:39 AM Hal Finkel <<a href="mailto:hfinkel@anl.gov" target="_blank">hfinkel@anl.gov</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;"><div><div style="font-family: arial,helvetica,sans-serif; font-size: 10pt; color: rgb(0, 0, 0);"><span style="font-size: 10pt; line-height: 1.5;">Interesting. I'm not sure this is the right metric, however. There are lots of analyses that hold pointers to other analyses but don't need to. The analysis handle itself can be reacquired lazily if we care to do so. What's truly problematic is holding pointers into another analysis's data structures. To be concrete, holding a pointer to ScalarEvolution is not a fundamental problem because we could make the analysis reacquire the pointer at the start of every query. Holding SCEV* is the problem.</span></div></div></blockquote><div><br></div><div>Agreed. I suspect this is the dominant pattern.</div><div><br></div><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;"><div><div style="font-family: arial,helvetica,sans-serif; font-size: 10pt; color: rgb(0, 0, 0);"><span style="font-size: 10pt; line-height: 1.5;">FWIW, I still think this is common enough to design a solution that makes it easy to get this right.</span></div></div></blockquote><div><br></div><div>I somewhat suspect that it would be better to pass these in along the query path rather than have results cache them. The reason is that if the user of the analysis is aware of the other analyses it depends on, it will also be aware of that cost and the reality of potentially wanting to preserve them.</div><div><br></div><div id="DWT4417">I'd be interested in us spending some time trying to make this refactoring and at least understanding how hard it is before we engineer a solution that makes the analysis management more complex.</div></div></div></blockquote>I'm not too concerned about making analysis management more complex for this purpose; handling transitive analysis invalidation was always going to have been necessary.<br><blockquote style="border-left: 2px solid rgb(16, 16, 255); margin-left: 5px; padding-left: 5px; color: rgb(0, 0, 0); font-weight: normal; font-style: normal; text-decoration: none; font-family: Helvetica,Arial,sans-serif; font-size: 12pt;"><div dir="ltr"><div class="gmail_quote"><div></div><div><br></div><div>So as you seemed to agree in your other email (sorry for the heavily branching thread) perhaps we should start with the potentially error prone approach now, and see how much iteration can move toward "nothing to do" by lifting things into the query path rather than the result object.</div></div></div>
</blockquote>Yes, I'm happy to see where this goes. The more I think about it, the more I suspect that regardless of how easy the scheme is to use the main conceptual challenge will be remembering/knowing that it needs to be used.<br><br> -Hal<br><br>-- <br><div><span name="x"></span>Hal Finkel<br>Assistant Computational Scientist<br>Leadership Computing Facility<br>Argonne National Laboratory<span name="x"></span><br></div></div></body></html>