aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorSteven G. Kargl <kargl@gcc.gnu.org>2018-05-25 00:39:23 +0000
committerSteven G. Kargl <kargl@gcc.gnu.org>2018-05-25 00:39:23 +0000
commit55157d5ed6df9a8eacd0e39c12c97fe7222f1172 (patch)
tree4d1152f2fb6001ddcbf75d8f2192babee45a8bb4 /gcc
parentafb4d6a83e3b7c642add16dd88d4efa8517b5895 (diff)
downloadgcc-55157d5ed6df9a8eacd0e39c12c97fe7222f1172.zip
gcc-55157d5ed6df9a8eacd0e39c12c97fe7222f1172.tar.gz
gcc-55157d5ed6df9a8eacd0e39c12c97fe7222f1172.tar.bz2
re PR fortran/85543 (ICE in update_current_proc_array_outer_dependency, at fortran/resolve.c:3060)
2018-05-24 Steven G. Kargl <kargl@gcc.gnu.org> PR fortran/85543 * resolve.c (update_current_proc_array_outer_dependency): Avoid NULL pointer dereference. 2018-05-24 Steven G. Kargl <kargl@gcc.gnu.org> PR fortran/85543 * gfortran.dg/pr85543.f90: New test. From-SVN: r260704
Diffstat (limited to 'gcc')
-rw-r--r--gcc/fortran/ChangeLog6
-rw-r--r--gcc/fortran/resolve.c4
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gfortran.dg/pr85543.f908
4 files changed, 21 insertions, 2 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index 9410c52..98fbfd1 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,5 +1,11 @@
2018-05-24 Steven G. Kargl <kargl@gcc.gnu.org>
+ PR fortran/85543
+ * resolve.c (update_current_proc_array_outer_dependency): Avoid NULL
+ pointer dereference.
+
+2018-05-24 Steven G. Kargl <kargl@gcc.gnu.org>
+
PR fortran/85780
* resolve.c (resolve_fl_procedure): Avoid NULL dereference.
diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c
index 434c532..43b1ded 100644
--- a/gcc/fortran/resolve.c
+++ b/gcc/fortran/resolve.c
@@ -3055,8 +3055,8 @@ update_current_proc_array_outer_dependency (gfc_symbol *sym)
/* If SYM has references to outer arrays, so has the procedure calling
SYM. If SYM is a procedure pointer, we can assume the worst. */
- if (sym->attr.array_outer_dependency
- || sym->attr.proc_pointer)
+ if ((sym->attr.array_outer_dependency || sym->attr.proc_pointer)
+ && gfc_current_ns->proc_name)
gfc_current_ns->proc_name->attr.array_outer_dependency = 1;
}
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index fec1fca..bdf5e84 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,5 +1,10 @@
2018-05-24 Steven G. Kargl <kargl@gcc.gnu.org>
+ PR fortran/85543
+ * gfortran.dg/pr85543.f90: New test.
+
+2018-05-24 Steven G. Kargl <kargl@gcc.gnu.org>
+
PR fortran/85780
* gfortran.dg/pr85780.f90: New test.
diff --git a/gcc/testsuite/gfortran.dg/pr85543.f90 b/gcc/testsuite/gfortran.dg/pr85543.f90
new file mode 100644
index 0000000..d3f8327
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/pr85543.f90
@@ -0,0 +1,8 @@
+! { dg-do compile }
+! PR fortran/85543
+program p
+ procedure(), pointer :: z
+contains
+ real(z()) function f() ! { dg-error "in initialization expression at" }
+ end
+end