]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Issue 5553: Improved Py_LOCAL_INLINE to actually inline under compilers other than MSC
authorDaniel Stutzbach <daniel@stutzbachenterprises.com>
Tue, 31 Aug 2010 19:51:07 +0000 (19:51 +0000)
committerDaniel Stutzbach <daniel@stutzbachenterprises.com>
Tue, 31 Aug 2010 19:51:07 +0000 (19:51 +0000)
Include/pyport.h
Misc/NEWS
Modules/_sre.c
configure
configure.in
pyconfig.h.in

index 3932dc6372296a430fa9a38b2e8c98d7aa626808..799e6cfb4d25a6e0f8a8f4af6a227327bd751f8a 100644 (file)
@@ -266,8 +266,6 @@ typedef Py_intptr_t     Py_ssize_t;
  * should keep using static.
  */
 
-#undef USE_INLINE /* XXX - set via configure? */
-
 #if defined(_MSC_VER)
 #if defined(PY_LOCAL_AGGRESSIVE)
 /* enable more aggressive optimization for visual studio */
index 32d26ff8b13c31e34546f7c29c12647996400915..e32d61e802f63e95a970adf906ebd8b3fd41378c 100644 (file)
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -12,6 +12,10 @@ What's New in Python 3.2 Alpha 2?
 Core and Builtins
 -----------------
 
+- Issue #5553: The Py_LOCAL_INLINE macro now results in inlining on
+  most platforms.  Previously, it online inlined when using Microsoft
+  Visual C.
+
 - Issue #9712: Fix tokenize on identifiers that start with non-ascii names.
 
 - Issue #9688: __basicsize__ and __itemsize__ must be accessed as Py_ssize_t.
index 7ac17bfcbe7b075f73cc0558c3e26c8ed29412ea..2b764b11cadcef2bfdf98c4985f8d5356dad996d 100644 (file)
@@ -67,9 +67,6 @@ static char copyright[] =
 /* enables fast searching */
 #define USE_FAST_SEARCH
 
-/* enables aggressive inlining (always on for Visual C) */
-#undef USE_INLINE
-
 /* enables copy/deepcopy handling (work in progress) */
 #undef USE_BUILTIN_COPY
 
index 4dd233207e97b41523f97f52a2c697d31af126fc..f94b125bbdf37f93c300f5a11de02426fba64b77 100755 (executable)
--- a/configure
+++ b/configure
@@ -638,6 +638,7 @@ SVNVERSION
 ARFLAGS
 AR
 RANLIB
+USE_INLINE
 GNULD
 LINKCC
 RUNSHARED
@@ -4754,6 +4755,55 @@ esac
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GNULD" >&5
 $as_echo "$GNULD" >&6; }
 
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for inline" >&5
+$as_echo_n "checking for inline... " >&6; }
+if test "${ac_cv_c_inline+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_c_inline=no
+for ac_kw in inline __inline__ __inline; do
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#ifndef __cplusplus
+typedef int foo_t;
+static $ac_kw foo_t static_foo () {return 0; }
+$ac_kw foo_t foo () {return 0; }
+#endif
+
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_c_inline=$ac_kw
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  test "$ac_cv_c_inline" != no && break
+done
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_inline" >&5
+$as_echo "$ac_cv_c_inline" >&6; }
+
+case $ac_cv_c_inline in
+  inline | yes) ;;
+  *)
+    case $ac_cv_c_inline in
+      no) ac_val=;;
+      *) ac_val=$ac_cv_c_inline;;
+    esac
+    cat >>confdefs.h <<_ACEOF
+#ifndef __cplusplus
+#define inline $ac_val
+#endif
+_ACEOF
+    ;;
+esac
+
+if test "$ac_cv_c_inline" != no ; then
+        $as_echo "#define USE_INLINE 1" >>confdefs.h
+
+
+fi
+
+
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for --enable-shared" >&5
 $as_echo_n "checking for --enable-shared... " >&6; }
 # Check whether --enable-shared was given.
index f36b28c453e8ebd68d2c95e37b5119b0fe3b2b38..df8dc9a6cbfbf32b159a14545683acaf0b817723 100644 (file)
@@ -660,6 +660,13 @@ case `"$ac_prog" -V 2>&1 < /dev/null` in
 esac
 AC_MSG_RESULT($GNULD)
 
+AC_C_INLINE
+if test "$ac_cv_c_inline" != no ; then
+        AC_DEFINE(USE_INLINE,1)
+        AC_SUBST(USE_INLINE)
+fi
+
+
 AC_MSG_CHECKING(for --enable-shared)
 AC_ARG_ENABLE(shared,
               AS_HELP_STRING([--enable-shared], [disable/enable building shared python library]))
index ae3f6e4e49eb3109ef560aaf9e0c0ce72683a80a..27e77b62bb5f118698de2b2f0da55856fce784bb 100644 (file)
 /* Define to 0 if you don't want to use computed gotos in ceval.c. */
 #undef USE_COMPUTED_GOTOS
 
+/* Define if the compiler supports the inline keyword */
+#undef USE_INLINE
+
 /* Enable extensions on AIX 3, Interix.  */
 #ifndef _ALL_SOURCE
 # undef _ALL_SOURCE