https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86679
Bug ID: 86679 Summary: invalid code involving TARGET attribute is not rejected Product: gcc Version: 9.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: fortran Assignee: unassigned at gcc dot gnu.org Reporter: janus at gcc dot gnu.org Target Milestone: --- Please consider this simple example: program pgm integer :: i = 0 print *, i call modify(i) print *, i contains subroutine modify(t) integer, intent(in), target :: t integer, pointer :: p p => t p = 5 end subroutine end I assume for now it is invalid, but haven't checked the standard yet. There are two issues that I can see: 1) We are casting a pointer to a variable ('i') that is not declared as TARGET. gfortran should probably check that in the subroutine call the TARGET attributes of formal and actual argument match. 2) We are modifying an INTENT(IN) argument (via pointer indirection). I hope that the combination of INTENT(IN) and TARGET might actually be forbidden in the Fortran standard. If it is not, we probably need a runtime check which detects this.