http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50375
Tobias Burnus <burnus at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |accepts-invalid, diagnostic CC| |burnus at gcc dot gnu.org --- Comment #2 from Tobias Burnus <burnus at gcc dot gnu.org> 2011-09-13 09:37:39 UTC --- c the following is wrong: the MOLD formal argument of null() is required c gfortran simply picks the last routine defined in the interface, in this case s2 Which is consistent with NAG, Open64 and PathScale. With ifort and g95 one gets the expected error message: call gen(null()) 1 Error: Typeless NULL() at (1) must have a MOLD argument call gen(null()) 1 Error: Generic subroutine 'gen' at (1) is not consistent with a specific subroutine interface error #6285: There is no matching specific subroutine for this generic subroutine call. [GEN] * * * >From F2008's 13.7.125 NULL ([MOLD]): "If MOLD is absent, the characteristics of the result are determined by the entity with which the reference is associated. See Table 13.2. MOLD shall not be absent in any other context. [...]" "If the context of the reference to NULL is an actual argument in a generic procedure reference, MOLD shall be present if the type, type parameters, or rank are required to resolve the generic reference." "Table 13.2: Characteristics of the result of NULL ( ) Appearance of NULL ( ) Type, type parameters, and rank of result: right side of a pointer assignment pointer on the left side initialization for an object in a declaration the object default initialization for a component the component in a structure constructor the corresponding component as an actual argument the corresponding dummy argument in a DATA statement the corresponding pointer object"