diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 42f1f82788b..046635c5b27 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,15 @@ +2011-10-07 Mikael Morin + + * trans.h (gfc_ss_info): Remove codimen field. + * trans-array.c (gfc_get_array_ss): Don't set codimen field. + (gfc_trans_create_temp_array): Don't set descriptor's cobounds. + (gfc_trans_constant_array_constructor): Update loop upper limit. + (gfc_conv_ss_startstride): Don't set codimen field. + Don't get descriptor's cobounds. + (gfc_walk_variable_expr): Update dimension index. + * trans-intrinsic.c (trans_this_image, trans_image_index, + conv_intrinsic_cobound): Don't set codimen field + 2011-10-07 Mikael Morin * trans.h (gfc_loopinfo): Remove codimen field. @@ -75,7 +87,7 @@ 2011-10-07 Mikael Morin * trans-array.c (gfc_conv_expr_descriptor): Simplify coarray - descriptor setup code. + descriptor setup code. 2011-10-07 Mikael Morin diff --git a/gcc/fortran/trans-array.c b/gcc/fortran/trans-array.c index 0a9d28145b3..fa05d2b5d00 100644 --- a/gcc/fortran/trans-array.c +++ b/gcc/fortran/trans-array.c @@ -526,7 +526,6 @@ gfc_get_array_ss (gfc_ss *next, gfc_expr *expr, int dimen, gfc_ss_type type) ss->expr = expr; info = &ss->data.info; info->dimen = dimen; - info->codimen = 0; for (i = 0; i < info->dimen; i++) info->dim[i] = i; @@ -973,13 +972,6 @@ gfc_trans_create_temp_array (stmtblock_t * pre, stmtblock_t * post, size, tmp); size = gfc_evaluate_now (size, pre); } - for (n = info->dimen; n < info->dimen + info->codimen; n++) - { - gfc_conv_descriptor_lbound_set (pre, desc, gfc_rank_cst[n], - gfc_index_zero_node); - if (n < info->dimen + info->codimen - 1) - gfc_conv_descriptor_ubound_set (pre, desc, gfc_rank_cst[n], loop->to[n]); - } /* Get the size of the array. */ @@ -1872,7 +1864,7 @@ gfc_trans_constant_array_constructor (gfc_loopinfo * loop, info->data = gfc_build_addr_expr (NULL_TREE, tmp); info->offset = gfc_index_zero_node; - for (i = 0; i < info->dimen + info->codimen; i++) + for (i = 0; i < info->dimen; i++) { info->delta[i] = gfc_index_zero_node; info->start[i] = gfc_index_zero_node; @@ -3330,12 +3322,6 @@ done: for (n = 0; n < ss->data.info.dimen; n++) gfc_conv_section_startstride (loop, ss, ss->data.info.dim[n], false, false); - for (n = ss->data.info.dimen; - n < ss->data.info.dimen + ss->data.info.codimen; n++) - gfc_conv_section_startstride (loop, ss, ss->data.info.dim[n], true, - n == ss->data.info.dimen - + ss->data.info.codimen -1); - break; case GFC_SS_INTRINSIC: @@ -7690,8 +7676,7 @@ gfc_walk_variable_expr (gfc_ss * ss, gfc_expr * expr) case DIMEN_RANGE: /* We don't add anything for sections, just remember this dimension for later. */ - newss->data.info.dim[newss->data.info.dimen - + newss->data.info.codimen] = n; + newss->data.info.dim[newss->data.info.dimen] = n; if (n < ar->dimen) newss->data.info.dimen++; break; @@ -7703,8 +7688,7 @@ gfc_walk_variable_expr (gfc_ss * ss, gfc_expr * expr) 1, GFC_SS_VECTOR); indexss->loop_chain = gfc_ss_terminator; newss->data.info.subscript[n] = indexss; - newss->data.info.dim[newss->data.info.dimen - + newss->data.info.codimen] = n; + newss->data.info.dim[newss->data.info.dimen] = n; if (n < ar->dimen) newss->data.info.dimen++; break; diff --git a/gcc/fortran/trans-intrinsic.c b/gcc/fortran/trans-intrinsic.c index bc21b020db5..c47e678dfa7 100644 --- a/gcc/fortran/trans-intrinsic.c +++ b/gcc/fortran/trans-intrinsic.c @@ -985,7 +985,6 @@ trans_this_image (gfc_se * se, gfc_expr *expr) gfc_init_se (&argse, NULL); ss = walk_coarray (expr->value.function.actual->expr); gcc_assert (ss != gfc_ss_terminator); - ss->data.info.codimen = corank; argse.want_coarray = 1; gfc_conv_expr_descriptor (&argse, expr->value.function.actual->expr, ss); gfc_add_block_to_block (&se->pre, &argse.pre); @@ -1171,7 +1170,6 @@ trans_image_index (gfc_se * se, gfc_expr *expr) gfc_init_se (&argse, NULL); ss = walk_coarray (expr->value.function.actual->expr); gcc_assert (ss != gfc_ss_terminator); - ss->data.info.codimen = corank; argse.want_coarray = 1; gfc_conv_expr_descriptor (&argse, expr->value.function.actual->expr, ss); gfc_add_block_to_block (&se->pre, &argse.pre); @@ -1496,7 +1494,6 @@ conv_intrinsic_cobound (gfc_se * se, gfc_expr * expr) ss = walk_coarray (arg->expr); gcc_assert (ss != gfc_ss_terminator); - ss->data.info.codimen = corank; gfc_init_se (&argse, NULL); argse.want_coarray = 1; diff --git a/gcc/fortran/trans.h b/gcc/fortran/trans.h index 085334c2e64..535c207fcd4 100644 --- a/gcc/fortran/trans.h +++ b/gcc/fortran/trans.h @@ -118,7 +118,7 @@ gfc_coarray_type; typedef struct gfc_ss_info { - int dimen, codimen; + int dimen; /* The ref that holds information on this section. */ gfc_ref *ref; /* The descriptor of this array. */