<div dir="ltr"><div class="gmail_default" style>On Mon, Jan 14, 2013 at 10:34 AM,  <span dir="ltr"><<a href="mailto:dag@cray.com" target="_blank" class="cremed">dag@cray.com</a>></span> wrote:<br></div><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 class="im">Chandler Carruth <<a href="mailto:chandlerc@gmail.com" class="cremed">chandlerc@gmail.com</a>> writes:<br>
</div><div class="im">
> 5) Optimize to the max or '-O3'<br>
> - Attribute: maxopt (new attribute)<br>
> - Goal: produce the fastest binary possible.<br>
<br>
</div><div class="im">> This level should always produce binaries at least as fast as opt, but<br>
> they might be faster at the cost of them being larger and taking more<br>
> time to compile.<br>
<br>
</div>That's almost impossible to achieve if you include things like<br>
vectorization.  It is often difficult to know statically whether<br>
vectorization will help or harm.  One can do runtime code selection but<br>
that has its own costs and can be slower than O2 in some cases.<br>
<br>
I simply don't think it's a useful or achieveable guarantee.  It's a<br>
good goal but I would be against making it a reuiqrement as it will<br>
severely limit what we do at O3 over O2.<br></blockquote><div><br></div><div style>Note that this isn't a guarantee or a requirement, but a goal. That said, we should push hard to achieve that goal, including turning off optimizations until we get them *right* if absolutely necessary.</div>
<div><br></div><div style>I specifically agree with you that this makes vectorization really hard to get right. I think that is because vectorization is really hard to get right! ;] Unless passes and optimizations can be set up to speed up code at least as much (and hopefully more... ;]) than they slow down code, I don't think they should be on by default.</div>
<div style><br></div><div style>None of this precludes researching new optimization passes, trying different things, or exposing flags for users with deeply domain specific needs to turn on domain targeted optimization strategies (quite aside from any optimization level). This is just about creating reasonable expectations for the default collections.</div>
</div></div></div>