diff options
author | janus <janus@138bc75d-0d04-0410-961f-82ee72b054a4> | 2011-02-12 21:34:11 +0000 |
---|---|---|
committer | janus <janus@138bc75d-0d04-0410-961f-82ee72b054a4> | 2011-02-12 21:34:11 +0000 |
commit | 29dae2bfa6f8c42ad60fee1d23d6dc3659d53d00 (patch) | |
tree | 1f3c46a16af849afee31b6d349f3b132ad36634f /gcc/fortran/decl.c | |
parent | a4a58ea82107ef65ed6a8660e7af0448d282289c (diff) | |
download | gcc-29dae2bfa6f8c42ad60fee1d23d6dc3659d53d00.tar.gz |
2011-02-12 Janus Weil <janus@gcc.gnu.org>
* class.c (gfc_build_class_symbol): Reject polymorphic arrays.
* decl.c (build_sym,build_struct,attr_decl1): Use return value of
'gfc_build_class_symbol'.
2011-02-12 Janus Weil <janus@gcc.gnu.org>
* gfortran.dg/allocate_derived_1.f90: Modified as polymorphic arrays
are temporarily disabled.
* gfortran.dg/class_7.f03: Ditto.
* gfortran.dg/coarray_14.f90: Ditto.
* gfortran.dg/typebound_proc_13.f03: Ditto.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@170092 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/fortran/decl.c')
-rw-r--r-- | gcc/fortran/decl.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/gcc/fortran/decl.c b/gcc/fortran/decl.c index 638a7386d15..9712ea2aa09 100644 --- a/gcc/fortran/decl.c +++ b/gcc/fortran/decl.c @@ -1180,7 +1180,7 @@ build_sym (const char *name, gfc_charlen *cl, bool cl_deferred, if (sym->ts.type == BT_CLASS && (sym->attr.class_ok = sym->attr.dummy || sym->attr.pointer || sym->attr.allocatable)) - gfc_build_class_symbol (&sym->ts, &sym->attr, &sym->as, false); + return gfc_build_class_symbol (&sym->ts, &sym->attr, &sym->as, false); return SUCCESS; } @@ -1639,10 +1639,9 @@ scalar: bool delayed = (gfc_state_stack->sym == c->ts.u.derived) || (!c->ts.u.derived->components && !c->ts.u.derived->attr.zero_comp); - gfc_build_class_symbol (&c->ts, &c->attr, &c->as, delayed); + return gfc_build_class_symbol (&c->ts, &c->attr, &c->as, delayed); } - return t; } @@ -6048,8 +6047,12 @@ attr_decl1 (void) if (sym->ts.type == BT_CLASS && !sym->attr.class_ok && (sym->attr.class_ok = sym->attr.class_ok || current_attr.allocatable - || current_attr.pointer)) - gfc_build_class_symbol (&sym->ts, &sym->attr, &sym->as, false); + || current_attr.pointer) + && gfc_build_class_symbol (&sym->ts, &sym->attr, &sym->as, false) == FAILURE) + { + m = MATCH_ERROR; + goto cleanup; + } if (gfc_set_array_spec (sym, as, &var_locus) == FAILURE) { |