Dear Steve et al. at Intel,
The code listed below compiles with no errors or warnings using Intel Fortran compiler version 126.96.36.199 even if Fortran 2003/2008 standards checking is turned on. This seems to be a violation of C1277 of Fortran 2003 standard that says:
8 12.7 Elemental procedures 9 12.7.1 Elemental procedure declaration and interface 10 An elemental procedure is an elemental intrinsic procedure or a procedure that is defined by an 11 elemental subprogram. 12 An elemental subprogram has the prefix-spec ELEMENTAL. An elemental subprogram is a pure sub 13 program. The PURE prefix-spec need not appear; it is implied by the ELEMENTAL prefix-spec. The 14 following additional constraints apply to elemental subprograms. 15 C1277 All dummy arguments of an elemental procedure shall be scalar dummy data objects and shall 16 not have the POINTER or ALLOCATABLE attribute. 17 C1278 The result variable of an elemental function shall be scalar and shall not have the POINTER or ALLOCATABLE attribute.
Can you please review and follow-up as you think is appropriate? Perhaps it has been fixed in compiler 14, the latest update?
MODULE foo TYPE t END TYPE t CONTAINS PURE ELEMENTAL SUBROUTINE foo1(x) TYPE(t), ALLOCATABLE, INTENT(INOUT) :: x END SUBROUTINE foo1 PURE ELEMENTAL SUBROUTINE foo2(x) TYPE(t), ALLOCATABLE, INTENT(OUT) :: x END SUBROUTINE foo2 PURE ELEMENTAL SUBROUTINE foo3(x) TYPE(t), ALLOCATABLE, INTENT(IN) :: x END SUBROUTINE foo3 END MODULE foo