re PR fortran/85798 (ICE in get_array_index, at fortran/data.c:69)
2018-12-22 Steven G . Kargl <kargl@gcc.gnu.org> PR fortran/85798 * decl.c (gfc_match_data): If a component of a derived type entity appears in data statement, check that does not have the allocatable attribute. 2018-12-22 Steven G . Kargl <kargl@gcc.gnu.org> PR fortran/85798 * gfortran.dg/pr85798.f90: New test. From-SVN: r267356
This commit is contained in:
parent
73f5d219bb
commit
02543f0263
@ -1,3 +1,10 @@
|
||||
2018-12-22 Steven G . Kargl <kargl@gcc.gnu.org>
|
||||
|
||||
PR fortran/85798
|
||||
* decl.c (gfc_match_data): If a component of a derived type entity
|
||||
appears in data statement, check that does not have the allocatable
|
||||
attribute.
|
||||
|
||||
2018-12-22 Steven G. Kargl <kargl@gcc.gnu.org>
|
||||
|
||||
PR fortran/88169
|
||||
|
@ -596,6 +596,7 @@ match
|
||||
gfc_match_data (void)
|
||||
{
|
||||
gfc_data *new_data;
|
||||
gfc_expr *e;
|
||||
match m;
|
||||
|
||||
/* Before parsing the rest of a DATA statement, check F2008:c1206. */
|
||||
@ -632,6 +633,30 @@ gfc_match_data (void)
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
/* Check for an entity with an allocatable component, which is not
|
||||
allowed. */
|
||||
e = new_data->var->expr;
|
||||
if (e)
|
||||
{
|
||||
bool invalid;
|
||||
|
||||
invalid = false;
|
||||
for (gfc_ref *ref = e->ref; ref; ref = ref->next)
|
||||
if ((ref->type == REF_COMPONENT
|
||||
&& ref->u.c.component->attr.allocatable)
|
||||
|| (ref->type == REF_ARRAY
|
||||
&& e->symtree->n.sym->attr.pointer != 1
|
||||
&& ref->u.ar.as && ref->u.ar.as->type == AS_DEFERRED))
|
||||
invalid = true;
|
||||
|
||||
if (invalid)
|
||||
{
|
||||
gfc_error ("Allocatable component or deferred-shaped array "
|
||||
"near %C in DATA statement");
|
||||
goto cleanup;
|
||||
}
|
||||
}
|
||||
|
||||
m = top_val_list (new_data);
|
||||
if (m != MATCH_YES)
|
||||
goto cleanup;
|
||||
|
@ -1,3 +1,8 @@
|
||||
2018-12-26 Steven G . Kargl <kargl@gcc.gnu.org>
|
||||
|
||||
PR fortran/85798
|
||||
* gfortran.dg/pr85798.f90: New test.
|
||||
|
||||
2018-12-21 Steven G. Kargl <kargl@gcc.gnu.org>
|
||||
|
||||
PR fortran/88169
|
||||
|
14
gcc/testsuite/gfortran.dg/pr85798.f90
Normal file
14
gcc/testsuite/gfortran.dg/pr85798.f90
Normal file
@ -0,0 +1,14 @@
|
||||
! { dg-do compile }
|
||||
program p
|
||||
type t
|
||||
integer, allocatable :: a(:)
|
||||
end type
|
||||
type u
|
||||
real x
|
||||
type(t) y
|
||||
end type
|
||||
type(t) :: z
|
||||
type(u) :: q
|
||||
data z%a(1) / 789 / ! { dg-error "Allocatable component" }
|
||||
data q%y%a(1) / 789 / ! { dg-error "Allocatable component" }
|
||||
end
|
Loading…
Reference in New Issue
Block a user