Commit ea5e803f by Mikael Morin

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
parent 4b6133ea
2010-09-09 Mikael Morin <mikael@gcc.gnu.org> 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 * trans-array.c (gfc_conv_array_transpose): Change generated descriptor
name name
...@@ -952,11 +958,11 @@ ...@@ -952,11 +958,11 @@
PR fortran/42051 PR fortran/42051
PR fortran/44064 PR fortran/44064
* symbol.c (changed_syms): Made static again. * 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. Changed conditional internal error into assert.
Rename function to ... Rename function to ...
(gfc_enforce_clean_symbol_state): ... this. (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. Rename the former to the latter.
* parse.c (decode_statement, decode_omp_directive, * parse.c (decode_statement, decode_omp_directive,
decode_gcc_attribute): Update callers accordingly. Don't conditionalize decode_gcc_attribute): Update callers accordingly. Don't conditionalize
...@@ -1019,12 +1025,12 @@ ...@@ -1019,12 +1025,12 @@
PR fortran/42051 PR fortran/42051
PR fortran/44064 PR fortran/44064
PR fortran/45151 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, * symbol.c (gen_cptr_param, gen_fptr_param, gen_shape_param,
gfc_copy_formal_args, gfc_copy_formal_args_intr, gfc_copy_formal_args, gfc_copy_formal_args_intr,
gfc_copy_formal_args_ppc, generate_isocbinding_symbol): Ditto. gfc_copy_formal_args_ppc, generate_isocbinding_symbol): Ditto.
* parse.c (parse_derived_contains, parse_spec, parse_progunit): * parse.c (parse_derived_contains, parse_spec, parse_progunit):
Call reject_statement in case of error. Call reject_statement in case of error.
(match_deferred_characteritics): Call gfc_undo_symbols in case match (match_deferred_characteritics): Call gfc_undo_symbols in case match
fails. fails.
...@@ -1041,7 +1047,7 @@ ...@@ -1041,7 +1047,7 @@
PR fortran/42051 PR fortran/42051
PR fortran/44064 PR fortran/44064
* symbol.c (changed_syms): Made non-static. * 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. (next_statement): Assert changed_syms is NULL at the beginning.
2010-07-30 Janus Weil <janus@gcc.gnu.org> 2010-07-30 Janus Weil <janus@gcc.gnu.org>
...@@ -1202,7 +1208,7 @@ ...@@ -1202,7 +1208,7 @@
a parameterized stop condition. a parameterized stop condition.
(gfc_free_equiv): Use gfc_free_equiv_until. (gfc_free_equiv): Use gfc_free_equiv_until.
* parse.c (next_statement): Save equivalence list. * 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-25 Jerry DeLisle <jvdelisle@gcc.gnu.org>
...@@ -1437,7 +1443,7 @@ ...@@ -1437,7 +1443,7 @@
2010-07-14 Mikael Morin <mikael@gcc.gnu.org> 2010-07-14 Mikael Morin <mikael@gcc.gnu.org>
* trans-array.c (gfc_conv_section_upper_bound): Remove * 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. vector subscript case.
(gfc_conv_loop_setup): Don't use gfc_conv_section_upper_bound (gfc_conv_loop_setup): Don't use gfc_conv_section_upper_bound
......
...@@ -742,6 +742,7 @@ gfc_trans_create_temp_array (stmtblock_t * pre, stmtblock_t * post, ...@@ -742,6 +742,7 @@ gfc_trans_create_temp_array (stmtblock_t * pre, stmtblock_t * post,
int dim; int dim;
gcc_assert (info->dimen > 0); gcc_assert (info->dimen > 0);
gcc_assert (loop->dimen == info->dimen);
if (gfc_option.warn_array_temp && where) if (gfc_option.warn_array_temp && where)
gfc_warning ("Creating array temporary at %L", where); gfc_warning ("Creating array temporary at %L", where);
...@@ -793,17 +794,17 @@ gfc_trans_create_temp_array (stmtblock_t * pre, stmtblock_t * post, ...@@ -793,17 +794,17 @@ gfc_trans_create_temp_array (stmtblock_t * pre, stmtblock_t * post,
or_expr = NULL_TREE; 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. */ array. */
for (n = 0; n < info->dimen; n++) for (n = 0; n < loop->dimen; n++)
if (loop->to[n] == NULL_TREE) if (loop->to[n] == NULL_TREE)
{ {
size = NULL_TREE; size = NULL_TREE;
break; break;
} }
for (n = 0; n < info->dimen; n++) for (n = 0; n < loop->dimen; n++)
{ {
dim = info->dim[n]; dim = info->dim[n];
if (size == NULL_TREE) if (size == NULL_TREE)
......
...@@ -240,6 +240,7 @@ gfc_conv_elemental_dependencies (gfc_se * se, gfc_se * loopse, ...@@ -240,6 +240,7 @@ gfc_conv_elemental_dependencies (gfc_se * se, gfc_se * loopse,
/* Make a local loopinfo for the temporary creation, so that /* Make a local loopinfo for the temporary creation, so that
none of the other ss->info's have to be renormalized. */ none of the other ss->info's have to be renormalized. */
gfc_init_loopinfo (&tmp_loop); gfc_init_loopinfo (&tmp_loop);
tmp_loop.dimen = info->dimen;
for (n = 0; n < info->dimen; n++) for (n = 0; n < info->dimen; n++)
{ {
tmp_loop.to[n] = loopse->loop->to[n]; tmp_loop.to[n] = loopse->loop->to[n];
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment