]> 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:13:50 +0000 (19:13 +0000)
committerSteven G. Kargl <kargl@gcc.gnu.org>
Fri, 25 May 2018 19:13:50 +0000 (19:13 +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 point 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: r260773

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 104a96857e3045d575eb19b0a83041ee77536a41..8b59be6f02c3150225624f8d23a6b780a143dd55 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 point dereference.
+
 2018-05-25  Steven G. Kargl  <kargl@gcc.gnu.org>
 
        PR fortran/85780
index 69d21633f7898c7e89de98c59e359398c07dd162..a50e77cfef0c1b892e9f7753eb569bb2e020f789 100644 (file)
@@ -9035,8 +9035,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 661df286fb7815f06bfe0b5488f3a8835f3f7fb2..4ed6faf2e86d41af8477b85f34c26159be87db51 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/85780
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
+