mirror of
https://github.com/python/cpython
synced 2024-09-05 08:17:45 +00:00
Use -fno-strict-aliasing if available. Fixes #766696. Will backport to 2.2.
This commit is contained in:
parent
dfda8d79ee
commit
70fedcd583
45
configure
vendored
45
configure
vendored
|
@ -1,5 +1,5 @@
|
|||
#! /bin/sh
|
||||
# From configure.in Revision: 1.421 .
|
||||
# From configure.in Revision: 1.422 .
|
||||
# Guess values for system-dependent variables and create Makefiles.
|
||||
# Generated by GNU Autoconf 2.53 for python 2.3.
|
||||
#
|
||||
|
@ -3645,6 +3645,49 @@ fi
|
|||
# tweak BASECFLAGS based on compiler and platform
|
||||
case $GCC in
|
||||
yes)
|
||||
# Python violates C99 rules, by casting between incompatible
|
||||
# pointer types. GCC may generate bad code as a result of that,
|
||||
# so use -fno-strict-aliasing if supported.
|
||||
echo "$as_me:$LINENO: checking whether $CC accepts -fno-strict-aliasing" >&5
|
||||
echo $ECHO_N "checking whether $CC accepts -fno-strict-aliasing... $ECHO_C" >&6
|
||||
ac_save_cc="$CC"
|
||||
CC="$CC -fno-strict-aliasing"
|
||||
if test "$cross_compiling" = yes; then
|
||||
ac_cv_no_strict_aliasing_ok=no
|
||||
else
|
||||
cat >conftest.$ac_ext <<_ACEOF
|
||||
#line $LINENO "configure"
|
||||
#include "confdefs.h"
|
||||
int main() { return 0; }
|
||||
_ACEOF
|
||||
rm -f conftest$ac_exeext
|
||||
if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
|
||||
(eval $ac_link) 2>&5
|
||||
ac_status=$?
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); } && { ac_try='./conftest$ac_exeext'
|
||||
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
|
||||
(eval $ac_try) 2>&5
|
||||
ac_status=$?
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); }; }; then
|
||||
ac_cv_no_strict_aliasing_ok=yes
|
||||
else
|
||||
echo "$as_me: program exited with status $ac_status" >&5
|
||||
echo "$as_me: failed program was:" >&5
|
||||
cat conftest.$ac_ext >&5
|
||||
( exit $ac_status )
|
||||
ac_cv_no_strict_aliasing_ok=no
|
||||
fi
|
||||
rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
|
||||
fi
|
||||
CC="$ac_save_cc"
|
||||
echo "$as_me:$LINENO: result: $ac_cv_no_strict_aliasing_ok" >&5
|
||||
echo "${ECHO_T}$ac_cv_no_strict_aliasing_ok" >&6
|
||||
if test $ac_cv_no_strict_aliasing_ok = yes
|
||||
then
|
||||
BASECFLAGS="$BASECFLAGS -fno-strict-aliasing"
|
||||
fi
|
||||
case $ac_sys_system in
|
||||
SCO_SV*)
|
||||
BASECFLAGS="$BASECFLAGS -m486 -DSCO5"
|
||||
|
|
16
configure.in
16
configure.in
|
@ -641,6 +641,22 @@ AC_SUBST(BASECFLAGS)
|
|||
# tweak BASECFLAGS based on compiler and platform
|
||||
case $GCC in
|
||||
yes)
|
||||
# Python violates C99 rules, by casting between incompatible
|
||||
# pointer types. GCC may generate bad code as a result of that,
|
||||
# so use -fno-strict-aliasing if supported.
|
||||
AC_MSG_CHECKING(whether $CC accepts -fno-strict-aliasing)
|
||||
ac_save_cc="$CC"
|
||||
CC="$CC -fno-strict-aliasing"
|
||||
AC_TRY_RUN([int main() { return 0; }],
|
||||
ac_cv_no_strict_aliasing_ok=yes,
|
||||
ac_cv_no_strict_aliasing_ok=no,
|
||||
ac_cv_no_strict_aliasing_ok=no)
|
||||
CC="$ac_save_cc"
|
||||
AC_MSG_RESULT($ac_cv_no_strict_aliasing_ok)
|
||||
if test $ac_cv_no_strict_aliasing_ok = yes
|
||||
then
|
||||
BASECFLAGS="$BASECFLAGS -fno-strict-aliasing"
|
||||
fi
|
||||
case $ac_sys_system in
|
||||
SCO_SV*)
|
||||
BASECFLAGS="$BASECFLAGS -m486 -DSCO5"
|
||||
|
|
Loading…
Reference in a new issue