(also posted to comp.lang.fortran). I'm trying to write a short demo coarray program illustrating a race condition. I find that I cannot do it with ifort v.15 because it seems to apply image synchronisation even when it's not in the code. Is this an allowed compiler behaviour? I think probably yes, but wanted to check. Here's my example: % cat z.f90 program swap use iso_fortran_env, only: output_unit implicit none integer :: img, i[*] img = this_image() i = img if ( img .eq. 1 ) then read (*,*) i = i[ num_images() ] end if if ( img .eq. num_images() ) then i = i[ 1 ] end if write (output_unit,*) img, "kuku" end program swap % setenv FOR_COARRAY_NUM_IMAGES 4 % ifort -coarray -O0 z.f90 (note the noopt flag) % ./a.out 2 kuku 3 kuku At this point the execution is paused waiting for the user input at READ(*,*). When I hit ENTER, I get the remaining lines: 1 kuku 4 kuku So it seems the compiler recognised that I'm swapping values between 2 images and synchronised the exectution segments between images 1 and 4. Anyway, I just wanted to ask for confirmation in this list that such compiler behind the scenes synchronisation does not violate the standard. Thanks Anton