C LB+fencembonceonce+ctrlonceonce (* * Result: Never * * This litmus test demonstrates that lightweight ordering suffices for * the load-buffering pattern, in other words, preventing all processes * reading from the preceding process's write. In this example, the * combination of a control dependency and a full memory barrier are enough * to do the trick. (But the full memory barrier could be replaced with * another control dependency and order would still be maintained.) *) {} P0(int *x, int *y) { int r0; r0 = READ_ONCE(*x); if (r0) WRITE_ONCE(*y, 1); } P1(int *x, int *y) { int r0; r0 = READ_ONCE(*y); smp_mb(); WRITE_ONCE(*x, 1); } exists (0:r0=1 /\ 1:r0=1)