Issue 5553: Improved Py_LOCAL_INLINE to actually inline under compilers other than MSC
diff --git a/Include/pyport.h b/Include/pyport.h
index 3932dc6..799e6cf 100644
--- a/Include/pyport.h
+++ b/Include/pyport.h
@@ -266,8 +266,6 @@
  * 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 */
diff --git a/Misc/NEWS b/Misc/NEWS
index 32d26ff..e32d61e 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -12,6 +12,10 @@
 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.
diff --git a/Modules/_sre.c b/Modules/_sre.c
index 7ac17bf..2b764b1 100644
--- a/Modules/_sre.c
+++ b/Modules/_sre.c
@@ -67,9 +67,6 @@
 /* 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
 
diff --git a/configure b/configure
index 4dd2332..f94b125 100755
--- a/configure
+++ b/configure
@@ -638,6 +638,7 @@
 ARFLAGS
 AR
 RANLIB
+USE_INLINE
 GNULD
 LINKCC
 RUNSHARED
@@ -4754,6 +4755,55 @@
 { $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.
diff --git a/configure.in b/configure.in
index f36b28c..df8dc9a 100644
--- a/configure.in
+++ b/configure.in
@@ -660,6 +660,13 @@
 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]))
diff --git a/pyconfig.h.in b/pyconfig.h.in
index ae3f6e4..27e77b6 100644
--- a/pyconfig.h.in
+++ b/pyconfig.h.in
@@ -1043,6 +1043,9 @@
 /* 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