C Z6.0+pooncerelease+poacquirerelease+fencembonceonce

(*
 * Result: Sometimes
 *
 * This litmus test shows that a release-acquire chain, while sufficient
 * when there is but one non-reads-from (AKA non-rf) link, does not suffice
 * if there is more than one.  Of the three processes, only P1() reads from
 * P0's write, which means that there are two non-rf links: P1() to P2()
 * is a write-to-write link (AKA a "coherence" or just "co" link) and P2()
 * to P0() is a read-to-write link (AKA a "from-reads" or just "fr" link).
 * When there are two or more non-rf links, you typically will need one
 * full barrier for each non-rf link.  (Exceptions include some cases
 * involving locking.)
 *)

{
	int x;
	int y;
	int z;
}

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

P1(int *y, int *z)
{
	int r0;

	r0 = smp_load_acquire(y);
	smp_store_release(z, 1);
}

P2(int *x, int *z)
{
	int r1;

	WRITE_ONCE(*z, 2);
	smp_mb();
	r1 = READ_ONCE(*x);
}

exists (1:r0=1 /\ z=2 /\ 2:r1=0)
