re PR fortran/68019 (ICE on rank mismatch of implied-shape array of user-defined...
authorSteven G. Kargl <kargl@gcc.gnu.org>
Mon, 19 Oct 2015 21:09:21 +0000 (21:09 +0000)
committerSteven G. Kargl <kargl@gcc.gnu.org>
Mon, 19 Oct 2015 21:09:21 +0000 (21:09 +0000)
2015-10-19  Steven G. Kargl  <kargl@gcc.gnu.org>

PR fortran/68019
* decl.c (add_init_expr_to_sym): Remove an assert() to allow an error
message to be issued.

2015-10-19  Steven G. Kargl  <kargl@gcc.gnu.org>

PR fortran/68019
* gfortran.dg/pr68019.f90: new test.

From-SVN: r229003

gcc/fortran/ChangeLog
gcc/fortran/decl.c
gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.dg/pr68019.f90 [new file with mode: 0644]

index 53d309447b70c0f6d1f0673aad183d01f17bd6d6..0b94ad70658656fb127ca173a9e2d9124a5bdedf 100644 (file)
@@ -1,3 +1,9 @@
+2015-10-19  Steven G. Kargl  <kargl@gcc.gnu.org>
+
+       PR fortran/68019
+       * decl.c (add_init_expr_to_sym): Remove an assert() to allow an error
+       message to be issued.
+
 2015-10-18  Mikael Morin  <mikael@gcc.gnu.org>
 
        PR fortran/67758
index 4871b7c364e10a0301580383c6ce3d2049a437cf..c7526772e800995e7e949372aa23289bb3dd78bb 100644 (file)
@@ -1486,7 +1486,6 @@ add_init_expr_to_sym (const char *name, gfc_expr **initp, locus *var_locus)
                         " with scalar", &sym->declared_at);
              return false;
            }
-         gcc_assert (sym->as->rank == init->rank);
 
          /* Shape should be present, we get an initialization expression.  */
          gcc_assert (init->shape);
index c4e96a7bc799758fd996d4815b3f4a48b7219da5..9130c7daddaf41627ab0bc53f370a83bf7e055bc 100644 (file)
@@ -1,3 +1,8 @@
+2015-10-19  Steven G. Kargl  <kargl@gcc.gnu.org>
+
+       PR fortran/68019
+       * gfortran.dg/pr68019.f90: new test.
+
 2015-10-19  Richard Biener  <rguenther@suse.de>
 
        PR tree-optimization/67975
diff --git a/gcc/testsuite/gfortran.dg/pr68019.f90 b/gcc/testsuite/gfortran.dg/pr68019.f90
new file mode 100644 (file)
index 0000000..2e304c3
--- /dev/null
@@ -0,0 +1,13 @@
+! { dg-do compile }
+! Original code from Gerhard Steinmetz
+! Gerhard dot Steinmetz for fortran at t-online dot de
+! PR fortran/68019
+!
+program p
+   integer :: i
+   type t
+      integer :: n
+   end type
+   type(t), parameter :: vec(*) = [(t(i), i = 1, 4)]
+   type(t), parameter :: arr(*) = reshape(vec, [2, 2])   ! { dg-error "ranks 1 and 2 in assignment" }
+end