C IRIW+poonceonces+OnceOnce

(*
 * Result: Sometimes
 *
 * Test of independent reads from independent writes with nothing
 * between each pairs of reads.  In other words, is anything at all
 * needed to cause two different reading processes to agree on the order
 * of a pair of writes, where each write is to a different variable by a
 * different process?
 *)

{
	int x;
	int y;
}

P0(int *x)
{
	WRITE_ONCE(*x, 1);
}

P1(int *x, int *y)
{
	int r0;
	int r1;

	r0 = READ_ONCE(*x);
	r1 = READ_ONCE(*y);
}

P2(int *y)
{
	WRITE_ONCE(*y, 1);
}

P3(int *x, int *y)
{
	int r0;
	int r1;

	r0 = READ_ONCE(*y);
	r1 = READ_ONCE(*x);
}

exists (1:r0=1 /\ 1:r1=0 /\ 3:r0=1 /\ 3:r1=0)
