summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorburnus <burnus@138bc75d-0d04-0410-961f-82ee72b054a4>2007-03-03 10:43:25 +0000
committerburnus <burnus@138bc75d-0d04-0410-961f-82ee72b054a4>2007-03-03 10:43:25 +0000
commitd6bb44a07c11702c6fefdcb65f8a268d147eac22 (patch)
treec886adab40108136bc79257f3b231c3f844638cd
parent4a5f206f4c827402690d91341a9e857f8e78332f (diff)
downloadppe42-gcc-d6bb44a07c11702c6fefdcb65f8a268d147eac22.tar.gz
ppe42-gcc-d6bb44a07c11702c6fefdcb65f8a268d147eac22.zip
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-03 Paul Thomas <pault@gcc.gnu.org> PR fortran/30882 * gfortran.dg/size_dim.f90: New test. -- Diese und die folgenden Zeilen werden ignoriert -- M gcc/testsuite/ChangeLog A gcc/testsuite/gfortran.dg/size_dim.f90 M gcc/fortran/ChangeLog M gcc/fortran/check.c git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@122503 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/fortran/ChangeLog6
-rw-r--r--gcc/fortran/check.c5
-rw-r--r--gcc/testsuite/ChangeLog6
-rw-r--r--gcc/testsuite/gfortran.dg/size_dim.f9015
4 files changed, 31 insertions, 1 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index afd9d26b655..58b96b6b75b 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 6e4d798f6d1..27becfcb805 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 e87707c90d2..e2d41a9b134 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 00000000000..248a0c33dda
--- /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
OpenPOWER on IntegriCloud