https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89646
Bug ID: 89646 Summary: Spurious actual argument might interfere warning Product: gcc Version: 9.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: fortran Assignee: unassigned at gcc dot gnu.org Reporter: ian_harvey at bigpond dot com Target Milestone: --- The following: MODULE m IMPLICIT NONE TYPE :: t END TYPE t CONTAINS SUBROUTINE s ! To reproduce, both actual arguments must be TARGET, ! both arguments must be of derived type. TYPE(t), TARGET :: a(5) TYPE(t), TARGET :: b(5) CALL move(a, b) END SUBROUTINE s ! To reproduce, called procedure must be elemental. ELEMENTAL SUBROUTINE move(from, to) TYPE(t), INTENT(INOUT) :: from TYPE(t), INTENT(OUT) :: to END SUBROUTINE move END MODULE m when compiled with recent trunk (r26545) gives the following spurious warnings: argument-interfereb.f90:12:14-17: 12 | CALL move(a, b) | 1 2 Warning: INTENT(INOUT) actual argument at (1) might interfere with actual argument at (2). argument-interfereb.f90:12:14-17: 12 | CALL move(a, b) | 2 1 Warning: INTENT(OUT) actual argument at (1) might interfere with actual argument at (2). I suspect that the compiler is trying to warn me about potential aliasing given the TARGET attribute on the actual arguments, but there is no such aliasing in this example, and the details required to trigger the warning (arguments must be derived type, procedure must be elemental) are too specific for this warning to be useful or intended.