C C-WWC+o+o-rel+acq-o.litmus { } P0(int *a) { WRITE_ONCE(*a, 1); } P1(int *a, int *b) { int r1; r1 = READ_ONCE(*a); smp_store_release(b, 1); } P2(int *a, int *b) { int r1; r1 = smp_load_acquire(b); WRITE_ONCE(*a, 2); } exists (1:r1=1 /\ 2:r1=1 /\ a=1)