From: burnus Date: Sun, 6 May 2012 20:30:05 +0000 (+0000) Subject: 2012-05-06 Tobias Burnus X-Git-Tag: upstream/4.9.2~12837 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=431a19beee4d18de9fb45a973f501f4dbb2a16aa;p=platform%2Fupstream%2Flinaro-gcc.git 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 --- 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