Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 70fedcd

Browse files
committed
Use -fno-strict-aliasing if available. Fixes #766696. Will backport to 2.2.
1 parent dfda8d7 commit 70fedcd

2 files changed

Lines changed: 60 additions & 1 deletion

File tree

configure

Lines changed: 44 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
#! /bin/sh
2-
# From configure.in Revision: 1.421 .
2+
# From configure.in Revision: 1.422 .
33
# Guess values for system-dependent variables and create Makefiles.
44
# Generated by GNU Autoconf 2.53 for python 2.3.
55
#
@@ -3645,6 +3645,49 @@ fi
36453645
# tweak BASECFLAGS based on compiler and platform
36463646
case $GCC in
36473647
yes)
3648+
# Python violates C99 rules, by casting between incompatible
3649+
# pointer types. GCC may generate bad code as a result of that,
3650+
# so use -fno-strict-aliasing if supported.
3651+
echo "$as_me:$LINENO: checking whether $CC accepts -fno-strict-aliasing" >&5
3652+
echo $ECHO_N "checking whether $CC accepts -fno-strict-aliasing... $ECHO_C" >&6
3653+
ac_save_cc="$CC"
3654+
CC="$CC -fno-strict-aliasing"
3655+
if test "$cross_compiling" = yes; then
3656+
ac_cv_no_strict_aliasing_ok=no
3657+
else
3658+
cat >conftest.$ac_ext <<_ACEOF
3659+
#line $LINENO "configure"
3660+
#include "confdefs.h"
3661+
int main() { return 0; }
3662+
_ACEOF
3663+
rm -f conftest$ac_exeext
3664+
if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
3665+
(eval $ac_link) 2>&5
3666+
ac_status=$?
3667+
echo "$as_me:$LINENO: \$? = $ac_status" >&5
3668+
(exit $ac_status); } && { ac_try='./conftest$ac_exeext'
3669+
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
3670+
(eval $ac_try) 2>&5
3671+
ac_status=$?
3672+
echo "$as_me:$LINENO: \$? = $ac_status" >&5
3673+
(exit $ac_status); }; }; then
3674+
ac_cv_no_strict_aliasing_ok=yes
3675+
else
3676+
echo "$as_me: program exited with status $ac_status" >&5
3677+
echo "$as_me: failed program was:" >&5
3678+
cat conftest.$ac_ext >&5
3679+
( exit $ac_status )
3680+
ac_cv_no_strict_aliasing_ok=no
3681+
fi
3682+
rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
3683+
fi
3684+
CC="$ac_save_cc"
3685+
echo "$as_me:$LINENO: result: $ac_cv_no_strict_aliasing_ok" >&5
3686+
echo "${ECHO_T}$ac_cv_no_strict_aliasing_ok" >&6
3687+
if test $ac_cv_no_strict_aliasing_ok = yes
3688+
then
3689+
BASECFLAGS="$BASECFLAGS -fno-strict-aliasing"
3690+
fi
36483691
case $ac_sys_system in
36493692
SCO_SV*)
36503693
BASECFLAGS="$BASECFLAGS -m486 -DSCO5"

configure.in

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -641,6 +641,22 @@ AC_SUBST(BASECFLAGS)
641641
# tweak BASECFLAGS based on compiler and platform
642642
case $GCC in
643643
yes)
644+
# Python violates C99 rules, by casting between incompatible
645+
# pointer types. GCC may generate bad code as a result of that,
646+
# so use -fno-strict-aliasing if supported.
647+
AC_MSG_CHECKING(whether $CC accepts -fno-strict-aliasing)
648+
ac_save_cc="$CC"
649+
CC="$CC -fno-strict-aliasing"
650+
AC_TRY_RUN([int main() { return 0; }],
651+
ac_cv_no_strict_aliasing_ok=yes,
652+
ac_cv_no_strict_aliasing_ok=no,
653+
ac_cv_no_strict_aliasing_ok=no)
654+
CC="$ac_save_cc"
655+
AC_MSG_RESULT($ac_cv_no_strict_aliasing_ok)
656+
if test $ac_cv_no_strict_aliasing_ok = yes
657+
then
658+
BASECFLAGS="$BASECFLAGS -fno-strict-aliasing"
659+
fi
644660
case $ac_sys_system in
645661
SCO_SV*)
646662
BASECFLAGS="$BASECFLAGS -m486 -DSCO5"

0 commit comments

Comments
 (0)