Re: [PERFORM] Sun performance - Major discovery! - Mailing list pgsql-hackers

From Marko Karppinen
Subject Re: [PERFORM] Sun performance - Major discovery!
Date
Msg-id DEDF8FE1-FC12-11D7-81B6-000A958D89B8@karppinen.fi
Whole thread Raw
In response to Re: [PERFORM] Sun performance - Major discovery!  (Bruce Momjian <pgman@candle.pha.pa.us>)
Responses Re: [PERFORM] Sun performance - Major discovery!  (Peter Eisentraut <peter_e@gmx.net>)
Re: [PERFORM] Sun performance - Major discovery!  (Tom Lane <tgl@sss.pgh.pa.us>)
List pgsql-hackers
On 8.10.2003, at 21:31, Bruce Momjian wrote:
> Well, this is really embarassing.  I can't imagine why we would not set
> at least -O on all platforms.  Looking at the template files, I see
> these have no optimization set:
>
>     darwin

Regarding Darwin optimizations, Apple has introduced a "-fast" flag in
their GCC 3.3 version that they recommend when compiling code for their
new G5 systems. Because of this, I foresee a lot of people defining
CFLAGS="-fast" on their systems.

This is problematic for PostgreSQL, however, since the -fast flag is
the equivalent of:

-O3 -falign-loops-max-skip=15 -falign-jumps-max-skip=15
-falign-loops=16 -falign-jumps=16 -falign-functions=16 -malign-natural
-ffast-math -fstrict-aliasing -frelax-aliasing -fgcse-mem-alias
-funroll-loops -floop-transpose -floop-to-memset -finline-floor
-mcpu=G5 -mpowerpc64 -mpowerpc-gpopt -mtune=G5 -fsched-interblock
-fload-after-store  --param max-gcse-passes=3  -fno-gcse-sm
-fgcse-loop-depth -funit-at-a-time  -fcallgraph-inlining
-fdisable-typechecking-for-spec

At least the --fast-math part causes problems, seeing that PostgreSQL
actually checks for the __FAST_MATH__ macro to make sure that it isn't
turned on. There might be other problems with Apple's flags, but I
think that the __FAST_MATH__ check should be altered.

As you know, setting --fast-math in GCC is the equivalent of setting
-fno-math-errno, -funsafe-math-optimizations, -fno-trapping-math,
-ffinite-math-only and -fno-signaling-nans. What really should be done,
I think, is adding the opposites of these flags (-fmath-errno,
-fno-unsafe-math-optimizations, -ftrapping_math, -fno-finite-math-only
and -fsignaling-nans) to the command line if __FAST_MATH__ is detected.
This would allow people to use CFLAGS="-fast" on their G5s, beat some
Xeon speed records, and not worry about esoteric IEEE math standards.
What do you guys think?

GCC sets __FAST_MATH__ even if you counter a -ffast-math with the
negating flags above. This means that it is not currently possible to
use the -fast flag when compiling PostgreSQL at all. Instead, you have
to go through all the flags Apple is setting and only pass on those
that don't break pg.

mk


pgsql-hackers by date:

Previous
From: Marko Karppinen
Date:
Subject: Re: Hacking PostgreSQL to work in Mac OS X 10.3 (Panther 7B85)
Next
From: Bruce Momjian
Date:
Subject: Re: [PATCHES] fix for strict-alias warnings