<div dir="ltr"><div class="gmail_extra"><br><div class="gmail_quote">On Sat, Sep 7, 2013 at 11:48 AM, Hal Finkel <span dir="ltr"><<a href="mailto:hfinkel@anl.gov" target="_blank" class="cremed">hfinkel@anl.gov</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">I think that we should evaluate this change just like any other: using a cost-benefit analysis of performance vs. compile-time impact averaged over the test suite (and any other code bases we care about). As a practical matter, we should not hold all GVN-related improvements hostage to competition of a GVN rewrite on which no one is actively working.</blockquote>
</div><br>I don't think Danny was suggesting this.</div><div class="gmail_extra"><br></div><div class="gmail_extra">There is a difference between holding all improvements hostage, and arguing against growing the complexity of a pass which is in serious need of refactoring/updating until that occurs. Especially when the reworking proposed is likely to achieve the same concrete goal is the added complexity.</div>
<div class="gmail_extra"><br></div><div class="gmail_extra">I do think that GVN has likely reached the point where adding new layers of complexity to it significantly grow both the cost of maintenance of GVN and the cost of doing a deep reworking of it. I've watched folks try to do deep improvements to our GVN infrastructure, and they have to spend more time trying to replicate all of the current tweaks, hacks, and complexity in it than they do improving the fundamentals of the pass.</div>
<div class="gmail_extra"><br></div><div class="gmail_extra">That doesn't mean we can't possibly improve it as is, but I think there should be a *really* significant need in the immediate future, and some plan or path toward a principled and more maintainable solution. It essentially places a very large scaling factor on the cost side of the cost-benefit analysis because we need to prioritize the long-term needs of the project.</div>
</div>