]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR fortran/60576 (FAIL: gfortran.dg/assumed_rank_7.f90)
authorMikael Morin <mikael@gcc.gnu.org>
Fri, 28 Mar 2014 20:04:01 +0000 (20:04 +0000)
committerTobias Burnus <burnus@gcc.gnu.org>
Fri, 28 Mar 2014 20:04:01 +0000 (21:04 +0100)
2014-03-28  Mikael Morin  <mikael@gcc.gnu.org>
            Tobias Burnus  <burnus@net-b.de>

        PR fortran/60576
        * trans-expr.c (gfc_conv_derived_to_class): Avoid
        generation of out-of-bounds range expr.

Co-Authored-By: Tobias Burnus <burnus@net-b.de>
From-SVN: r208918

gcc/fortran/ChangeLog
gcc/fortran/trans-expr.c

index 1bd4e475b3529d81430b6ac0528b70882ebf2ba3..ed9593a142aaca4184b8133ae6dd7f3c61354c37 100644 (file)
@@ -1,3 +1,10 @@
+2014-03-28  Mikael Morin  <mikael@gcc.gnu.org>
+           Tobias Burnus  <burnus@net-b.de>
+
+       PR fortran/
+       * trans-expr.c (gfc_conv_derived_to_class): Avoid
+       generation of out-of-bounds range expr.
+
 2014-03-28  Mikael Morin  <mikael@gcc.gnu.org>
 
        PR fortran/60677
index 9a6b40c5c58a42ed2a8fba8902d0e249a37549fa..30931a364c400c0c4be0302a5d8fd070c016f9a5 100644 (file)
@@ -426,7 +426,11 @@ gfc_conv_derived_to_class (gfc_se *parmse, gfc_expr *e,
          gfc_conv_expr_descriptor (parmse, e);
 
          if (e->rank != class_ts.u.derived->components->as->rank)
-           class_array_data_assign (&block, ctree, parmse->expr, true);
+           {
+             gcc_assert (class_ts.u.derived->components->as->type
+                         == AS_ASSUMED_RANK);
+             class_array_data_assign (&block, ctree, parmse->expr, false);
+           }
          else
            {
              if (gfc_expr_attr (e).codimension)