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…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user