[Patch, Fortran, F03] PR 58916: Allocation of scalar with array source not rejected
Janus Weil
janus@gcc.gnu.org
Wed Dec 11 13:02:00 GMT 2013
Hi all,
attached is a small patch which fixes accepts-invalid and
ICE-on-invalid problems on allocation with source. Regtested on
x86_64-unknown-linux-gnu. Ok for trunk?
Cheers,
Janus
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.
-------------- next part --------------
Index: gcc/fortran/resolve.c
===================================================================
--- gcc/fortran/resolve.c (revision 205872)
+++ gcc/fortran/resolve.c (working copy)
@@ -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. */
-------------- next part --------------
A non-text attachment was scrubbed...
Name: allocate_with_source_4.f90
Type: text/x-fortran
Size: 386 bytes
Desc: not available
URL: <http://gcc.gnu.org/pipermail/fortran/attachments/20131211/efd7bff5/attachment.bin>
More information about the Fortran
mailing list