Index: gcc/testsuite/gfortran.dg/empty_function_1.f90 =================================================================== --- gcc/testsuite/gfortran.dg/empty_function_1.f90 (révision 0) +++ gcc/testsuite/gfortran.dg/empty_function_1.f90 (révision 0) @@ -0,0 +1,10 @@ +! { dg-do compile } +! +! PR fortran/38252 +! FUNCTION rejected if both specification and execution part are empty +! +! Contributed by Daniel Kraft + +INTEGER FUNCTION test () +CONTAINS +END FUNCTION test Index: gcc/fortran/parse.c =================================================================== --- gcc/fortran/parse.c (révision 142242) +++ gcc/fortran/parse.c (copie de travail) @@ -1576,7 +1576,7 @@ typedef struct { enum { ORDER_START, ORDER_USE, ORDER_IMPORT, ORDER_IMPLICIT_NONE, - ORDER_IMPLICIT, ORDER_SPEC, ORDER_EXEC + ORDER_IMPLICIT, ORDER_SPEC, ORDER_EXEC, ORDER_CONTAINS } state; gfc_statement last_statement; @@ -1658,6 +1658,10 @@ verify_st_order (st_state *p, gfc_statement st, bo p->state = ORDER_EXEC; break; + case ST_CONTAINS: + p->state = ORDER_CONTAINS; + break; + default: gfc_internal_error ("Unexpected %s statement in verify_st_order() at %C", gfc_ascii_statement (st));