diff options
Diffstat (limited to 'gcc/fortran/module.c')
-rw-r--r-- | gcc/fortran/module.c | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/gcc/fortran/module.c b/gcc/fortran/module.c index 9c55c2f..12ac966 100644 --- a/gcc/fortran/module.c +++ b/gcc/fortran/module.c @@ -3251,12 +3251,14 @@ mio_typebound_proc (gfc_typebound_proc** proc) (*proc)->u.generic = NULL; while (peek_atom () != ATOM_RPAREN) { + gfc_symtree** sym_root; + g = gfc_get_tbp_generic (); g->specific = NULL; require_atom (ATOM_STRING); - gfc_get_sym_tree (atom_string, current_f2k_derived, - &g->specific_st); + sym_root = ¤t_f2k_derived->tb_sym_root; + g->specific_st = gfc_get_tbp_symtree (sym_root, atom_string); gfc_free (atom_string); g->next = (*proc)->u.generic; @@ -3275,7 +3277,7 @@ mio_typebound_proc (gfc_typebound_proc** proc) static void mio_typebound_symtree (gfc_symtree* st) { - if (iomode == IO_OUTPUT && !st->typebound) + if (iomode == IO_OUTPUT && !st->n.tb) return; if (iomode == IO_OUTPUT) @@ -3285,7 +3287,7 @@ mio_typebound_symtree (gfc_symtree* st) } /* For IO_INPUT, the above is done in mio_f2k_derived. */ - mio_typebound_proc (&st->typebound); + mio_typebound_proc (&st->n.tb); mio_rparen (); } @@ -3338,7 +3340,7 @@ mio_f2k_derived (gfc_namespace *f2k) /* Handle type-bound procedures. */ mio_lparen (); if (iomode == IO_OUTPUT) - gfc_traverse_symtree (f2k->sym_root, &mio_typebound_symtree); + gfc_traverse_symtree (f2k->tb_sym_root, &mio_typebound_symtree); else { while (peek_atom () == ATOM_LPAREN) @@ -3348,7 +3350,7 @@ mio_f2k_derived (gfc_namespace *f2k) mio_lparen (); require_atom (ATOM_STRING); - gfc_get_sym_tree (atom_string, f2k, &st); + st = gfc_get_tbp_symtree (&f2k->tb_sym_root, atom_string); gfc_free (atom_string); mio_typebound_symtree (st); |