aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJanus Weil <janus@gcc.gnu.org>2013-05-30 12:19:16 +0200
committerJanus Weil <janus@gcc.gnu.org>2013-05-30 12:19:16 +0200
commit582f2176b5abe7512e514d31c1770def11cb8e38 (patch)
treee72b08bb1210dc085bbc1237493960ebf6a54e31 /gcc
parent0b871ccfce4a95d2d6c8849e0c69a0172fd7ea07 (diff)
downloadgcc-582f2176b5abe7512e514d31c1770def11cb8e38.zip
gcc-582f2176b5abe7512e514d31c1770def11cb8e38.tar.gz
gcc-582f2176b5abe7512e514d31c1770def11cb8e38.tar.bz2
re PR fortran/54189 (ICE (segfault) with invalid assumed-size dummy)
2013-05-30 Janus Weil <janus@gcc.gnu.org> PR fortran/54189 * resolve.c (check_assumed_size_reference): Check for e->ref. 2013-05-30 Janus Weil <janus@gcc.gnu.org> PR fortran/54189 * gfortran.dg/assumed_size_1.f90: New. From-SVN: r199445
Diffstat (limited to 'gcc')
-rw-r--r--gcc/fortran/ChangeLog5
-rw-r--r--gcc/fortran/resolve.c2
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gfortran.dg/assumed_size_1.f9017
4 files changed, 28 insertions, 1 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index 87aa9bc..af467b6 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,8 @@
+2013-05-30 Janus Weil <janus@gcc.gnu.org>
+
+ PR fortran/54189
+ * resolve.c (check_assumed_size_reference): Check for e->ref.
+
2013-05-30 Tobias Burnus <burnus@net-b.de>
PR fortran/57458
diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c
index 4cfc858..b2e8fdc 100644
--- a/gcc/fortran/resolve.c
+++ b/gcc/fortran/resolve.c
@@ -1459,7 +1459,7 @@ check_assumed_size_reference (gfc_symbol *sym, gfc_expr *e)
/* FIXME: The comparison "e->ref->u.ar.type == AR_FULL" is wrong.
What should it be? */
- if ((e->ref->u.ar.end[e->ref->u.ar.as->rank - 1] == NULL)
+ if (e->ref && (e->ref->u.ar.end[e->ref->u.ar.as->rank - 1] == NULL)
&& (e->ref->u.ar.as->type == AS_ASSUMED_SIZE)
&& (e->ref->u.ar.type == AR_FULL))
{
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 6af7155..479c602 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2013-05-30 Janus Weil <janus@gcc.gnu.org>
+
+ PR fortran/54189
+ * gfortran.dg/assumed_size_1.f90: New.
+
2013-05-30 Zhenqiang Chen <zhenqiang.chen@linaro.org>
* gcc.dg/shrink-wrap-alloca.c: New added.
diff --git a/gcc/testsuite/gfortran.dg/assumed_size_1.f90 b/gcc/testsuite/gfortran.dg/assumed_size_1.f90
new file mode 100644
index 0000000..1ad1ae84
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/assumed_size_1.f90
@@ -0,0 +1,17 @@
+! { dg-do compile }
+!
+! PR 54189: ICE (segfault) with invalid assumed-size dummy
+!
+! Contributed by Tobias Burnus <burnus@gcc.gnu.org>
+
+ implicit none
+ procedure(g), pointer :: x ! { dg-error "must be a dummy argument" }
+ x => g
+
+contains
+
+ function g() ! { dg-error "must be a dummy argument" }
+ integer :: g(*)
+ end function
+
+end