1 /* $NetBSD: c11_atomic.c,v 1.3 2023/01/21 13:48:40 rillig Exp $ */ 2 # 3 "c11_atomic.c" 3 4 /* 5 * The keyword '_Atomic' was added in C11. This test ensures that in C11 6 * mode, '_Atomic' can be used as both type qualifier and type specifier. 7 * 8 * See also: 9 * C11 6.7.3 Type qualifiers 10 * C11 6.7.2.4 Atomic type specifiers 11 */ 12 13 /* lint1-extra-flags: -Ac11 */ 14 15 /* C11 6.7.3 "Type qualifiers" */ 16 typedef _Atomic int atomic_int; 17 18 typedef _Atomic struct { 19 int field; 20 } atomic_struct; 21 22 /* C11 6.7.2.4 "Atomic type specifiers" */ 23 double * 24 atomic_ptr_cmpexch(_Atomic(double *)*ptr_var, _Atomic(double *) new_value) 25 { 26 double *old = *ptr_var; 27 *ptr_var = new_value; 28 return old; 29 } 30