Adds two new default GCC options.
Adds two new default GCC options related to optimizations (-fno-strict-aliasing and -fno-strict-overflow). This should fix some hyperaggressive GCC optimizations. Also updates autoconf option detection.
This commit is contained in:
parent
8df02847e8
commit
efd6d12b97
2 changed files with 24 additions and 18 deletions
28
aclocal.m4
vendored
28
aclocal.m4
vendored
|
@ -133,19 +133,23 @@ if test "$bird_cv_struct_ip_mreqn" = yes ; then
|
||||||
fi
|
fi
|
||||||
])
|
])
|
||||||
|
|
||||||
AC_DEFUN(BIRD_CHECK_GCC_OPTIONS,
|
AC_DEFUN(BIRD_CHECK_GCC_OPTION,
|
||||||
[AC_CACHE_VAL(bird_cv_c_option_no_pointer_sign, [
|
[
|
||||||
cat >conftest.c <<EOF
|
bird_tmp_cflags="$CFLAGS"
|
||||||
int main(void)
|
|
||||||
{ return 0; }
|
CFLAGS="$3 $2"
|
||||||
EOF
|
AC_CACHE_CHECK([whether CC supports $2], $1,
|
||||||
if $CC -Wall -Wno-pointer-sign conftest.c >&AS_MESSAGE_LOG_FD 2>&1 ; then
|
[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([])], [$1=yes], [$1=no])])
|
||||||
bird_cv_c_option_no_pointer_sign=yes
|
|
||||||
else
|
CFLAGS="$bird_tmp_cflags"
|
||||||
bird_cv_c_option_no_pointer_sign=no
|
])
|
||||||
|
|
||||||
|
AC_DEFUN(BIRD_ADD_GCC_OPTION,
|
||||||
|
[
|
||||||
|
if test "$$1" = yes ; then
|
||||||
|
CFLAGS="$CFLAGS $2"
|
||||||
fi
|
fi
|
||||||
rm -rf conftest* a.out
|
])
|
||||||
])])
|
|
||||||
|
|
||||||
# BIRD_CHECK_PROG_FLAVOR_GNU(PROGRAM-PATH, IF-SUCCESS, [IF-FAILURE])
|
# BIRD_CHECK_PROG_FLAVOR_GNU(PROGRAM-PATH, IF-SUCCESS, [IF-FAILURE])
|
||||||
# copied autoconf internal _AC_PATH_PROG_FLAVOR_GNU
|
# copied autoconf internal _AC_PATH_PROG_FLAVOR_GNU
|
||||||
|
|
12
configure.in
12
configure.in
|
@ -87,15 +87,17 @@ if test -z "$GCC" ; then
|
||||||
AC_MSG_ERROR([This program requires the GNU C Compiler.])
|
AC_MSG_ERROR([This program requires the GNU C Compiler.])
|
||||||
fi
|
fi
|
||||||
|
|
||||||
AC_MSG_CHECKING([what CFLAGS should we use])
|
|
||||||
if test "$bird_cflags_default" = yes ; then
|
if test "$bird_cflags_default" = yes ; then
|
||||||
BIRD_CHECK_GCC_OPTIONS
|
BIRD_CHECK_GCC_OPTION(bird_cv_c_option_wno_pointer_sign, -Wno-pointer-sign, -Wall)
|
||||||
|
BIRD_CHECK_GCC_OPTION(bird_cv_c_option_fno_strict_aliasing, -fno-strict-aliasing)
|
||||||
|
BIRD_CHECK_GCC_OPTION(bird_cv_c_option_fno_strict_overflow, -fno-strict-overflow)
|
||||||
|
|
||||||
CFLAGS="$CFLAGS -Wall -Wstrict-prototypes -Wno-parentheses"
|
CFLAGS="$CFLAGS -Wall -Wstrict-prototypes -Wno-parentheses"
|
||||||
if test "$bird_cv_c_option_no_pointer_sign" = yes ; then
|
BIRD_ADD_GCC_OPTION(bird_cv_c_option_wno_pointer_sign, -Wno-pointer-sign)
|
||||||
CFLAGS="$CFLAGS -Wno-pointer-sign"
|
BIRD_ADD_GCC_OPTION(bird_cv_c_option_fno_strict_aliasing, -fno-strict-aliasing)
|
||||||
fi
|
BIRD_ADD_GCC_OPTION(bird_cv_c_option_fno_strict_overflow, -fno-strict-overflow)
|
||||||
fi
|
fi
|
||||||
|
AC_MSG_CHECKING([CFLAGS])
|
||||||
AC_MSG_RESULT($CFLAGS)
|
AC_MSG_RESULT($CFLAGS)
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue