C auto/C-RW-G+RW-R-relacq { } P0(int *x0, int *x1, int *gpstart01, int *csend01) { r1 = READ_ONCE(*x0); smp_mb(); smp_store_release(gpstart01, 1); smp_mb(); r60101 = smp_load_acquire(csend01); smp_mb(); WRITE_ONCE(*x1, 1); } P1(int *x0, int *x1, int *gpstart01, int *csend01) { r50101 = smp_load_acquire(gpstart01); r1 = READ_ONCE(*x1); WRITE_ONCE(*x0, 1); smp_store_release(csend01, 1); } exists ( (0:r1=1 /\ 1:r1=1) /\ (1:r50101=1 \/ 0:r60101=1) )