diff options
author | Tobias Burnus <burnus@net-b.de> | 2012-05-06 22:30:05 +0200 |
---|---|---|
committer | Tobias Burnus <burnus@gcc.gnu.org> | 2012-05-06 22:30:05 +0200 |
commit | ea59b186fbc1648d23b266edb1f01c60b0ed72c0 (patch) | |
tree | 4e328a32c3a57cc0680f637081db10df43b009d8 | |
parent | 91000c66b9eb9b3ec0a763c78c0f070b9b256850 (diff) | |
download | gcc-ea59b186fbc1648d23b266edb1f01c60b0ed72c0.zip gcc-ea59b186fbc1648d23b266edb1f01c60b0ed72c0.tar.gz gcc-ea59b186fbc1648d23b266edb1f01c60b0ed72c0.tar.bz2 |
re PR fortran/41587 ([OOP] ICE with ALLOCATABLE CLASS components)
2012-05-06 Tobias Burnus <burnus@net-b.de>
PR fortran/41587
* decl.c (build_struct): Don't ignore FAILED status.
2012-05-06 Tobias Burnus <burnus@net-b.de>
PR fortran/41587
* gfortran.dg/class_array_13.f90: New.
From-SVN: r187214
-rw-r--r-- | gcc/fortran/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/fortran/decl.c | 5 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/class_array_13.f90 | 26 |
4 files changed, 40 insertions, 1 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index a9f1cec..277e86e 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,8 @@ +2012-05-06 Tobias Burnus <burnus@net-b.de> + + PR fortran/41587 + * decl.c (build_struct): Don't ignore FAILED status. + 2012-05-05 Paul Thomas <pault@gcc.gnu.org> PR fortran/41600 diff --git a/gcc/fortran/decl.c b/gcc/fortran/decl.c index 4da21c3..e166bc9 100644 --- a/gcc/fortran/decl.c +++ b/gcc/fortran/decl.c @@ -1658,7 +1658,10 @@ scalar: bool delayed = (gfc_state_stack->sym == c->ts.u.derived) || (!c->ts.u.derived->components && !c->ts.u.derived->attr.zero_comp); - return gfc_build_class_symbol (&c->ts, &c->attr, &c->as, delayed); + gfc_try t2 = gfc_build_class_symbol (&c->ts, &c->attr, &c->as, delayed); + + if (t != FAILURE) + t = t2; } return t; diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index d777ff4..6d83194 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2012-05-06 Tobias Burnus <burnus@net-b.de> + + PR fortran/41587 + * gfortran.dg/class_array_13.f90: New. + 2012-05-06 Tristan Gingold <gingold@adacore.com> * gnat.dg/warn7.adb: New test. diff --git a/gcc/testsuite/gfortran.dg/class_array_13.f90 b/gcc/testsuite/gfortran.dg/class_array_13.f90 new file mode 100644 index 0000000..567bbf8 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/class_array_13.f90 @@ -0,0 +1,26 @@ +! { dg-do compile } +! { dg-options "-fcoarray=single" } +! +! PR fortran/41587 +! + +type t0 + integer :: j = 42 +end type t0 + +type t + integer :: i + class(t0), allocatable :: foo(3) ! { dg-error "must have a deferred shape" } +end type t + +type t2 + integer :: i + class(t0), pointer :: foo(3) ! { dg-error "must have a deferred shape" } +end type t2 + +type t3 + integer :: i + class(t0), allocatable :: foo[3] ! { dg-error "Upper bound of last coarray dimension must be '\\*'" } +end type t3 + +end |