# HG changeset patch # User rubidium # Date 2007-08-04 00:45:53 # Node ID 1c263f54b76aa44e2d397d9b891bd1b28405a4ae # Parent 862aed0b6ae4a9a446f9811484b78e442aa6fd99 (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. diff --git a/config.lib b/config.lib --- a/config.lib +++ b/config.lib @@ -838,6 +838,14 @@ make_cflags_and_ldflags() { 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"