diff options
author | domob <domob@138bc75d-0d04-0410-961f-82ee72b054a4> | 2009-04-24 15:20:23 +0000 |
---|---|---|
committer | domob <domob@138bc75d-0d04-0410-961f-82ee72b054a4> | 2009-04-24 15:20:23 +0000 |
commit | 3323e9b1c788040290adbe78d9ebf3e6ac998084 (patch) | |
tree | 6857c66e3f14011e7afd4f510d84a7d7ded9cc88 /gcc/fortran/dump-parse-tree.c | |
parent | 80709dc40f08366768b330543933c8e173c6c5d1 (diff) | |
download | gcc-3323e9b1c788040290adbe78d9ebf3e6ac998084.tar.gz |
2009-04-24 Daniel Kraft <d@domob.eu>
* gfortran.h (gfc_get_typebound_proc): Removed as macro, now a function.
(struct gfc_symtree): Moved `typebound' member inside union.
(struct gfc_namespace): Add `tb_sym_root' as new symtree to sort out
type-bound procedures there.
(gfc_get_tbp_symtree): New procedure.
* symbol.c (tentative_tbp_list): New global.
(gfc_get_namespace): NULL new `tb_sym_root' member.
(gfc_new_symtree): Removed initialization of `typebound' member.
(gfc_undo_symbols): Process list of tentative tbp's.
(gfc_commit_symbols): Ditto.
(free_tb_tree): New method.
(gfc_free_namespace): Call it.
(gfc_get_typebound_proc): New method.
(gfc_get_tbp_symtree): New method.
(gfc_find_typebound_proc): Adapt to structural changes of gfc_symtree
and gfc_namespace with regards to tbp's.
* dump-parse-tree.c (show_typebound): Ditto.
* primary.c (gfc_match_varspec): Ditto. Don't reference tbp-symbol
as it isn't a symbol any longer.
* module.c (mio_typebound_symtree): Adapt to changes.
(mio_typebound_proc): Ditto, create symtrees using `gfc_get_tbp_symtree'
rather than `gfc_get_sym_tree'.
(mio_f2k_derived): Ditto.
* decl.c (match_procedure_in_type): Ditto.
(gfc_match_generic): Ditto. Don't reference tbp-symbol.
* resolve.c (check_typebound_override): Adapt to changes.
(resolve_typebound_generic): Ditto.
(resolve_typebound_procedures): Ditto.
(ensure_not_abstract_walker): Ditto.
(ensure_not_abstract): Ditto.
(resolve_typebound_procedure): Ditto, ignore erraneous symbols (for
instance, through removed tentative ones).
* gfc-internals.texi (Type-bound procedures): Document changes.
2009-04-24 Daniel Kraft <d@domob.eu>
* gfortran.dg/typebound_generic_1.f03: Change so that no error is
expected on already erraneous symbol (renamed to fresh one).
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@146733 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/fortran/dump-parse-tree.c')
-rw-r--r-- | gcc/fortran/dump-parse-tree.c | 20 |
1 files changed, 10 insertions, 10 deletions
diff --git a/gcc/fortran/dump-parse-tree.c b/gcc/fortran/dump-parse-tree.c index 32c97d06b73..6c915084db9 100644 --- a/gcc/fortran/dump-parse-tree.c +++ b/gcc/fortran/dump-parse-tree.c @@ -671,40 +671,40 @@ show_components (gfc_symbol *sym) static void show_typebound (gfc_symtree* st) { - if (!st->typebound) + if (!st->n.tb) return; show_indent (); - if (st->typebound->is_generic) + if (st->n.tb->is_generic) fputs ("GENERIC", dumpfile); else { fputs ("PROCEDURE, ", dumpfile); - if (st->typebound->nopass) + if (st->n.tb->nopass) fputs ("NOPASS", dumpfile); else { - if (st->typebound->pass_arg) - fprintf (dumpfile, "PASS(%s)", st->typebound->pass_arg); + if (st->n.tb->pass_arg) + fprintf (dumpfile, "PASS(%s)", st->n.tb->pass_arg); else fputs ("PASS", dumpfile); } - if (st->typebound->non_overridable) + if (st->n.tb->non_overridable) fputs (", NON_OVERRIDABLE", dumpfile); } - if (st->typebound->access == ACCESS_PUBLIC) + if (st->n.tb->access == ACCESS_PUBLIC) fputs (", PUBLIC", dumpfile); else fputs (", PRIVATE", dumpfile); fprintf (dumpfile, " :: %s => ", st->n.sym->name); - if (st->typebound->is_generic) + if (st->n.tb->is_generic) { gfc_tbp_generic* g; - for (g = st->typebound->u.generic; g; g = g->next) + for (g = st->n.tb->u.generic; g; g = g->next) { fputs (g->specific_st->name, dumpfile); if (g->next) @@ -712,7 +712,7 @@ show_typebound (gfc_symtree* st) } } else - fputs (st->typebound->u.specific->n.sym->name, dumpfile); + fputs (st->n.tb->u.specific->n.sym->name, dumpfile); } static void |