11.5Srillig/* $NetBSD: c11_atomic.c,v 1.5 2023/07/07 19:45:22 rillig Exp $ */ 21.1Srillig# 3 "c11_atomic.c" 31.1Srillig 41.1Srillig/* 51.1Srillig * The keyword '_Atomic' was added in C11. This test ensures that in C11 61.1Srillig * mode, '_Atomic' can be used as both type qualifier and type specifier. 71.1Srillig * 81.1Srillig * See also: 91.1Srillig * C11 6.7.3 Type qualifiers 101.1Srillig * C11 6.7.2.4 Atomic type specifiers 111.4Srillig * msg_350.c 121.1Srillig */ 131.1Srillig 141.5Srillig/* lint1-extra-flags: -Ac11 -X 351 */ 151.1Srillig 161.1Srillig/* C11 6.7.3 "Type qualifiers" */ 171.1Srilligtypedef _Atomic int atomic_int; 181.1Srillig 191.1Srilligtypedef _Atomic struct { 201.1Srillig int field; 211.1Srillig} atomic_struct; 221.1Srillig 231.3Srillig/* C11 6.7.2.4 "Atomic type specifiers" */ 241.3Srilligdouble * 251.3Srilligatomic_ptr_cmpexch(_Atomic(double *)*ptr_var, _Atomic(double *) new_value) 261.3Srillig{ 271.3Srillig double *old = *ptr_var; 281.3Srillig *ptr_var = new_value; 291.3Srillig return old; 301.3Srillig} 31