array.c (gfc_copy_array_ref): Don't copy the offset field.

* array.c (gfc_copy_array_ref): Don't copy the offset field.
	* expr.c (find_array_section): Ignore the offset field.
	* trans-expr.c (gfc_find_interface_mapping_to_ref): Don't apply
	any interface mapping to the offset field.
	* gfortran.h (struct gfc_array_ref): Remove the offset field.

From-SVN: r190092
This commit is contained in:
Mikael Morin 2012-08-02 18:30:02 +00:00
parent a8da72b86c
commit 328ece7de3
5 changed files with 10 additions and 10 deletions

View File

@ -1,3 +1,11 @@
2012-08-02 Mikael Morin <mikael@gcc.gnu.org>
* array.c (gfc_copy_array_ref): Don't copy the offset field.
* expr.c (find_array_section): Ignore the offset field.
* trans-expr.c (gfc_find_interface_mapping_to_ref): Don't apply
any interface mapping to the offset field.
* gfortran.h (struct gfc_array_ref): Remove the offset field.
2012-08-02 Janus Weil <janus@gcc.gnu.org> 2012-08-02 Janus Weil <janus@gcc.gnu.org>
PR fortran/54147 PR fortran/54147

View File

@ -50,8 +50,6 @@ gfc_copy_array_ref (gfc_array_ref *src)
dest->stride[i] = gfc_copy_expr (src->stride[i]); dest->stride[i] = gfc_copy_expr (src->stride[i]);
} }
dest->offset = gfc_copy_expr (src->offset);
return dest; return dest;
} }

View File

@ -1490,13 +1490,10 @@ find_array_section (gfc_expr *expr, gfc_ref *ref)
/* Now clock through the array reference, calculating the index in /* Now clock through the array reference, calculating the index in
the source constructor and transferring the elements to the new the source constructor and transferring the elements to the new
constructor. */ constructor. */
for (idx = 0; idx < (int) mpz_get_si (nelts); idx++) for (idx = 0; idx < (int) mpz_get_si (nelts); idx++)
{ {
if (ref->u.ar.offset) mpz_init_set_ui (ptr, 0);
mpz_set (ptr, ref->u.ar.offset->value.integer);
else
mpz_init_set_ui (ptr, 0);
incr_ctr = true; incr_ctr = true;
for (d = 0; d < rank; d++) for (d = 0; d < rank; d++)

View File

@ -1515,8 +1515,6 @@ typedef struct gfc_array_ref
*stride[GFC_MAX_DIMENSIONS]; *stride[GFC_MAX_DIMENSIONS];
enum gfc_array_ref_dimen_type dimen_type[GFC_MAX_DIMENSIONS]; enum gfc_array_ref_dimen_type dimen_type[GFC_MAX_DIMENSIONS];
struct gfc_expr *offset;
} }
gfc_array_ref; gfc_array_ref;

View File

@ -2806,7 +2806,6 @@ gfc_apply_interface_mapping_to_ref (gfc_interface_mapping * mapping,
gfc_apply_interface_mapping_to_expr (mapping, ref->u.ar.end[n]); gfc_apply_interface_mapping_to_expr (mapping, ref->u.ar.end[n]);
gfc_apply_interface_mapping_to_expr (mapping, ref->u.ar.stride[n]); gfc_apply_interface_mapping_to_expr (mapping, ref->u.ar.stride[n]);
} }
gfc_apply_interface_mapping_to_expr (mapping, ref->u.ar.offset);
break; break;
case REF_COMPONENT: case REF_COMPONENT: