From: mikael Date: Thu, 9 Sep 2010 13:25:07 +0000 (+0000) Subject: 2010-09-09 Mikael Morin X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=3b9ca79ac683ceb8d832443a2970e8e3a19ce9ae;p=thirdparty%2Fgcc.git 2010-09-09 Mikael Morin * 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 --- diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 3ecf53d05dfb..f04bb3140646 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,9 @@ +2010-09-09 Mikael Morin + + * 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 * trans-array.c (gfc_conv_array_transpose): Change generated descriptor @@ -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 @@ -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 @@ -1437,7 +1443,7 @@ 2010-07-14 Mikael Morin * 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 154ecc479dd6..59b553126712 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 caa9572db5e4..82cddd7c226d 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];