From 72cf5e1121bea5f6f52ce30fe20a885562128f61 Mon Sep 17 00:00:00 2001 From: janus Date: Thu, 30 May 2013 10:19:16 +0000 Subject: [PATCH] 2013-05-30 Janus Weil PR fortran/54189 * resolve.c (check_assumed_size_reference): Check for e->ref. 2013-05-30 Janus Weil PR fortran/54189 * gfortran.dg/assumed_size_1.f90: New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@199445 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/fortran/ChangeLog | 5 +++++ gcc/fortran/resolve.c | 2 +- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gfortran.dg/assumed_size_1.f90 | 17 +++++++++++++++++ 4 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/gfortran.dg/assumed_size_1.f90 diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 87aa9bce433..af467b6b2a4 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,8 @@ +2013-05-30 Janus Weil + + PR fortran/54189 + * resolve.c (check_assumed_size_reference): Check for e->ref. + 2013-05-30 Tobias Burnus PR fortran/57458 diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c index 4cfc858b7c4..b2e8fdc1bb9 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 6af715564c9..479c602ef6b 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2013-05-30 Janus Weil + + PR fortran/54189 + * gfortran.dg/assumed_size_1.f90: New. + 2013-05-30 Zhenqiang Chen * 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 00000000000..1ad1ae844ad --- /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 + + 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 -- 2.11.4.GIT