| /* Test __atomic routines for existence and proper execution on 2 byte | |
| values with each valid memory model. */ | |
| /* { dg-do run } */ | |
| /* Test the execution of the __atomic_store_n builtin for a short. */ | |
| extern void abort(void); | |
| short v, count; | |
| int | |
| main () | |
| { | |
| v = 0; | |
| count = 0; | |
| __atomic_store_n (&v, count + 1, __ATOMIC_RELAXED); | |
| if (v != ++count) | |
| abort (); | |
| __atomic_store_n (&v, count + 1, __ATOMIC_RELEASE); | |
| if (v != ++count) | |
| abort (); | |
| __atomic_store_n (&v, count + 1, __ATOMIC_SEQ_CST); | |
| if (v != ++count) | |
| abort (); | |
| /* Now test the generic variant. */ | |
| count++; | |
| __atomic_store (&v, &count, __ATOMIC_RELAXED); | |
| if (v != count++) | |
| abort (); | |
| __atomic_store (&v, &count, __ATOMIC_RELEASE); | |
| if (v != count++) | |
| abort (); | |
| __atomic_store (&v, &count, __ATOMIC_SEQ_CST); | |
| if (v != count) | |
| abort (); | |
| return 0; | |
| } | |