From 431a19beee4d18de9fb45a973f501f4dbb2a16aa Mon Sep 17 00:00:00 2001 From: burnus Date: Sun, 6 May 2012 20:30:05 +0000 Subject: [PATCH] 2012-05-06 Tobias Burnus PR fortran/41587 * decl.c (build_struct): Don't ignore FAILED status. 2012-05-06 Tobias Burnus PR fortran/41587 * gfortran.dg/class_array_13.f90: New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@187214 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/fortran/ChangeLog | 5 +++++ gcc/fortran/decl.c | 5 ++++- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gfortran.dg/class_array_13.f90 | 26 ++++++++++++++++++++++++++ 4 files changed, 40 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/gfortran.dg/class_array_13.f90 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 + + PR fortran/41587 + * decl.c (build_struct): Don't ignore FAILED status. + 2012-05-05 Paul Thomas 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 + + PR fortran/41587 + * gfortran.dg/class_array_13.f90: New. + 2012-05-06 Tristan Gingold * 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 -- 2.7.4