mirror of
https://github.com/librempeg/librempeg
synced 2024-11-23 03:28:27 +00:00
compat/atomics/gcc: use __typeof__ instead of typeof
The typeof keyword is apparently not available when using the -std=c99 option. Fixes the use of C11 atomic functions with old GCC. Reviewed-by: Muhammad Faiz <mfcc64@gmail.com> Signed-off-by: James Almer <jamrial@gmail.com>
This commit is contained in:
parent
3796fb2692
commit
824d4062a1
@ -100,8 +100,8 @@ do { \
|
||||
|
||||
#define atomic_exchange(object, desired) \
|
||||
({ \
|
||||
typeof(object) _obj = (object); \
|
||||
typeof(*object) _old; \
|
||||
__typeof__(object) _obj = (object); \
|
||||
__typeof__(*object) _old; \
|
||||
do \
|
||||
_old = atomic_load(_obj); \
|
||||
while (!__sync_bool_compare_and_swap(_obj, _old, (desired))); \
|
||||
@ -113,8 +113,8 @@ do { \
|
||||
|
||||
#define atomic_compare_exchange_strong(object, expected, desired) \
|
||||
({ \
|
||||
typeof(object) _exp = (expected); \
|
||||
typeof(*object) _old = *_exp; \
|
||||
__typeof__(object) _exp = (expected); \
|
||||
__typeof__(*object) _old = *_exp; \
|
||||
*_exp = __sync_val_compare_and_swap((object), _old, (desired)); \
|
||||
*_exp == _old; \
|
||||
})
|
||||
|
Loading…
Reference in New Issue
Block a user