<div style="font-family: arial, helvetica, sans-serif"><font size="2"><div class="gmail_quote">On Thu, Jun 21, 2012 at 2:34 PM, Lang Hames <span dir="ltr"><<a href="mailto:lhames@gmail.com" target="_blank">lhames@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi Hal,<div><br></div><div><div class="gmail_quote"><div class="im"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
I object to 'never' because there may be cases in the future where we<br>

can determine that extra precision cannot change the result so we can<br>
use fma while maintaining strict standard compliance. 'strict' is much<br>
better.<br></blockquote><div><br></div></div><div>That's two votes for 'strict'. I'm happy with that. :)</div><div class="im"><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">


For an option whose job it is to set the default FP_CONTRACT state, I<br>
think that -ffp-contract=[no|yes|default] is the best. This makes the<br>
one-to-one correspondence clear to the user.<br></blockquote><div><br></div></div><div><div>This flag isn't intended to set the default FP_CONTRACT behaviour, it's about providing FMA formation modes outside those described by FP_CONTRACT, in particular enabling aggressive formation of FMAs across expression boundaries. I had intended enable this aggressve FMA formation under the -fexcess-precision flag, but as Steve pointed out that flag is overly broad. </div>

<div><br></div><div><span style="border-collapse:collapse;color:rgb(34,34,34);font-family:arial,helvetica,sans-serif">So, proposal:</span></div><div><span style="border-collapse:collapse;color:rgb(34,34,34);font-family:arial,helvetica,sans-serif"><br>

</span></div><div><span style="border-collapse:collapse;color:rgb(34,34,34);font-family:arial,helvetica,sans-serif">New flag: -ffuse-fp-ops={fast,standard,strict}.  Default value will be 'standard', which means following FP_CONTRACT rules.</span></div>

<div><br></div><div>When -ffuse-fp-ops=fast we form FMAs wherever they're profitable, regardless of the FP_CONTRACT state.</div><div>When -ffuse-fp-ops=strict we form FMAs iff/when we can prove that the excess precision won't change the result (which to start with will mean never forming FMAs).</div>

<div><br></div><div>-ffast-math implies -ffuse-fp-ops=fast</div></div></div></div></blockquote><div><br></div><div>This is all fantastic.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div><div class="gmail_quote"><div><div>-fexcess-precision implies -ffuse-fp-ops=fast</div></div></div></div></blockquote><div><br></div><div>I worry about this one, but you seem more confident, and so do others, so carry on! =] My worries are very minor here.</div>
</div></font></div>