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 ---------------------------(end of broadcast)--------------------------- TIP 6: explain analyze is your friend