NetBSD-Bugs archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: toolchain/50940: cc -ffast-math fails to disable denormals on amd64



The following reply was made to PR toolchain/50940; it has been noted by GNATS.

From: Andreas Gustafsson <gson%gson.org@localhost>
To: Joerg Sonnenberger <joerg%britannica.bec.de@localhost>
Cc: gnats-bugs%NetBSD.org@localhost,
    toolchain-manager%netbsd.org@localhost
Subject: Re: toolchain/50940: cc -ffast-math fails to disable denormals on
 amd64
Date: Fri, 18 Mar 2016 11:48:52 +0200

 Last week, Joerg Sonnenberger wrote:
 > >  Do you at least agree that the current NetBSD behavior is incorrect?
 > 
 > No. Just because some parts of the code is compiled with -ffast-math, it
 > doesn't mean that other parts should get incorrect behavior. That
 > includes strtod and other parts of the run time library. As such,
 > changing the FP state automatically on program execution is much more
 > harmful.
 
 That is a good point, and I'm actually inclined to agree.  In addition
 to the potential harm to unsuspecting libraries, there is also the
 fact that the technique of disabling denormals via crtfastmath.o
 doesn't work if -ffast-math is not specified in the link phase, which
 is likely to be the case when the code compiled with -ffast-math is
 itself a library.  For example, the following build recipe reproduces
 the bug even on the non-NetBSD system that gave correct results when
 the compiling and linking were done in a single cc command:
 
     cc -c -O3 -ffast-math test_denormal.c
     cc test_denormal.o -lm -o test_denormal
 
 Now, if we do resolve that NetBSD is correct in not disabling
 denormals, then we have a different bug instead, that of gcc
 generating code that yields infinity when taking the square root of a
 denormal.  I guess I should just report that upstream, with the above
 recipe.
 
 Earlier, you said:
 > The assumption with -ffast-math is that denormals and infinites
 > don't happen at all.
 
 I still haven't seen any evidence supporting that assertion when it
 comes to denormals.  The -ffast-math option is shorthand for turning
 on multiple options including -ffinite-math-only, which does what you
 say for NaNs and Infs, but it does not mention denormals:
 
    -ffinite-math-only
        Allow optimizations for floating-point arithmetic that assume that
        arguments and results are not NaNs or +-Infs.
 
 -- 
 Andreas Gustafsson, gson%gson.org@localhost
 


Home | Main Index | Thread Index | Old Index