diff options
author | Mikael Morin <mikael@gcc.gnu.org> | 2010-09-09 13:25:07 +0000 |
---|---|---|
committer | Mikael Morin <mikael@gcc.gnu.org> | 2010-09-09 13:25:07 +0000 |
commit | ea5e803f5d4270439e1cfdae8525c108cd7841ae (patch) | |
tree | d60d58da74620f3332da4110ac15e9fa4c5069bd | |
parent | 4b6133ea8b7a4db9e69e7a72459aa7e754b8c596 (diff) | |
download | gcc-ea5e803f5d4270439e1cfdae8525c108cd7841ae.zip gcc-ea5e803f5d4270439e1cfdae8525c108cd7841ae.tar.gz gcc-ea5e803f5d4270439e1cfdae8525c108cd7841ae.tar.bz2 |
trans-array.c (gfc_trans_create_temp_array): Assert loop dimension and info dimension are the same.
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
Co-Authored-By: Janus Weil <janus@gcc.gnu.org>
From-SVN: r164090
-rw-r--r-- | gcc/fortran/ChangeLog | 22 | ||||
-rw-r--r-- | gcc/fortran/trans-array.c | 9 | ||||
-rw-r--r-- | gcc/fortran/trans-stmt.c | 1 |
3 files changed, 20 insertions, 12 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 3ecf53d..f04bb31 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -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 @@ -952,11 +958,11 @@ 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 @@ -1019,12 +1025,12 @@ 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. @@ -1041,7 +1047,7 @@ 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> @@ -1202,7 +1208,7 @@ 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> @@ -1437,7 +1443,7 @@ 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 diff --git a/gcc/fortran/trans-array.c b/gcc/fortran/trans-array.c index 154ecc4..59b5531 100644 --- a/gcc/fortran/trans-array.c +++ b/gcc/fortran/trans-array.c @@ -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) diff --git a/gcc/fortran/trans-stmt.c b/gcc/fortran/trans-stmt.c index caa9572..82cddd7 100644 --- a/gcc/fortran/trans-stmt.c +++ b/gcc/fortran/trans-stmt.c @@ -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]; |