http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59720
--- Comment #6 from janus at gcc dot gnu.org --- To add to this discussion, here are two examples from the F08 standard (section C.9.6): module fruits type :: fruit end type type, extends(fruit) :: apple end type type, extends(fruit) :: pear end type type, extends(pear) :: bosc end type INTERFACE BAD6 ! this interface is invalid ! SUBROUTINE S6A(X,Y) import :: pear CLASS(PEAR) :: X,Y END SUBROUTINE S6A SUBROUTINE S6B(X,Y) import :: fruit, bosc CLASS(FRUIT) :: X CLASS(BOSC) :: Y END SUBROUTINE S6B END INTERFACE BAD6 INTERFACE GOOD7 SUBROUTINE S7A(X,Y,Z) import :: pear CLASS(PEAR) :: X,Y,Z END SUBROUTINE S7A SUBROUTINE S7B(X,Z,W) import :: fruit, bosc, apple CLASS(FRUIT) :: X CLASS(BOSC) :: Z CLASS(APPLE),OPTIONAL :: W END SUBROUTINE S7B END INTERFACE GOOD7 end gfortran correctly rejects the first one and allows the second (both with and without the patch in comment 2). However, ifort 12.1 seems to accept both, which clearly violates the F08 standard. I also tried flags like -std03 and -std08, without any effect. Are there other flags to force a more strict adherence to the standard? Is anyone able to check other compilers?