From f8df0eb83203acb7e5764a1f0740a705f79b9f08 Mon Sep 17 00:00:00 2001 From: Daniel Franke Date: Wed, 31 Dec 2008 09:21:44 -0500 Subject: [PATCH] check.c (dim_rank_check): Fixed checking of dimension argument if array is of type EXPR_ARRAY. gcc/fortran: 2008-12-31 Daniel Franke * check.c (dim_rank_check): Fixed checking of dimension argument if array is of type EXPR_ARRAY. gcc/testsuite: 2008-12-31 Daniel Franke * gfortran.dg/mapping_2.f90: Fixed testcase. From-SVN: r142981 --- gcc/fortran/ChangeLog | 5 +++++ gcc/fortran/check.c | 19 ++++++++++++------- gcc/testsuite/ChangeLog | 4 ++++ gcc/testsuite/gfortran.dg/mapping_2.f90 | 2 +- 4 files changed, 22 insertions(+), 8 deletions(-) diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 05c93370476..d1135b35dfc 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,8 @@ +2008-12-31 Daniel Franke + + * check.c (dim_rank_check): Fixed checking of dimension argument + if array is of type EXPR_ARRAY. + 2008-12-22 Paul Thomas PR fortran/38602 diff --git a/gcc/fortran/check.c b/gcc/fortran/check.c index 8b2732bce1e..228ccb2ef0f 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) diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 9a8aaa14e2c..a5600c25613 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2008-12-31 Daniel Franke + + * gfortran.dg/mapping_2.f90: Fixed testcase. + 2008-12-31 Jakub Jelinek PR c++/38647 diff --git a/gcc/testsuite/gfortran.dg/mapping_2.f90 b/gcc/testsuite/gfortran.dg/mapping_2.f90 index a490611174c..9104184a59b 100644 --- a/gcc/testsuite/gfortran.dg/mapping_2.f90 +++ b/gcc/testsuite/gfortran.dg/mapping_2.f90 @@ -11,7 +11,7 @@ module test function my_string(x) integer i real, intent(in) :: x(:) - character(0) h4(1:minval([(i,i=30,32)],15)) + character(0) h4(1:minval([(i,i=30,32), 15])) character(0) sv1(size(x,1):size(h4)) character(0) sv2(2*lbound(sv1,1):size(h4)) character(lbound(sv2,1)-3) my_string -- 2.30.2