]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR fortran/41587 ([OOP] ICE with ALLOCATABLE CLASS components)
authorTobias Burnus <burnus@net-b.de>
Sun, 6 May 2012 20:30:05 +0000 (22:30 +0200)
committerTobias Burnus <burnus@gcc.gnu.org>
Sun, 6 May 2012 20:30:05 +0000 (22:30 +0200)
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

gcc/fortran/ChangeLog
gcc/fortran/decl.c
gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.dg/class_array_13.f90 [new file with mode: 0644]

index a9f1cecc46222cbe40f7d7ea845e51ab5af77812..277e86e041e306f0389c8934c2eb99c559a488f4 100644 (file)
@@ -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
index 4da21c316e3a0b74c0da30a354adc521e40a9969..e166bc916b1911159377a1dbb05c394be6909852 100644 (file)
@@ -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;
index d777ff447b311e7eea96d4ea7ba9d9425ac8b97b..6d831947fb80d60cedfa12ea769c39fa8b1a3575 100644 (file)
@@ -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 (file)
index 0000000..567bbf8
--- /dev/null
@@ -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