C LB+ctrlonceonce+mbonceonce

(*
 * 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)
