builtin_18_atomic_cas_failure.c (408B)
1 int test_main(void) { 2 int x = 7; 3 int expected = 5; /* mismatch: x != expected */ 4 int ok = __atomic_compare_exchange_n(&x, &expected, 99, 0, __ATOMIC_SEQ_CST, 5 __ATOMIC_RELAXED); 6 /* ok==0, x stays at 7, expected is updated to 7 (the prior value). */ 7 /* expected*6=42, ok==0, x==7. Return: expected*6 + ok + (x-7) = 42 */ 8 return expected * 6 + ok + (x - 7); 9 }