It's compiler specific I think. I've done this with OpenMPI no problem, however on one another cluster with ifort I've gotten error messages about not using MPI_IN_PLACE. So I think if it compiles, it should work fine.
I am working with a Fortran 90 code with many MPI calls like this:
'x' is allocated on root to be large enough to hold the results of the
gather, other arrays and parameters are defined correctly, and the code
runs as it should. However, I am concerned that having the same send
and receive buffer on root is a violation of the MPI standard. Am I
correct? I am aware of the MPI_IN_PLACE feature that can be used in
this situation, by defining it as the send buffer at root.
The fact that the code as written seems to work on most system we run on
(some with OpenMPI, some with proprietary MPI's) indicates that in spite
of the standard, implementations allow it. Is this correct, or are we
users mailing list