diff options
author | Janus Weil <janus@gcc.gnu.org> | 2013-12-11 15:02:44 +0100 |
---|---|---|
committer | Janus Weil <janus@gcc.gnu.org> | 2013-12-11 15:02:44 +0100 |
commit | 2ccd6f727633d25730154efd7094900d24bf6544 (patch) | |
tree | c0ae5953e27191ad205564695b6a54f67b48e833 /gcc/fortran/resolve.c | |
parent | eaf4967a9dd17c8b800c7981ccdac62be6a960f2 (diff) | |
download | gcc-2ccd6f727633d25730154efd7094900d24bf6544.zip gcc-2ccd6f727633d25730154efd7094900d24bf6544.tar.gz gcc-2ccd6f727633d25730154efd7094900d24bf6544.tar.bz2 |
re PR fortran/58916 ([F03] Allocation of scalar with array source not rejected)
2013-12-11 Janus Weil <janus@gcc.gnu.org>
PR fortran/58916
* resolve.c (conformable_arrays): Treat scalar 'e2'.
(resolve_allocate_expr): Check rank also for unlimited-polymorphic
variables.
2013-12-11 Janus Weil <janus@gcc.gnu.org>
PR fortran/58916
* gfortran.dg/allocate_with_source_4.f90: New.
From-SVN: r205894
Diffstat (limited to 'gcc/fortran/resolve.c')
-rw-r--r-- | gcc/fortran/resolve.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c index ea46324..db2f5eb 100644 --- a/gcc/fortran/resolve.c +++ b/gcc/fortran/resolve.c @@ -6597,7 +6597,8 @@ conformable_arrays (gfc_expr *e1, gfc_expr *e2) for (tail = e2->ref; tail && tail->next; tail = tail->next); /* First compare rank. */ - if (tail && e1->rank != tail->u.ar.as->rank) + if ((tail && e1->rank != tail->u.ar.as->rank) + || (!tail && e1->rank != e2->rank)) { gfc_error ("Source-expr at %L must be scalar or have the " "same rank as the allocate-object at %L", @@ -6794,8 +6795,7 @@ resolve_allocate_expr (gfc_expr *e, gfc_code *code) } /* Check F03:C632 and restriction following Note 6.18. */ - if (code->expr3->rank > 0 && !unlimited - && !conformable_arrays (code->expr3, e)) + if (code->expr3->rank > 0 && !conformable_arrays (code->expr3, e)) goto failure; /* Check F03:C633. */ |