]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR fortran/85779 (ICE in gfc_typename, at fortran/misc.c:156)
authorSteven G. Kargl <kargl@gcc.gnu.org>
Fri, 25 May 2018 19:45:57 +0000 (19:45 +0000)
committerSteven G. Kargl <kargl@gcc.gnu.org>
Fri, 25 May 2018 19:45:57 +0000 (19:45 +0000)
2018-05-25  Steven G. Kargl  <kargl@gcc.gnu.org>

PR fortran/85779
Backport from trunk
* decl.c (gfc_match_derived_decl): Fix NULL pointer dereference.

2018-05-25  Steven G. Kargl  <kargl@gcc.gnu.org>

PR fortran/85779
Backport from trunk
* gfortran.dg/pr85779_1.f90: New test.
* gfortran.dg/pr85779_2.f90: Ditto.
* gfortran.dg/pr85779_3.f90: Ditto.

From-SVN: r260776

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

index caffbd21a157f2d6eb89cb6620d3fbac35f231f0..116750cc641d0e09f2d62428f7ef883ccfa65b6e 100644 (file)
@@ -1,3 +1,9 @@
+2018-05-25  Steven G. Kargl  <kargl@gcc.gnu.org>
+
+       PR fortran/85779
+       Backport from trunk
+       * decl.c (gfc_match_derived_decl): Fix NULL pointer dereference.
+
 2018-05-25  Steven G. Kargl  <kargl@gcc.gnu.org>
 
        PR fortran/85543
index 917b89f0a482b1ab5aae3bcc6f702afaf9da4fa3..139f083589be4fbb8fc1021762cacbe811cc9dfb 100644 (file)
@@ -8755,8 +8755,12 @@ gfc_match_derived_decl (void)
 
   if (!gensym->attr.generic && gensym->ts.type != BT_UNKNOWN)
     {
-      gfc_error ("Derived type name %qs at %C already has a basic type "
-                "of %s", gensym->name, gfc_typename (&gensym->ts));
+      if (gensym->ts.u.derived)
+       gfc_error ("Derived type name %qs at %C already has a basic type "
+                  "of %s", gensym->name, gfc_typename (&gensym->ts));
+      else
+       gfc_error ("Derived type name %qs at %C already has a basic type",
+                  gensym->name);
       return MATCH_ERROR;
     }
 
index d15a73cc2033b2e1c17d5de0c5e842ff208ca5a5..e80ae13e58e67bdadbc5e87063d4a1795e25cadc 100644 (file)
@@ -1,3 +1,11 @@
+2018-05-25  Steven G. Kargl  <kargl@gcc.gnu.org>
+
+       PR fortran/85779
+       Backport from trunk
+       * gfortran.dg/pr85779_1.f90: New test.
+       * gfortran.dg/pr85779_2.f90: Ditto.
+       * gfortran.dg/pr85779_3.f90: Ditto.
+
 2018-05-25  Steven G. Kargl  <kargl@gcc.gnu.org>
 
        PR fortran/85543
diff --git a/gcc/testsuite/gfortran.dg/pr85779_1.f90 b/gcc/testsuite/gfortran.dg/pr85779_1.f90
new file mode 100644 (file)
index 0000000..186568f
--- /dev/null
@@ -0,0 +1,6 @@
+! { dg-do compile }
+! PR fortran/85779
+type(t) function f() ! { dg-error "is not accessible" }
+   type f            ! { dg-error "already has a basic type" }
+   end type          ! { dg-error "END FUNCTION statement" }
+end
diff --git a/gcc/testsuite/gfortran.dg/pr85779_2.f90 b/gcc/testsuite/gfortran.dg/pr85779_2.f90
new file mode 100644 (file)
index 0000000..4cc3c62
--- /dev/null
@@ -0,0 +1,7 @@
+! { dg-do compile }
+! PR fortran/85779
+type(t) function f() result(z)   ! { dg-error "is not accessible" }
+   type z                        ! { dg-error "already has a basic type" }
+   end type                      ! { dg-error "END FUNCTION statement" }
+end
+
diff --git a/gcc/testsuite/gfortran.dg/pr85779_3.f90 b/gcc/testsuite/gfortran.dg/pr85779_3.f90
new file mode 100644 (file)
index 0000000..fba1133
--- /dev/null
@@ -0,0 +1,7 @@
+! { dg-do compile }
+! PR fortran/85779
+class(t) function f()   ! { dg-error "must be dummy, allocatable or pointer" }
+   type f               ! { dg-error "already has a basic type" }
+   end type             ! { dg-error "END FUNCTION statement" }
+end
+