Go patch committed: Build math library with -funsafe-math-optimizations

Richard Guenther richard.guenther@gmail.com
Thu Feb 9 10:29:00 GMT 2012


On Wed, Feb 8, 2012 at 8:38 PM, Ian Lance Taylor <iant@google.com> wrote:
> The master Go math library uses assembler code on 386 processors to take
> advantage of 387 instructions.  This patch lets gccgo do the same thing,
> by compiling the math library with -funsafe-math-optimizations.  I also
> pass -mfancy-math-387, although that is the default.  It would not be
> appropriate to compile all Go code with -funsafe-math-optimizations, of
> course, but the math library is designed to handle it.

Huh ... I'd rather not do that if I were you.  Instead I'd say we lack a
machine specific flag to enable the fancy-x87-math patterns which
then -funsafe-math-optimizations should enable.  The x87 math
routines are the only thing you are after, right?  No math-library
can be _safe_ against -funsafe-math-optimizations I believe.

Richard.

> The compiler currently rewrites calls to, e.g., acos to call acosl
> instead when using excess precision.  This also enables the use of
> assembler routines on 387.  I tweaked the compiler to only do this when
> optimizing, which is probably how it should have been done anyhow.  (At
> some point this code will move into the gcc interface out of the
> frontend proper.)
>
> With this change the math library no longer refers to functions like
> acosl on 386 systems--the operations are done inline using 387
> instructions--which should address some portability problems.
>
> Bootstrapped and ran Go testsuite on x86_64-unknown-linux-gnu (32-bit
> and 64-bit mode).  Committed to mainline.
>
> Ian
>



More information about the Gcc-patches mailing list