diff options
author | Steven G. Kargl <kargl@gcc.gnu.org> | 2019-09-15 17:49:44 +0000 |
---|---|---|
committer | Steven G. Kargl <kargl@gcc.gnu.org> | 2019-09-15 17:49:44 +0000 |
commit | e6e3aa01aa4b9e5d7e1cc69ec134d89cabdfd018 (patch) | |
tree | 0554c11fee7dedd915913f70b45316ade1567bf2 /gcc | |
parent | 204a3763d9bd304847ca2cd1e706c037302823d9 (diff) | |
download | gcc-e6e3aa01aa4b9e5d7e1cc69ec134d89cabdfd018.zip gcc-e6e3aa01aa4b9e5d7e1cc69ec134d89cabdfd018.tar.gz gcc-e6e3aa01aa4b9e5d7e1cc69ec134d89cabdfd018.tar.bz2 |
re PR fortran/91727 (ICE in conformable_arrays, at fortran/resolve.c:7490)
2019-09-15 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/91727
* resolve.c (conformable_arrays): If array-spec is NULL, then
allocate-object is a scalar. a conformability check only occurs
for an array source-expr.
2019-09-15 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/91727
* gfortran.dg/pr91727.f90: New test.
From-SVN: r275731
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/fortran/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/fortran/resolve.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/pr91727.f90 | 9 |
4 files changed, 22 insertions, 1 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 1006cbd..7b383b3 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,10 @@ +2019-09-15 Steven G. Kargl <kargl@gcc.gnu.org> + + PR fortran/91727 + * resolve.c (conformable_arrays): If array-spec is NULL, then + allocate-object is a scalar. a conformability check only occurs + for an array source-expr. + 2019-09-15 Thomas Koenig <tkoenig@gcc.gnu.org> PR fortran/91550 diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c index ce192bb..f1de7dd 100644 --- a/gcc/fortran/resolve.c +++ b/gcc/fortran/resolve.c @@ -7485,7 +7485,7 @@ 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 && (!tail->u.ar.as || e1->rank != tail->u.ar.as->rank)) || (!tail && e1->rank != e2->rank)) { gfc_error ("Source-expr at %L must be scalar or have the " diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index c06029a..786e6a4 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2019-09-15 Steven G. Kargl <kargl@gcc.gnu.org> + + PR fortran/91727 + * gfortran.dg/pr91727.f90: New test. + 2019-09-15 Thomas Koenig <tkoenig@gcc.gnu.org> PR fortran/91550 diff --git a/gcc/testsuite/gfortran.dg/pr91727.f90 b/gcc/testsuite/gfortran.dg/pr91727.f90 new file mode 100644 index 0000000..54276b4 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/pr91727.f90 @@ -0,0 +1,9 @@ +! { dg-do compile } +! Code contributed by Gerhard Steinmetz. +program p + type t + class(*), allocatable :: a + end type + type(t) :: x + allocate (x%a, source=[1]) ! { dg-error "have the same rank as" } +end |