aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc')
-rw-r--r--gcc/fortran/ChangeLog6
-rw-r--r--gcc/fortran/resolve.c3
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gfortran.dg/pr87907.f9023
4 files changed, 37 insertions, 0 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index 289be5b..62edba7 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,9 @@
+2019-06-19 Steven G. Kargl <kargl@gcc.gnu.org>
+
+ PR fortran/87907
+ * resolve.c (resolve_contained_fntype): Do not dereference a NULL
+ pointer.
+
2019-06-19 Jim MacArthur <jim.macarthur@codethink.co.uk>
Mark Eggleston <mark.eggleston@codethink.com>
diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c
index c565325..afa4e5c 100644
--- a/gcc/fortran/resolve.c
+++ b/gcc/fortran/resolve.c
@@ -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)
{
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 4247335..aa41d2a 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2019-06-19 Steven G. Kargl <kargl@gcc.gnu.org>
+
+ PR fortran/87907
+ * gfortran.dg/pr87907.f90: New testcase.
+
2019-06-19 Wilco Dijkstra <wdijkstr@arm.com>
PR middle-end/84521
diff --git a/gcc/testsuite/gfortran.dg/pr87907.f90 b/gcc/testsuite/gfortran.dg/pr87907.f90
new file mode 100644
index 0000000..0fe4e50
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/pr87907.f90
@@ -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