diff options
author | Thomas Koenig <tkoenig@gcc.gnu.org> | 2009-02-21 22:25:06 +0000 |
---|---|---|
committer | Thomas Koenig <tkoenig@gcc.gnu.org> | 2009-02-21 22:25:06 +0000 |
commit | 543af7abbeb1bca017ec4cc8dcbb5fe51fa4c305 (patch) | |
tree | e156f268a9631504958d59dd37561d3f6ea3612c /gcc/fortran/array.c | |
parent | 4bb09c26bc590129675100ee0a87f9408b8afab9 (diff) | |
download | gcc-543af7abbeb1bca017ec4cc8dcbb5fe51fa4c305.zip gcc-543af7abbeb1bca017ec4cc8dcbb5fe51fa4c305.tar.gz gcc-543af7abbeb1bca017ec4cc8dcbb5fe51fa4c305.tar.bz2 |
re PR fortran/38914 ([4.3 only] ICE with array inquiry functions above contains in parameter expression)
2008-02-21 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/38914
* array.c (ref_dimen_size): Rename to gfc_ref_dimen_size,
make global. Change function name in error messages.
(ref_size): Change ref_dimen_size to gfc_ref_dimen_size.
(gfc_array_ref_shape): Likewise.
* gfortran.h: Add prototype for gfc_ref_dimen_size.
* simplify.c (simplify_bound_dim): Add ref argument.
If the reference isn't a full array, return one for
the lower bound and the extent for the upper bound.
(simplify_bound): For array sections, take as from the
argument. Add reference to all to simplify_bound_dim.
2008-02-21 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/38914
* bound_simplification_2.f90: New test case.
* bound_7.f90: New test case.
From-SVN: r144362
Diffstat (limited to 'gcc/fortran/array.c')
-rw-r--r-- | gcc/fortran/array.c | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/gcc/fortran/array.c b/gcc/fortran/array.c index fe83ec6..46c7425 100644 --- a/gcc/fortran/array.c +++ b/gcc/fortran/array.c @@ -1876,14 +1876,14 @@ spec_size (gfc_array_spec *as, mpz_t *result) /* Get the number of elements in an array section. */ -static gfc_try -ref_dimen_size (gfc_array_ref *ar, int dimen, mpz_t *result) +gfc_try +gfc_ref_dimen_size (gfc_array_ref *ar, int dimen, mpz_t *result) { mpz_t upper, lower, stride; gfc_try t; if (dimen < 0 || ar == NULL || dimen > ar->dimen - 1) - gfc_internal_error ("ref_dimen_size(): Bad dimension"); + gfc_internal_error ("gfc_ref_dimen_size(): Bad dimension"); switch (ar->dimen_type[dimen]) { @@ -1957,7 +1957,7 @@ ref_dimen_size (gfc_array_ref *ar, int dimen, mpz_t *result) return t; default: - gfc_internal_error ("ref_dimen_size(): Bad dimen_type"); + gfc_internal_error ("gfc_ref_dimen_size(): Bad dimen_type"); } return t; @@ -1974,7 +1974,7 @@ ref_size (gfc_array_ref *ar, mpz_t *result) for (d = 0; d < ar->dimen; d++) { - if (ref_dimen_size (ar, d, &size) == FAILURE) + if (gfc_ref_dimen_size (ar, d, &size) == FAILURE) { mpz_clear (*result); return FAILURE; @@ -2020,7 +2020,7 @@ gfc_array_dimen_size (gfc_expr *array, int dimen, mpz_t *result) if (ref->u.ar.dimen_type[i] != DIMEN_ELEMENT) dimen--; - return ref_dimen_size (&ref->u.ar, i - 1, result); + return gfc_ref_dimen_size (&ref->u.ar, i - 1, result); } } @@ -2148,7 +2148,7 @@ gfc_array_ref_shape (gfc_array_ref *ar, mpz_t *shape) { if (ar->dimen_type[i] != DIMEN_ELEMENT) { - if (ref_dimen_size (ar, i, &shape[d]) == FAILURE) + if (gfc_ref_dimen_size (ar, i, &shape[d]) == FAILURE) goto cleanup; d++; } |