diff options
author | Tobias Burnus <tobias@codesourcery.com> | 2020-04-02 18:27:09 +0200 |
---|---|---|
committer | Tobias Burnus <tobias@codesourcery.com> | 2020-04-02 18:27:09 +0200 |
commit | 3ab216a4d2f14be1f37350260142c91fabce834a (patch) | |
tree | a6a5e77601a0f9a6252e865003a91f7f9002a071 /gcc/fortran/interface.c | |
parent | b90061c6ec090c6b41a44987c646c828e5165298 (diff) | |
download | gcc-3ab216a4d2f14be1f37350260142c91fabce834a.zip gcc-3ab216a4d2f14be1f37350260142c91fabce834a.tar.gz gcc-3ab216a4d2f14be1f37350260142c91fabce834a.tar.bz2 |
[Fortran] Resolve formal args before checking DTIO
* gfortran.h (gfc_resolve_formal_arglist): Add prototype.
* interface.c (check_dtio_interface1): Call it.
* resolve.c (gfc_resolve_formal_arglist): Renamed from
resolve_formal_arglist, removed static.
(find_arglists, resolve_types): Update calls.
* gfortran.dg/dtio_35.f90: New.
Diffstat (limited to 'gcc/fortran/interface.c')
-rw-r--r-- | gcc/fortran/interface.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/gcc/fortran/interface.c b/gcc/fortran/interface.c index 14d03c2..75a50c9 100644 --- a/gcc/fortran/interface.c +++ b/gcc/fortran/interface.c @@ -5007,6 +5007,9 @@ check_dtio_interface1 (gfc_symbol *derived, gfc_symtree *tb_io_st, gfc_error ("DTIO procedure %qs at %L must be a subroutine", dtio_sub->name, &dtio_sub->declared_at); + if (!dtio_sub->resolved) + gfc_resolve_formal_arglist (dtio_sub); + arg_num = 0; for (formal = dtio_sub->formal; formal; formal = formal->next) arg_num++; @@ -5025,7 +5028,6 @@ check_dtio_interface1 (gfc_symbol *derived, gfc_symtree *tb_io_st, return; } - /* Now go through the formal arglist. */ arg_num = 1; for (formal = dtio_sub->formal; formal; formal = formal->next, arg_num++) |