diff options
author | Janus Weil <janus@gcc.gnu.org> | 2013-05-30 12:19:16 +0200 |
---|---|---|
committer | Janus Weil <janus@gcc.gnu.org> | 2013-05-30 12:19:16 +0200 |
commit | 582f2176b5abe7512e514d31c1770def11cb8e38 (patch) | |
tree | e72b08bb1210dc085bbc1237493960ebf6a54e31 /gcc | |
parent | 0b871ccfce4a95d2d6c8849e0c69a0172fd7ea07 (diff) | |
download | gcc-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/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/fortran/resolve.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/assumed_size_1.f90 | 17 |
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 |