re PR fortran/79795 (Fortran ICE in resolve_symbol starting with r163221)
authorThomas Koenig <tkoenig@gcc.gnu.org>
Wed, 18 Oct 2017 20:32:34 +0000 (20:32 +0000)
committerThomas Koenig <tkoenig@gcc.gnu.org>
Wed, 18 Oct 2017 20:32:34 +0000 (20:32 +0000)
2017-10-18  Thomas Koenig  <tkoenig@gcc.gnu.org>

PR fortran/79795
* resolve.c (resovle_symbol): Change gcc_assert to
sensible error message.

2017-10-18  Thomas Koenig  <tkoenig@gcc.gnu.org>

PR fortran/79795
* gfortran.dg/assumed_size_2.f90: New test.

From-SVN: r253868

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

index ab2665098791ee93549e0396aedc43a3d99c89b0..8b9f90eeb0ffec53d7037e969b29a566a42d6b56 100644 (file)
@@ -1,3 +1,9 @@
+2017-10-18  Thomas Koenig  <tkoenig@gcc.gnu.org>
+
+       PR fortran/79795
+       * resolve.c (resovle_symbol): Change gcc_assert to
+       sensible error message.
+
 2017-10-18  Paul Thomas  <pault@gcc.gnu.org>
 
        PR fortran/82550
index 5e4988e694510b6c3261e7cafa3efeb15d908194..178854bb0ae8fd0edaab5a089d990bf81edeccc5 100644 (file)
@@ -14403,7 +14403,23 @@ resolve_symbol (gfc_symbol *sym)
 
   if (as)
     {
-      gcc_assert (as->type != AS_IMPLIED_SHAPE);
+      /* If AS_IMPLIED_SHAPE makes it to here, it must be a bad
+        specification expression.  */
+      if (as->type == AS_IMPLIED_SHAPE)
+       {
+         int i;
+         for (i=0; i<as->rank; i++)
+           {
+             if (as->lower[i] != NULL && as->upper[i] == NULL)
+               {
+                 gfc_error ("Bad specification for assumed size array at %L",
+                            &as->lower[i]->where);
+                 return;
+               }
+           }
+         gcc_unreachable();
+       }
+
       if (((as->type == AS_ASSUMED_SIZE && !as->cp_was_assumed)
           || as->type == AS_ASSUMED_SHAPE)
          && !sym->attr.dummy && !sym->attr.select_type_temporary)
index c44b420782f18575c3ec6b966788b1a3c7b4a4db..a792c359d006e610faade255f8fb1ae02d0797e5 100644 (file)
@@ -1,3 +1,8 @@
+2017-10-18  Thomas Koenig  <tkoenig@gcc.gnu.org>
+
+       PR fortran/79795
+       * gfortran.dg/assumed_size_2.f90: New test.
+
 2017-10-18  Uros Bizjak  <ubizjak@gmail.com>
            Jakub Jelinek  <jakub@redhat.com>
 
diff --git a/gcc/testsuite/gfortran.dg/assumed_size_2.f90 b/gcc/testsuite/gfortran.dg/assumed_size_2.f90
new file mode 100644 (file)
index 0000000..e9a1185
--- /dev/null
@@ -0,0 +1,4 @@
+! { dg-do compile }
+subroutine foo(a)
+  dimension  a(*,*) ! { dg-error "Bad specification for assumed size array" }
+end