Your test case isn't legal Fortran. It runs afoul of 12.5.2.5 par 2: "The actual argument shall be polymorphic if and only if the associated dummy argument is polymorphic, and either both the actual and dummy arguments shall be unlimited polymorphic, or the declared type of the actual argument shall be the same as the declared type of the dummy argument."