This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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


Richard Guenther <richard.guenther@gmail.com> writes:

> 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.

Yes, that approach would make sense, but this doesn't seem like the
right time to do it.

The -funsafe-math-optimizations option does not permit arbitrary
behaviour.  It merely permits a set of optimizations which violate
strict IEEE conformance.  I believe the Go math library can be safe in
the presence of those optimizations, because the library does explicit
checks for NaN and infinity, where necessary, before it does the actual
operation.  The math library has a fairly extensive set of tests,
including tests of exceptional conditions, and it passes the tests when
using -funsafe-math-optimizations.  Note that I'm only using
-funsafe-math-optimizations on x86.

Ian


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]