Browse Source

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>
tags/n3.3
James Almer 8 years ago
parent
commit
824d4062a1
1 changed files with 4 additions and 4 deletions
  1. +4
    -4
      compat/atomics/gcc/stdatomic.h

+ 4
- 4
compat/atomics/gcc/stdatomic.h View File

@@ -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…
Cancel
Save