2010-09-09 Mikael Morin <mikael@gcc.gnu.org>
authormikael <mikael@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 9 Sep 2010 13:41:54 +0000 (13:41 +0000)
committermikael <mikael@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 9 Sep 2010 13:41:54 +0000 (13:41 +0000)
* trans-array.c (gfc_trans_create_temp_array): Don't set dim array.
(gfc_conv_loop_setup, gfc_walk_function_expr): Set dim array.
* trans-intrinsic.c (gfc_walk_intrinsic_libfunc): Ditto.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@164094 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/fortran/ChangeLog
gcc/fortran/trans-array.c
gcc/fortran/trans-intrinsic.c

index f04bb31..07228f6 100644 (file)
@@ -1,5 +1,11 @@
 2010-09-09  Mikael Morin  <mikael@gcc.gnu.org>
 
+       * trans-array.c (gfc_trans_create_temp_array): Don't set dim array.
+       (gfc_conv_loop_setup, gfc_walk_function_expr): Set dim array.
+       * trans-intrinsic.c (gfc_walk_intrinsic_libfunc): Ditto.
+
+2010-09-09  Mikael Morin  <mikael@gcc.gnu.org>
+
        * trans-array.c (gfc_trans_create_temp_array): Assert loop dimension
        and info dimension are the same. Loop over loop dimension.
        * trans-stmt.c (gfc_conv_elemental_dependencies): Set loop dimension
index 59b5531..c9e72f6 100644 (file)
@@ -762,7 +762,6 @@ gfc_trans_create_temp_array (stmtblock_t * pre, stmtblock_t * post,
       info->start[dim] = gfc_index_zero_node;
       info->end[dim] = gfc_index_zero_node;
       info->stride[dim] = gfc_index_one_node;
-      info->dim[dim] = dim;
     }
 
   /* Initialize the descriptor.  */
@@ -3830,6 +3829,11 @@ gfc_conv_loop_setup (gfc_loopinfo * loop, locus * where)
       memset (&loop->temp_ss->data.info, 0, sizeof (gfc_ss_info));
       loop->temp_ss->type = GFC_SS_SECTION;
       loop->temp_ss->data.info.dimen = n;
+
+      gcc_assert (loop->temp_ss->data.info.dimen != 0);
+      for (n = 0; n < loop->temp_ss->data.info.dimen; n++)
+       loop->temp_ss->data.info.dim[n] = n;
+
       gfc_trans_create_temp_array (&loop->pre, &loop->post, loop,
                                   &loop->temp_ss->data.info, tmp, NULL_TREE,
                                   false, true, false, where);
@@ -6866,6 +6870,7 @@ gfc_walk_function_expr (gfc_ss * ss, gfc_expr * expr)
   gfc_intrinsic_sym *isym;
   gfc_symbol *sym;
   gfc_component *comp = NULL;
+  int n;
 
   isym = expr->value.function.isym;
 
@@ -6887,6 +6892,8 @@ gfc_walk_function_expr (gfc_ss * ss, gfc_expr * expr)
       newss->expr = expr;
       newss->next = ss;
       newss->data.info.dimen = expr->rank;
+      for (n = 0; n < newss->data.info.dimen; n++)
+       newss->data.info.dim[n] = n;
       return newss;
     }
 
index 29116d6..030bf95 100644 (file)
@@ -6234,6 +6234,7 @@ static gfc_ss *
 gfc_walk_intrinsic_libfunc (gfc_ss * ss, gfc_expr * expr)
 {
   gfc_ss *newss;
+  int n;
 
   gcc_assert (expr->rank > 0);
 
@@ -6242,6 +6243,8 @@ gfc_walk_intrinsic_libfunc (gfc_ss * ss, gfc_expr * expr)
   newss->expr = expr;
   newss->next = ss;
   newss->data.info.dimen = expr->rank;
+  for (n = 0; n < newss->data.info.dimen; n++)
+    newss->data.info.dim[n] = n;
 
   return newss;
 }