https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120958
--- Comment #18 from Thomas Koenig <tkoenig at gcc dot gnu.org> --- (In reply to Richard Biener from comment #17) > I had the impression we are talking about a legacy (F77) code base here and > we need to honor the constraints of that language. That means limited ways > to express inter-operability with C and thus from a QOI perspective we > shouldn't break such code so I agree with Harald here. For F77 we need to > default to > a behavior that's safe and that worked the last 20 years with gfortran. The > ability to know that bar() cannot modify x is new, so there's not much of a > regression to be had compared to 20 years ago. This is not only old code. For efficiency reasons, it is often a good idea to use explicit shape or assumed size. This is still the interface with BLAS and LAPACK. Plus, ASYNCHRONOUS means that the variable can change even in the absence of a call, so CALL FOO (A) A = 2 IF (A == 2) THEN could not be optimized and would need a reload from memory of A, because we are telling the compiler there could still be a pending I/O left over which changes the value of A between the assignment and the comparison. IMHO, this is too big a hammer. > I'm less sure about F90, F20xy - do all of them have the ability to specify > the async MPI behavior correctly? ASYNCHRONOUS was introduced with F2003.