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


On Thu, Feb 9, 2012 at 6:32 PM, Ian Lance Taylor <iant@google.com> wrote:
> 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.

I see.  -funsafe-math-optimizations affects precision though (it doesn't
assume NaNs or Infinities do not happen), see the docs - it enables
-fno-signed-zeros, -fno-trapping-math, -fassociative-math and -freciprocal-math.

Richard.

> Ian


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