diff options
| author | Daniel Franke <franke.daniel@gmail.com> | 2008-12-31 09:21:44 -0500 |
|---|---|---|
| committer | Daniel Franke <dfranke@gcc.gnu.org> | 2008-12-31 09:21:44 -0500 |
| commit | f8df0eb83203acb7e5764a1f0740a705f79b9f08 (patch) | |
| tree | dac0747bf56162cc838ebc8dcc2c2e6c44dfd842 /gcc/fortran/check.c | |
| parent | 261b8381fef69be03bb6b5bbc5a9cd37cf94e1ef (diff) | |
| download | gcc-f8df0eb83203acb7e5764a1f0740a705f79b9f08.zip gcc-f8df0eb83203acb7e5764a1f0740a705f79b9f08.tar.gz gcc-f8df0eb83203acb7e5764a1f0740a705f79b9f08.tar.bz2 | |
check.c (dim_rank_check): Fixed checking of dimension argument if array is of type EXPR_ARRAY.
gcc/fortran:
2008-12-31 Daniel Franke <franke.daniel@gmail.com>
* check.c (dim_rank_check): Fixed checking of dimension argument
if array is of type EXPR_ARRAY.
gcc/testsuite:
2008-12-31 Daniel Franke <franke.daniel@gmail.com>
* gfortran.dg/mapping_2.f90: Fixed testcase.
From-SVN: r142981
Diffstat (limited to 'gcc/fortran/check.c')
| -rw-r--r-- | gcc/fortran/check.c | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/gcc/fortran/check.c b/gcc/fortran/check.c index 8b2732b..228ccb2 100644 --- a/gcc/fortran/check.c +++ b/gcc/fortran/check.c @@ -339,16 +339,21 @@ dim_rank_check (gfc_expr *dim, gfc_expr *array, int allow_assumed) gfc_array_ref *ar; int rank; - if (dim->expr_type != EXPR_CONSTANT || array->expr_type != EXPR_VARIABLE) + if (dim->expr_type != EXPR_CONSTANT + || (array->expr_type != EXPR_VARIABLE + && array->expr_type != EXPR_ARRAY)) return SUCCESS; - ar = gfc_find_array_ref (array); rank = array->rank; - if (ar->as->type == AS_ASSUMED_SIZE - && !allow_assumed - && ar->type != AR_ELEMENT - && ar->type != AR_SECTION) - rank--; + if (array->expr_type == EXPR_VARIABLE) + { + ar = gfc_find_array_ref (array); + if (ar->as->type == AS_ASSUMED_SIZE + && !allow_assumed + && ar->type != AR_ELEMENT + && ar->type != AR_SECTION) + rank--; + } if (mpz_cmp_ui (dim->value.integer, 1) < 0 || mpz_cmp_ui (dim->value.integer, rank) > 0) |
