Michael Govorun <mike@shpion.ru> writes:
> I've found answer! Postgresql have been compiled with aggressive
> optimizations:
> gcc version egcs-2.91.66
> CFLAGS='-O9 -funroll-loops -ffast-math -malign-double -mcpu=pentiumpro
> -march=pentiumpro -fomit-frame-pointer -fno-exceptions'
> After recompiling server with -O2 WAL recycling properly. But I got
> many errors after installing recompiled server and had to dump
> database with "optimized" postgres and restore with -O2 version.
Yeah, adding or removing -malign-double would change the layout of our
on-disk data structures, so it's no surprise you'd need to dump and
reload for that.
Also, -ffast-math is known to be Evil. I thought we had a check to
prevent that (looks ...) yeah we do; how'd you get by this check in
timestamp.c?
/*
* gcc's -ffast-math switch breaks routines that expect exact results from
* expressions like timeval / 3600, where timeval is double.
*/
#ifdef __FAST_MATH__
#error -ffast-math is known to break this code
#endif
As for the other stuff, it theoretically should work, but isn't
egcs-2.91.66 rather old and buggy? Perhaps a newer gcc would work
better.
regards, tom lane