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

{
	int x;
	int y;
}

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)
