Richard Guenther <richard.guent...@gmail.com> writes: > On Wed, Feb 8, 2012 at 8:38 PM, Ian Lance Taylor <i...@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