diff options
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/fortran/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/fortran/resolve.c | 3 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/pr87907.f90 | 23 |
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 |