[llvm-dev] defaults for FP contraction [e.g. fused multiply-add]: suggestion and patch to be slightly more aggressive and to make Clang`s optimization settings closer to having the same meaning as when they are given to GCC [at least for "-O3"]

Chris Lattner via llvm-dev llvm-dev at lists.llvm.org
Fri Sep 9 19:40:33 PDT 2016


> On Sep 9, 2016, at 3:27 PM, Steve Canon via llvm-dev <llvm-dev at lists.llvm.org> wrote:
> 
> 
> 
> Sent from my iPhone
> 
> On Sep 9, 2016, at 6:21 PM, Abe Skolnik <a.skolnik at samsung.com <mailto:a.skolnik at samsung.com>> wrote:
> 
>> On 09/09/2016 04:31 PM, Stephen Canon wrote:
>> 
>>> Gating this on -Owhatever is dangerous, .  We should simply default to the pragma “on” state universally.
>> 
>> Why so?  [honestly asking, not arguing]
>> 
>> My guess: b/c we don`t want programs to give different results when compiled at different "-O<...>" settings with the exception of "-Ofast".
> 
> Pretty much.  In particular, imagine a user trying to debug an unexpected floating point result caused by conversion of a*b + c into fma(a, b, c).

I think that’s unavoidable, because of the way the optimization levels work.  Even fma contraction is on by default (something I’d like to see), at -O0, we wouldn't be doing contraction for:

auto x = a*b;
auto y = x+c;

but we would do that at -O2 since we do mem2reg on x.

-Chris

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20160909/f052e785/attachment.html>


More information about the llvm-dev mailing list