C Z6.0+pooncerelease+poacquirerelease+mbonceonce

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

{}

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)
