Cast atomic_load_explicit to proper size

This commit is contained in:
Witold Kręcicki
2019-01-30 11:21:30 +01:00
committed by Ondřej Surý
parent f2d1a88efc
commit 9ded5d5193

View File

@@ -146,14 +146,18 @@ atomic_load_abort() {
ISC_UNREACHABLE();
}
#define atomic_load_explicit(obj, order) \
(sizeof(*(obj)) == 8 \
? atomic_load_explicit64(obj, order) \
: (sizeof(*(obj) == 4) \
? atomic_load_explicit32(obj, order) \
: (sizeof(*(obj) == 1) \
? atomic_load_explicit8(obj, order) \
: atomic_load_abort())))
#define atomic_load_explicit(obj, order) \
((sizeof(*(obj)) == 8 \
? atomic_load_explicit64(obj, order) \
: (sizeof(*(obj) == 4) \
? atomic_load_explicit32(obj, order) \
: (sizeof(*(obj) == 1) \
? atomic_load_explicit8(obj, order) \
: atomic_load_abort()))) & \
(sizeof(*(obj)) == 8 ? 0xffffffffffffffffULL : \
(sizeof(*(obj)) == 4 ? 0xffffffffULL : \
(sizeof(*(obj)) == 1 ? 0xffULL : atomic_load_abort()))))
#define atomic_load(obj) \
atomic_load_explicit(obj, memory_order_seq_cst)