From a1479b9b89c9e402cf534729abf6ff87f7181f2e Mon Sep 17 00:00:00 2001 From: Segev Finer Date: Fri, 18 Aug 2017 20:23:01 +0300 Subject: [PATCH 1/3] bpo-9566: Silence warnings from pyatomic.h macros Apparently MSVC is too stupid to understand that the alternate branch is not taken and emits a warning for it. Warnings added in https://github.com/python/cpython/pull/2383 --- Include/pyatomic.h | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/Include/pyatomic.h b/Include/pyatomic.h index 832d951f843264..73b9f661b67ad6 100644 --- a/Include/pyatomic.h +++ b/Include/pyatomic.h @@ -351,15 +351,21 @@ inline int _Py_atomic_load_32bit(volatile int* value, int order) { } #define _Py_atomic_store_explicit(ATOMIC_VAL, NEW_VAL, ORDER) \ + __pragma(warning(push)) \ + __pragma(warning(disable: 4133)) \ if (sizeof(*ATOMIC_VAL._value) == 8) { \ _Py_atomic_store_64bit(ATOMIC_VAL._value, NEW_VAL, ORDER) } else { \ - _Py_atomic_store_32bit(ATOMIC_VAL._value, NEW_VAL, ORDER) } + _Py_atomic_store_32bit(ATOMIC_VAL._value, NEW_VAL, ORDER) } \ + __pragma(warning(pop)) #define _Py_atomic_load_explicit(ATOMIC_VAL, ORDER) \ ( \ + __pragma(warning(push)) \ + __pragma(warning(disable: 4133)) \ sizeof(*(ATOMIC_VAL._value)) == 8 ? \ _Py_atomic_load_64bit(ATOMIC_VAL._value, ORDER) : \ _Py_atomic_load_32bit(ATOMIC_VAL._value, ORDER) \ + __pragma(warning(pop)) \ ) #elif defined(_M_ARM) || defined(_M_ARM64) typedef enum _Py_memory_order { From fd86ffdbcac38b365bf8f3c460c4d0236203b516 Mon Sep 17 00:00:00 2001 From: Segev Finer Date: Fri, 18 Aug 2017 20:59:02 +0300 Subject: [PATCH 2/3] bpo-9566: A better fix for the pyatomic.h warning --- Include/pyatomic.h | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/Include/pyatomic.h b/Include/pyatomic.h index 73b9f661b67ad6..7da83fd3259424 100644 --- a/Include/pyatomic.h +++ b/Include/pyatomic.h @@ -351,21 +351,15 @@ inline int _Py_atomic_load_32bit(volatile int* value, int order) { } #define _Py_atomic_store_explicit(ATOMIC_VAL, NEW_VAL, ORDER) \ - __pragma(warning(push)) \ - __pragma(warning(disable: 4133)) \ if (sizeof(*ATOMIC_VAL._value) == 8) { \ - _Py_atomic_store_64bit(ATOMIC_VAL._value, NEW_VAL, ORDER) } else { \ - _Py_atomic_store_32bit(ATOMIC_VAL._value, NEW_VAL, ORDER) } \ - __pragma(warning(pop)) + _Py_atomic_store_64bit((volatile long long*)ATOMIC_VAL._value, NEW_VAL, ORDER) } else { \ + _Py_atomic_store_32bit((volatile long*)ATOMIC_VAL._value, NEW_VAL, ORDER) } \ #define _Py_atomic_load_explicit(ATOMIC_VAL, ORDER) \ ( \ - __pragma(warning(push)) \ - __pragma(warning(disable: 4133)) \ sizeof(*(ATOMIC_VAL._value)) == 8 ? \ - _Py_atomic_load_64bit(ATOMIC_VAL._value, ORDER) : \ - _Py_atomic_load_32bit(ATOMIC_VAL._value, ORDER) \ - __pragma(warning(pop)) \ + _Py_atomic_load_64bit((volatile long long*)ATOMIC_VAL._value, ORDER) : \ + _Py_atomic_load_32bit((volatile long*)ATOMIC_VAL._value, ORDER) \ ) #elif defined(_M_ARM) || defined(_M_ARM64) typedef enum _Py_memory_order { From 1a7d809e20077f2dadfea82ead27676db527c760 Mon Sep 17 00:00:00 2001 From: Segev Finer Date: Fri, 18 Aug 2017 21:01:12 +0300 Subject: [PATCH 3/3] bpo-9566: Remove a slash --- Include/pyatomic.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Include/pyatomic.h b/Include/pyatomic.h index 7da83fd3259424..4cbc529c0d1e8f 100644 --- a/Include/pyatomic.h +++ b/Include/pyatomic.h @@ -353,7 +353,7 @@ inline int _Py_atomic_load_32bit(volatile int* value, int order) { #define _Py_atomic_store_explicit(ATOMIC_VAL, NEW_VAL, ORDER) \ if (sizeof(*ATOMIC_VAL._value) == 8) { \ _Py_atomic_store_64bit((volatile long long*)ATOMIC_VAL._value, NEW_VAL, ORDER) } else { \ - _Py_atomic_store_32bit((volatile long*)ATOMIC_VAL._value, NEW_VAL, ORDER) } \ + _Py_atomic_store_32bit((volatile long*)ATOMIC_VAL._value, NEW_VAL, ORDER) } #define _Py_atomic_load_explicit(ATOMIC_VAL, ORDER) \ ( \