diff options
author | Janus Weil <janus@gcc.gnu.org> | 2014-02-21 10:06:57 +0100 |
---|---|---|
committer | Janus Weil <janus@gcc.gnu.org> | 2014-02-21 10:06:57 +0100 |
commit | 9b6da3c72df615372602ac87e4e35a89f6cc3eb1 (patch) | |
tree | 1b9dc5c56919f62925c5e6055abd1a153bdf2466 /gcc/fortran/decl.c | |
parent | 4b156fd0255e9a65102d4d89ff9bf6a82c5389c6 (diff) | |
download | gcc-9b6da3c72df615372602ac87e4e35a89f6cc3eb1.zip gcc-9b6da3c72df615372602ac87e4e35a89f6cc3eb1.tar.gz gcc-9b6da3c72df615372602ac87e4e35a89f6cc3eb1.tar.bz2 |
re PR fortran/60234 ([OOP] ICE in generate_finalization_wrapper at fortran/class.c:1883)
2014-02-21 Janus Weil <janus@gcc.gnu.org>
PR fortran/60234
* gfortran.h (gfc_build_class_symbol): Removed argument.
* class.c (gfc_add_component_ref): Fix up missing vtype if necessary.
(gfc_build_class_symbol): Remove argument 'delayed_vtab'. vtab is always
delayed now, except for unlimited polymorphics.
(comp_is_finalizable): Procedure pointer components are not finalizable.
* decl. (build_sym, build_struct, attr_decl1): Removed argument of
'gfc_build_class_symbol'.
* match.c (copy_ts_from_selector_to_associate, select_type_set_tmp):
Ditto.
* symbol.c (gfc_set_default_type): Ditto.
2014-02-21 Janus Weil <janus@gcc.gnu.org>
PR fortran/60234
* gfortran.dg/finalize_23.f90: New.
From-SVN: r207986
Diffstat (limited to 'gcc/fortran/decl.c')
-rw-r--r-- | gcc/fortran/decl.c | 9 |
1 files changed, 3 insertions, 6 deletions
diff --git a/gcc/fortran/decl.c b/gcc/fortran/decl.c index 8831b19..2d405fe 100644 --- a/gcc/fortran/decl.c +++ b/gcc/fortran/decl.c @@ -1199,7 +1199,7 @@ build_sym (const char *name, gfc_charlen *cl, bool cl_deferred, sym->attr.implied_index = 0; if (sym->ts.type == BT_CLASS) - return gfc_build_class_symbol (&sym->ts, &sym->attr, &sym->as, false); + return gfc_build_class_symbol (&sym->ts, &sym->attr, &sym->as); return true; } @@ -1656,10 +1656,7 @@ build_struct (const char *name, gfc_charlen *cl, gfc_expr **init, scalar: if (c->ts.type == BT_CLASS) { - bool delayed = (gfc_state_stack->sym == c->ts.u.derived) - || (!c->ts.u.derived->components - && !c->ts.u.derived->attr.zero_comp); - bool t2 = gfc_build_class_symbol (&c->ts, &c->attr, &c->as, delayed); + bool t2 = gfc_build_class_symbol (&c->ts, &c->attr, &c->as); if (t) t = t2; @@ -6340,7 +6337,7 @@ attr_decl1 (void) } if (sym->ts.type == BT_CLASS - && !gfc_build_class_symbol (&sym->ts, &sym->attr, &sym->as, false)) + && !gfc_build_class_symbol (&sym->ts, &sym->attr, &sym->as)) { m = MATCH_ERROR; goto cleanup; |