2010-09-09 Mikael Morin <mikael@gcc.gnu.org>
authormikael <mikael@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 9 Sep 2010 13:25:07 +0000 (13:25 +0000)
committermikael <mikael@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 9 Sep 2010 13:25:07 +0000 (13:25 +0000)
* 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

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

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

index 3ecf53d..f04bb31 100644 (file)
@@ -1,5 +1,11 @@
 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
+
+2010-09-09  Mikael Morin  <mikael@gcc.gnu.org>
+
        * trans-array.c (gfc_conv_array_transpose): Change generated descriptor
        name
 
        PR fortran/42051
        PR fortran/44064
        * symbol.c (changed_syms): Made static again.
-       (gfc_symbol_state): Don't conditionalize on GFC_DEBUG. 
+       (gfc_symbol_state): Don't conditionalize on GFC_DEBUG.
        Changed conditional internal error into assert.
        Rename function to ...
        (gfc_enforce_clean_symbol_state): ... this.
-       * gfortran.h (gfc_symbol_state, gfc_enforce_clean_symbol_state): 
+       * gfortran.h (gfc_symbol_state, gfc_enforce_clean_symbol_state):
        Rename the former to the latter.
        * parse.c (decode_statement, decode_omp_directive,
        decode_gcc_attribute): Update callers accordingly. Don't conditionalize
        PR fortran/42051
        PR fortran/44064
        PR fortran/45151
-       * intrinsic.c (gfc_get_intrinsic_sub_symbol): Commit changed symbol. 
+       * intrinsic.c (gfc_get_intrinsic_sub_symbol): Commit changed symbol.
        * symbol.c (gen_cptr_param, gen_fptr_param, gen_shape_param,
        gfc_copy_formal_args, gfc_copy_formal_args_intr,
        gfc_copy_formal_args_ppc, generate_isocbinding_symbol): Ditto.
-       * parse.c (parse_derived_contains, parse_spec, parse_progunit): 
-       Call reject_statement in case of error. 
+       * parse.c (parse_derived_contains, parse_spec, parse_progunit):
+       Call reject_statement in case of error.
        (match_deferred_characteritics): Call gfc_undo_symbols in case match
        fails.
 
        PR fortran/42051
        PR fortran/44064
        * symbol.c (changed_syms): Made non-static.
-       * parse.c (changed_syms): Declare new external. 
+       * parse.c (changed_syms): Declare new external.
        (next_statement): Assert changed_syms is NULL at the beginning.
 
 2010-07-30  Janus Weil  <janus@gcc.gnu.org>
        a parameterized stop condition.
        (gfc_free_equiv): Use gfc_free_equiv_until.
        * parse.c (next_statement): Save equivalence list.
-       (reject_statement): Restore equivalence list. 
+       (reject_statement): Restore equivalence list.
 
 2010-07-25  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
 
 2010-07-14  Mikael Morin  <mikael@gcc.gnu.org>
 
        * trans-array.c (gfc_conv_section_upper_bound): Remove
-       (gfc_conv_section_startstride): Don't set the upper bound in the 
+       (gfc_conv_section_startstride): Don't set the upper bound in the
        vector subscript case.
        (gfc_conv_loop_setup): Don't use gfc_conv_section_upper_bound
 
index 154ecc4..59b5531 100644 (file)
@@ -742,6 +742,7 @@ gfc_trans_create_temp_array (stmtblock_t * pre, stmtblock_t * post,
   int dim;
 
   gcc_assert (info->dimen > 0);
+  gcc_assert (loop->dimen == info->dimen);
 
   if (gfc_option.warn_array_temp && where)
     gfc_warning ("Creating array temporary at %L", where);
@@ -793,17 +794,17 @@ gfc_trans_create_temp_array (stmtblock_t * pre, stmtblock_t * post,
 
   or_expr = NULL_TREE;
 
-  /* If there is at least one null loop->to[n], it is a callee allocated 
+  /* If there is at least one null loop->to[n], it is a callee allocated
      array.  */
-  for (n = 0; n < info->dimen; n++)
+  for (n = 0; n < loop->dimen; n++)
     if (loop->to[n] == NULL_TREE)
       {
        size = NULL_TREE;
        break;
       }
 
-  for (n = 0; n < info->dimen; n++)
-     {
+  for (n = 0; n < loop->dimen; n++)
+    {
       dim = info->dim[n];
 
       if (size == NULL_TREE)
index caa9572..82cddd7 100644 (file)
@@ -240,6 +240,7 @@ gfc_conv_elemental_dependencies (gfc_se * se, gfc_se * loopse,
          /* Make a local loopinfo for the temporary creation, so that
             none of the other ss->info's have to be renormalized.  */
          gfc_init_loopinfo (&tmp_loop);
+         tmp_loop.dimen = info->dimen;
          for (n = 0; n < info->dimen; n++)
            {
              tmp_loop.to[n] = loopse->loop->to[n];