aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorSteven G. Kargl <kargl@gcc.gnu.org>2019-09-15 17:49:44 +0000
committerSteven G. Kargl <kargl@gcc.gnu.org>2019-09-15 17:49:44 +0000
commite6e3aa01aa4b9e5d7e1cc69ec134d89cabdfd018 (patch)
tree0554c11fee7dedd915913f70b45316ade1567bf2 /gcc
parent204a3763d9bd304847ca2cd1e706c037302823d9 (diff)
downloadgcc-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/ChangeLog7
-rw-r--r--gcc/fortran/resolve.c2
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gfortran.dg/pr91727.f909
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