(svn r10779) -Fix: GCC 4.2 makes (by default for -O2, -O3 and -Os) an assumption that signed integers do not overflow, whereas it is very likely that some of the legacy code does so. It furthermore breaks with the assumed standard (the behaviour is not actually defined in the standard) about the behaviour when signed integers wrap.
authorrubidium
Sat, 04 Aug 2007 00:45:53 +0000
changeset 7902 cd82da0e7c9b
parent 7901 1af11255e634
child 7903 a951b023d97e
(svn r10779) -Fix: GCC 4.2 makes (by default for -O2, -O3 and -Os) an assumption that signed integers do not overflow, whereas it is very likely that some of the legacy code does so. It furthermore breaks with the assumed standard (the behaviour is not actually defined in the standard) about the behaviour when signed integers wrap.
config.lib
--- a/config.lib	Fri Aug 03 23:26:12 2007 +0000
+++ b/config.lib	Sat Aug 04 00:45:53 2007 +0000
@@ -838,6 +838,14 @@
 		CFLAGS="$CFLAGS -fno-strict-aliasing"
 	fi
 
+	# GCC 4.2+ automatically assumes that signed overflows do
+	# not occur in signed arithmetics, whereas we are not
+	# sure that they will not happen. It furthermore complains
+	# about it's own optimized code in some places.
+	if [ $cc_version -ge 42 ]; then
+		CFLAGS="$CFLAGS -fno-strict-overflow"
+	fi
+
 	if [ "$os" != "CYGWIN" ] && [ "$os" != "FREEBSD" ] && [ "$os" != "OPENBSD" ] && [ "$os" != "MINGW" ] && [ "$os" != "MORPHOS" ] && [ "$os" != "OSX" ] && [ "$os" != "WINCE" ] && [ "$os" != "PSP" ] && [ "$os" != "OS2" ]; then
 		LIBS="$LIBS -lpthread"
 		LIBS="$LIBS -lrt"