aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran/resolve.c
diff options
context:
space:
mode:
authorJanus Weil <janus@gcc.gnu.org>2013-12-11 15:02:44 +0100
committerJanus Weil <janus@gcc.gnu.org>2013-12-11 15:02:44 +0100
commit2ccd6f727633d25730154efd7094900d24bf6544 (patch)
treec0ae5953e27191ad205564695b6a54f67b48e833 /gcc/fortran/resolve.c
parenteaf4967a9dd17c8b800c7981ccdac62be6a960f2 (diff)
downloadgcc-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.c6
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. */