This patch is a teaser: It adds some preparation for coarray communication to the trunk, but it doesn't yet added the library calls. (In particular, note the "0 &&" in the conditions, which add the intrinsics.) The idea is that coindexed variables are wrapped in the intrinsic function caf_get(expr) and assignments to coindexed variables are wrapped into the subroutine caf_send(LHS, RHS). Both intrinsic procedures are only internally reachable. The intrinsic procedures are then converted into library calls in trans-intrinsic.c. (See fortran-caf branch.) I am not yet submitting the the trans-intrinsic.c part as I still want to restructure the current version – and I am also unsure how exactly I should handle allocatable components of coarrays. But as this part should be ready, I thought that I already submit it, reducing the differences between the branch and the trunk. However, I can also hold off this patch until it is actually used. Build on x86-64-gnu-linux. OK for the trunk? Tobias