[Python-checkins] cpython (merge 3.5 -> default): Merge 3.5

victor.stinner python-checkins at python.org
Fri Sep 18 15:09:21 CEST 2015


https://hg.python.org/cpython/rev/8d3ae2fafab1
changeset:   98053:8d3ae2fafab1
parent:      98051:70e18474e0ee
parent:      98052:d4fcb362f7c6
user:        Victor Stinner <victor.stinner at gmail.com>
date:        Fri Sep 18 15:08:14 2015 +0200
summary:
  Merge 3.5

files:
  Include/pyatomic.h |   6 ++----
  Include/pystate.h  |  17 +++++------------
  Misc/NEWS          |   4 ++++
  3 files changed, 11 insertions(+), 16 deletions(-)


diff --git a/Include/pyatomic.h b/Include/pyatomic.h
--- a/Include/pyatomic.h
+++ b/Include/pyatomic.h
@@ -1,8 +1,6 @@
-/* Issue #23644: <stdatomic.h> is incompatible with C++, see:
-   https://gcc.gnu.org/bugzilla/show_bug.cgi?id=60932 */
-#if !defined(Py_LIMITED_API) && !defined(__cplusplus)
 #ifndef Py_ATOMIC_H
 #define Py_ATOMIC_H
+#ifdef Py_BUILD_CORE
 
 #include "dynamic_annotations.h"
 
@@ -248,5 +246,5 @@
 #define _Py_atomic_load_relaxed(ATOMIC_VAL) \
     _Py_atomic_load_explicit(ATOMIC_VAL, _Py_memory_order_relaxed)
 
+#endif  /* Py_BUILD_CORE */
 #endif  /* Py_ATOMIC_H */
-#endif  /* Py_LIMITED_API */
diff --git a/Include/pystate.h b/Include/pystate.h
--- a/Include/pystate.h
+++ b/Include/pystate.h
@@ -177,20 +177,13 @@
 /* Variable and macro for in-line access to current thread state */
 
 /* Assuming the current thread holds the GIL, this is the
-   PyThreadState for the current thread.
-
-   Issue #23644: pyatomic.h is incompatible with C++ (yet). Disable
-   PyThreadState_GET() optimization: declare it as an alias to
-   PyThreadState_Get(), as done for limited API. */
-#if !defined(Py_LIMITED_API) && !defined(__cplusplus)
+   PyThreadState for the current thread. */
+#ifdef Py_BUILD_CORE
 PyAPI_DATA(_Py_atomic_address) _PyThreadState_Current;
-#endif
-
-#if defined(Py_DEBUG) || defined(Py_LIMITED_API) || defined(__cplusplus)
-#define PyThreadState_GET() PyThreadState_Get()
+#  define PyThreadState_GET() \
+             ((PyThreadState*)_Py_atomic_load_relaxed(&_PyThreadState_Current))
 #else
-#define PyThreadState_GET() \
-    ((PyThreadState*)_Py_atomic_load_relaxed(&_PyThreadState_Current))
+#  define PyThreadState_GET() PyThreadState_Get()
 #endif
 
 typedef
diff --git a/Misc/NEWS b/Misc/NEWS
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -100,6 +100,10 @@
 Core and Builtins
 -----------------
 
+- Issue #25150: Hide the private _Py_atomic_xxx symbols from the public
+  Python.h header to fix a compilation error with OpenMP. PyThreadState_GET()
+  becomes an alias to PyThreadState_Get() to avoid ABI incompatibilies.
+
 Library
 -------
 

-- 
Repository URL: https://hg.python.org/cpython


More information about the Python-checkins mailing list