]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
backport: re PR fortran/87907 (ICE in resolve_contained_fntype, at fortran/resolve...
authorSteven G. Kargl <kargl@gcc.gnu.org>
Fri, 21 Jun 2019 00:12:37 +0000 (00:12 +0000)
committerSteven G. Kargl <kargl@gcc.gnu.org>
Fri, 21 Jun 2019 00:12:37 +0000 (00:12 +0000)
2019-06-20  Steven G. Kargl  <kargl@gcc.gnu.org>

Backport from mainline
PR fortran/87907
* resolve.c (resolve_contained_fntype): Do not dereference a NULL
pointer.

2019-06-20  Steven G. Kargl  <kargl@gcc.gnu.org>

Backport from mainline
PR fortran/87907
* gfortran.dg/pr87907.f90: New testcase.

From-SVN: r272534

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

index e2c49f1790fed50e83c192a8c4995d2d70000c68..7bb5d24903053eb95aa9bacf79d17de20348e954 100644 (file)
@@ -1,3 +1,10 @@
+2019-06-20  Steven G. Kargl  <kargl@gcc.gnu.org>
+
+       Backport from mainline
+       PR fortran/87907
+       * resolve.c (resolve_contained_fntype): Do not dereference a NULL
+       pointer.
+
 2019-06-20  Steven G. Kargl  <kargl@gcc.gnu.org>
 
        Backport from mainline
index c565325ee2f4db129fd9d8d72548e82d6360b767..afa4e5c2ccfd0030cf26fc807ebdeeb65abd3c8e 100644 (file)
@@ -583,6 +583,9 @@ resolve_contained_fntype (gfc_symbol *sym, gfc_namespace *ns)
       || sym->attr.entry_master)
     return;
 
+  if (!sym->result)
+    return;
+
   /* Try to find out of what the return type is.  */
   if (sym->result->ts.type == BT_UNKNOWN && sym->result->ts.interface == NULL)
     {
index 5095754d1b94d61db62e86ad953ba8625b5496b5..f74e5efa8024d51b8c2cbfb5f91ccbb025d3f2dd 100644 (file)
@@ -1,3 +1,9 @@
+2019-06-20  Steven G. Kargl  <kargl@gcc.gnu.org>
+
+       Backport from mainline
+       PR fortran/87907
+       * gfortran.dg/pr87907.f90: New testcase.
+
 2019-06-20  Steven G. Kargl  <kargl@gcc.gnu.org>
 
        Backport from mainline
diff --git a/gcc/testsuite/gfortran.dg/pr87907.f90 b/gcc/testsuite/gfortran.dg/pr87907.f90
new file mode 100644 (file)
index 0000000..0fe4e50
--- /dev/null
@@ -0,0 +1,23 @@
+! { dg-do compile }
+! PR fortran/pr87907
+! Original testcase contributed by Gerhard Stienmetz <gscfq at t-online dot de>
+module m
+   interface
+      module function g(x) result(z)
+         integer, intent(in) :: x
+         integer, allocatable :: z
+      end
+   end interface
+end
+
+submodule(m) m2
+   contains
+      subroutine g(x)   ! { dg-error "mismatch in argument" }
+      end
+end
+
+program p
+   use m                ! { dg-error "has a type" }
+   integer :: x = 3
+   call g(x)            ! { dg-error "which is not consistent with" }
+end