diff options
-rw-r--r-- | gcc/fortran/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/fortran/check.c | 5 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/size_dim.f90 | 15 |
4 files changed, 31 insertions, 1 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index afd9d26..58b96b6 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,9 @@ +2007-03-03 Paul Thomas <pault@gcc.gnu.org> + + PR fortran/30882 + * check.c (dim_rank_check): The shape of subsections of + assumed-size arrays is known. + 2007-03-02 Paul Thomas <pault@gcc.gnu.org> Tobias Burnus <burnus@net-b.de> diff --git a/gcc/fortran/check.c b/gcc/fortran/check.c index 6e4d798..27becfcb 100644 --- a/gcc/fortran/check.c +++ b/gcc/fortran/check.c @@ -337,7 +337,10 @@ dim_rank_check (gfc_expr *dim, gfc_expr *array, int allow_assumed) ar = gfc_find_array_ref (array); rank = array->rank; - if (ar->as->type == AS_ASSUMED_SIZE && !allow_assumed) + 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 diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index e87707c..e2d41a9 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2007-03-03 Paul Thomas <pault@gcc.gnu.org> + Tobias Burnus <burnus@net-b.de> + + PR fortran/30882 + * gfortran.dg/size_dim.f90: New test. + 2007-03-02 Paul Thomas <pault@gcc.gnu.org> Tobias Burnus <burnus@net-b.de> diff --git a/gcc/testsuite/gfortran.dg/size_dim.f90 b/gcc/testsuite/gfortran.dg/size_dim.f90 new file mode 100644 index 0000000..248a0c3 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/size_dim.f90 @@ -0,0 +1,15 @@ +! { dg-do "run" } +! Check size with initialization expression value for dim= +! PR fortran/30882 +! +! Contributed by Joost VandeVondele <jv244@cam.ac.uk> +! +program main + integer :: a(10) + call S1(a) +contains + subroutine S1(a) + integer :: a(*) + if(size(a(1:10),1) /= 10) call abort() + end subroutine S1 +end program main |