On Mon, 7 Aug 2006, Stefan Kaltenbrunner wrote:
> the just added new buildfarm member leveret (fedora core5 x86_64) is
> building with the recently released Intel C-compiler version 9.1.
> It passes all tests on -HEAD but fails on make check in both
> REL8_1_STABLE and REL8_0_STABLE.
> The logs of the later two branches also contain a very large number of
> annoying(stupid) warnings - those seem to be the result of -HEAD using:
>
> CFLAGS=-O2 -mp1 -fno-strict-aliasing -g
>
> while the older branches have
>
> CFLAGS=-O2 -Wall -Wmissing-prototypes -Wpointer-arith -Winline
> -Wdeclaration-after-statement -Wendif-labels -fno-strict-aliasing -g
Yep, I submitted the patch for this change a while back because the
warnings were driving me nuts, and I got tired of manually adjusting
Makefile.global every time I reconfigured. Part of the reason for the
extra flags is due to the fact that on Linux boxen, icc masquerades as
gcc, so that configure cannot tell the difference. This is intended to
make porting easier, since now every configure script in the world does
not need to know about icc, it is "close enough" to gcc for most purposes.
>
> three things to note here:
>
> *) why the large difference in the build-flags ?
Because the removed flags are either not supported in icc, or do something
rather stupid (see -Wall for an example of this).
> *) the large amount of warnings are probably caused by -Wall
That, and -Winline, which to icc means something like "display inlining
optimization stage remarks as warnings" which I don't think was the
intention of the inclusion of the flag here. -Wall also does things like
this.
> *) -HEAD has -mp1 which the intel compiler manual describes as:
>
> -mp1 Improve floating-point precision. -mp1 disables fewer
> optimizations and has less impact on performance than
> -mp.
>
> could that be the reason why -HEAD passes the float4/float8 regression
> tests ?
Exactly. Without -mp1, icc cheats in floating point math, resulting in
non-standard behavior. IIRC, this was NaN == 0.0 which according to the
standard should not be true, but the code generated by icc without -mp1
meant this was true. I suppose it could be argued that this is a bug or a
"feature" resulting in (slightly) faster code at the expense of standards
compliance, but in either case, it does not work out here.
>
>
> Stefan
>
> ---------------------------(end of broadcast)---------------------------
> TIP 4: Have you searched our list archives?
>
> http://archives.postgresql.org
>
--
He is not only dull himself, he is the cause of dullness in others. -- Samuel Johnson