aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorTobias Burnus <burnus@net-b.de>2012-05-06 22:30:05 +0200
committerTobias Burnus <burnus@gcc.gnu.org>2012-05-06 22:30:05 +0200
commitea59b186fbc1648d23b266edb1f01c60b0ed72c0 (patch)
tree4e328a32c3a57cc0680f637081db10df43b009d8 /gcc
parent91000c66b9eb9b3ec0a763c78c0f070b9b256850 (diff)
downloadgcc-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
Diffstat (limited to 'gcc')
-rw-r--r--gcc/fortran/ChangeLog5
-rw-r--r--gcc/fortran/decl.c5
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gfortran.dg/class_array_13.f9026
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