C C-atomic-01 (* Forbid as atomic_add_return returns a value *) { atomic_t x = ATOMIC_INIT(0); atomic_t y = ATOMIC_INIT(0); } P0(atomic_t *x,atomic_t *y) { int r0; int r1; r0 = atomic_add_return(1,x) ; r1 = atomic_read(y); } P1(atomic_t *x,atomic_t *y) { int r0; int r1; r0 = atomic_add_return(1,y) ; r1 = atomic_read(x); } P2(atomic_t *x,atomic_t *y) { atomic_add(2,x) ; atomic_add(2,y) ; } Observed y=3; x=3; 1:r1=0; 1:r0=3; 0:r1=3; 0:r0=3; and y=3; x=3; 1:r1=1; 1:r0=3; 0:r1=3; 0:r0=1; and y=3; x=3; 1:r1=0; 1:r0=3; 0:r1=3; 0:r0=1; and y=3; x=3; 1:r1=1; 1:r0=3; 0:r1=2; 0:r0=1; and y=3; x=3; 1:r1=1; 1:r0=3; 0:r1=0; 0:r0=1;