C C-rddep { int u; int v; int *x = &u; int *y = &u; } P0(int *u, int *v, int **y) { WRITE_ONCE(*u, 1); smp_wmb(); WRITE_ONCE(*y, v); } P1(int **x, int **y) { int *r1; int *r2; int r3; int r4; r1 = READ_ONCE(*x); r2 = READ_ONCE(*y); smp_read_barrier_depends(); r3 = READ_ONCE(*r1); r4 = READ_ONCE(*r2); } Observed 1:r3=0; 1:r2=v;