aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran/array.c
diff options
context:
space:
mode:
authorThomas Koenig <tkoenig@gcc.gnu.org>2009-02-21 22:25:06 +0000
committerThomas Koenig <tkoenig@gcc.gnu.org>2009-02-21 22:25:06 +0000
commit543af7abbeb1bca017ec4cc8dcbb5fe51fa4c305 (patch)
treee156f268a9631504958d59dd37561d3f6ea3612c /gcc/fortran/array.c
parent4bb09c26bc590129675100ee0a87f9408b8afab9 (diff)
downloadgcc-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.c14
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++;
}