aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSteven G. Kargl <kargl@gcc.gnu.org>2019-06-19 17:58:54 +0000
committerSteven G. Kargl <kargl@gcc.gnu.org>2019-06-19 17:58:54 +0000
commitee3aab6826f7dbfe0f1a509cb429f4a4d755f38b (patch)
treed487aab5b7ba40c4f3349db9718045ab30c1b4dd
parent33f0ad50f48cefeec7f3136e30229c9f85bbd372 (diff)
downloadgcc-ee3aab6826f7dbfe0f1a509cb429f4a4d755f38b.zip
gcc-ee3aab6826f7dbfe0f1a509cb429f4a4d755f38b.tar.gz
gcc-ee3aab6826f7dbfe0f1a509cb429f4a4d755f38b.tar.bz2
re PR fortran/87907 (ICE in resolve_contained_fntype, at fortran/resolve.c:587)
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 Steven G. Kargl <kargl@gcc.gnu.org> PR fortran/87907 * gfortran.dg/pr87907.f90: New testcase. From-SVN: r272480
-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