[Python-checkins] r82957 - in python/branches/py3k: configure configure.in

mark.dickinson python-checkins at python.org
Sun Jul 18 18:01:36 CEST 2010


Author: mark.dickinson
Date: Sun Jul 18 18:01:36 2010
New Revision: 82957

Log:
Add configure check for a bug with gcc soft floating-point and subnormals, to help debug issue 8265.

Modified:
   python/branches/py3k/configure
   python/branches/py3k/configure.in

Modified: python/branches/py3k/configure
==============================================================================
--- python/branches/py3k/configure	(original)
+++ python/branches/py3k/configure	Sun Jul 18 18:01:36 2010
@@ -1,5 +1,5 @@
 #! /bin/sh
-# From configure.in Revision: 82090 .
+# From configure.in Revision: 82746 .
 # Guess values for system-dependent variables and create Makefiles.
 # Generated by GNU Autoconf 2.65 for python 3.2.
 #
@@ -11641,6 +11641,45 @@
 
 fi
 
+# Temporary check for a floating-point bug that appeared on ARM.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for buggy subnormal floating-point" >&5
+$as_echo_n "checking for buggy subnormal floating-point... " >&6; }
+if test "${ac_cv_buggy_subnormal+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+if test "$cross_compiling" = yes; then :
+  ac_cv_buggy_subnormal=no
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int main() {
+    double MIN = 2.2250738585072014e-308;  /* 2**-1022 */
+    double TINY = 4.9406564584124654e-324; /* 2**-1074 */
+    double TRIPLE_TINY = 1.4821969375237396e-323;  /* 3 * TINY */
+
+    double diff = MIN - TRIPLE_TINY;
+    double expected_diff = 2.2250738585071999e-308;
+
+    return !(diff == expected_diff);
+}
+
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  ac_cv_buggy_subnormal=no
+else
+  ac_cv_buggy_subnormal=yes
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_buggy_subnormal" >&5
+$as_echo "$ac_cv_buggy_subnormal" >&6; }
+
 # The short float repr introduced in Python 3.1 requires the
 # correctly-rounded string <-> double conversion functions from
 # Python/dtoa.c, which in turn require that the FPU uses 53-bit

Modified: python/branches/py3k/configure.in
==============================================================================
--- python/branches/py3k/configure.in	(original)
+++ python/branches/py3k/configure.in	Sun Jul 18 18:01:36 2010
@@ -3334,6 +3334,26 @@
    in ARM mixed-endian order (byte order 45670123)])
 fi
 
+# Temporary check for a floating-point bug that appeared on ARM.
+AC_MSG_CHECKING(for buggy subnormal floating-point)
+AC_CACHE_VAL(ac_cv_buggy_subnormal, [
+AC_RUN_IFELSE([AC_LANG_SOURCE([[
+int main() {
+    double MIN = 2.2250738585072014e-308;  /* 2**-1022 */
+    double TINY = 4.9406564584124654e-324; /* 2**-1074 */
+    double TRIPLE_TINY = 1.4821969375237396e-323;  /* 3 * TINY */
+
+    double diff = MIN - TRIPLE_TINY;
+    double expected_diff = 2.2250738585071999e-308;
+
+    return !(diff == expected_diff);    
+}
+]])],
+[ac_cv_buggy_subnormal=no],
+[ac_cv_buggy_subnormal=yes],
+[ac_cv_buggy_subnormal=no])])
+AC_MSG_RESULT($ac_cv_buggy_subnormal)
+
 # The short float repr introduced in Python 3.1 requires the
 # correctly-rounded string <-> double conversion functions from
 # Python/dtoa.c, which in turn require that the FPU uses 53-bit


More information about the Python-checkins mailing list