With a recent gfortran, the following compiles, but generates the wrong results:
FUNCTION F() RESULT(RES) INTEGER, POINTER :: RES ALLOCATE(RES) RES=2 END FUNCTION F SUBROUTINE S1(f,*,*) INTERFACE FUNCTION F() RESULT(RES) INTEGER, POINTER :: RES END FUNCTION F END INTERFACE RETURN F() END SUBROUTINE PROGRAM TEST INTERFACE FUNCTION F() RESULT(RES) INTEGER, POINTER :: RES END FUNCTION F END INTERFACE INTERFACE SUBROUTINE S1(f,*,*) INTERFACE FUNCTION F() RESULT(RES) INTEGER, POINTER :: RES END FUNCTION F END INTERFACE END SUBROUTINE END INTERFACE CALL S1(F,*1,*2) 1 CONTINUE CALL ABORT() GOTO 3 2 CONTINUE 3 CONTINUE END -- Summary: wrong code generated with gfortran Product: gcc Version: 4.3.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: fortran AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: jv244 at cam dot ac dot uk http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31209