c11_atomic.c revision 1.3
11.3Srillig/* $NetBSD: c11_atomic.c,v 1.3 2023/01/21 13:48:40 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.1Srillig */ 121.1Srillig 131.1Srillig/* lint1-extra-flags: -Ac11 */ 141.1Srillig 151.1Srillig/* C11 6.7.3 "Type qualifiers" */ 161.1Srilligtypedef _Atomic int atomic_int; 171.1Srillig 181.1Srilligtypedef _Atomic struct { 191.1Srillig int field; 201.1Srillig} atomic_struct; 211.1Srillig 221.3Srillig/* C11 6.7.2.4 "Atomic type specifiers" */ 231.3Srilligdouble * 241.3Srilligatomic_ptr_cmpexch(_Atomic(double *)*ptr_var, _Atomic(double *) new_value) 251.3Srillig{ 261.3Srillig double *old = *ptr_var; 271.3Srillig *ptr_var = new_value; 281.3Srillig return old; 291.3Srillig} 30