From d42a2e465d821517819a54f4f613bb6e6443dc05 Mon Sep 17 00:00:00 2001 From: Fritz Reese Date: Mon, 6 Apr 2020 16:14:29 -0400 Subject: Fix fortran/93686 -- ICE matching data statements with derived-type pointers. gcc/fortran/ChangeLog: 2020-04-06 Steven G. Kargl PR fortran/93686 * decl.c (gfc_match_data): Handle data matching for derived type pointers. gcc/testsuite/ChangeLog: 2020-04-06 Steven G. Kargl PR fortran/93686 * gfortran.dg/pr93686_1.f90: New test. * gfortran.dg/pr93686_2.f90: Likewise. * gfortran.dg/pr93686_3.f90: Likewise. * gfortran.dg/pr93686_4.f90: Likewise. --- gcc/fortran/ChangeLog | 6 ++++++ gcc/fortran/decl.c | 4 ++++ 2 files changed, 10 insertions(+) (limited to 'gcc/fortran') diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 8c4ace7..435f93d 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,9 @@ +2020-04-06 Steven G. Kargl + + PR fortran/93686 + * decl.c (gfc_match_data): Handle data matching for derived type + pointers. + 2020-04-02 Tobias Burnus * gfortran.h (gfc_resolve_formal_arglist): Add prototype. diff --git a/gcc/fortran/decl.c b/gcc/fortran/decl.c index ea30908..b3ed63c 100644 --- a/gcc/fortran/decl.c +++ b/gcc/fortran/decl.c @@ -696,6 +696,10 @@ gfc_match_data (void) /* F2008:C567 (R536) A data-i-do-object or a variable that appears as a data-stmt-object shall not be an object designator in which a pointer appears other than as the entire rightmost part-ref. */ + if (!e->ref && e->ts.type == BT_DERIVED + && e->symtree->n.sym->attr.pointer) + goto partref; + ref = e->ref; if (e->symtree->n.sym->ts.type == BT_DERIVED && e->symtree->n.sym->attr.pointer -- cgit v1.1