BUILD: atomic: make the old HA_ATOMIC_LOAD() support const pointers
We have an implementation of atomic ops for older versions of gcc that do not provide the __builtin_* API (< 4.4). Recent changes to the pools broke that in pool_releasable() by having a load from a const pointer, which doesn't work there due to a temporary local variable that is declared then assigned. Let's make use of a compount statement to assign it a value when declaring it. There's no need to backport this.
This commit is contained in:
parent
e08acaed19
commit
8da23393a1
@ -194,13 +194,12 @@
|
||||
#if defined(__GNUC__) && (__GNUC__ < 4 || __GNUC__ == 4 && __GNUC_MINOR__ < 7) && !defined(__clang__)
|
||||
/* gcc < 4.7 */
|
||||
|
||||
#define HA_ATOMIC_LOAD(val) \
|
||||
({ \
|
||||
typeof(*(val)) ret; \
|
||||
__sync_synchronize(); \
|
||||
ret = *(volatile typeof(val))val; \
|
||||
__sync_synchronize(); \
|
||||
ret; \
|
||||
#define HA_ATOMIC_LOAD(val) \
|
||||
({ \
|
||||
typeof(*(val)) ret = \
|
||||
({ __sync_synchronize(); *(volatile typeof(val))val; }); \
|
||||
__sync_synchronize(); \
|
||||
ret; \
|
||||
})
|
||||
|
||||
#define HA_ATOMIC_STORE(val, new) \
|
||||
|
Loading…
x
Reference in New Issue
Block a user