Index: gcc/fortran/interface.c =================================================================== --- gcc/fortran/interface.c (revision 257695) +++ gcc/fortran/interface.c (working copy) @@ -2865,6 +2865,13 @@ compare_actual_formal (gfc_actual_arglist **ap, gfc_fo for (a = actual; a; a = a->next, f = f->next) { + if (a->name != NULL && in_statement_function) + { + gfc_error ("Keyword argument %qs at %L is invalid in " + "a statement function", a->name, &a->expr->where); + return false; + } + /* Look for keywords but ignore g77 extensions like %VAL. */ if (a->name != NULL && a->name[0] != '%') { Index: gcc/testsuite/gfortran.dg/statement_function_1.f90 =================================================================== --- gcc/testsuite/gfortran.dg/statement_function_1.f90 (revision 257695) +++ gcc/testsuite/gfortran.dg/statement_function_1.f90 (working copy) @@ -19,10 +19,6 @@ qofs(s, i) = i * s i = 42 w = qofs(hh, i) -! -! The following line should cause an error, because keywords are not -! allowed in a function with an implicit interface. -! - w = qofs(i = i, s = hh) + w = qofs(i = i, s = hh) ! { dg-error "invalid in a statement function" } end subroutine step ! { dg-prune-output " Obsolescent feature" }