aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorpault <pault@138bc75d-0d04-0410-961f-82ee72b054a4>2005-09-14 05:12:04 +0000
committerpault <pault@138bc75d-0d04-0410-961f-82ee72b054a4>2005-09-14 05:12:04 +0000
commit2c84302b67210bbea74396659502027c2ec210b9 (patch)
tree3bb7dfd2e701c6bc526ce1a16f27a4b0dcdea0f3
parentf72d8269d8d6a8f5d480c7f48ec8f79eec13cde9 (diff)
2005-09-13 Paul Thomas <pault@gcc.gnu.org>
PR fortran/19358 * trans-array.c (gfc_trans_dummy_array_bias): correct the typo which uses dim[i].upper for lbound, rather than dim[i].lower. 2005-09-13 Paul Thomas <pault@gcc.gnu.org> PR fortran/19358 * gfortran.fortran-torture/assumed_dummy_1.f90: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@104259 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/fortran/ChangeLog6
-rw-r--r--gcc/fortran/trans-array.c2
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gfortran.dg/assumed_dummy_1.f9046
4 files changed, 58 insertions, 1 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index 9bde936ebc8..eb93719c29e 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,9 @@
+2005-09-14 Paul Thomas <pault@gcc.gnu.org>
+
+ PR fortran/19358
+ * trans-array.c (gfc_trans_dummy_array_bias): correct the typo
+ which uses dim[i].upper for lbound, rather than dim[i].lower.
+
2005-09-13 Erik Edelmann <erik.edelmann@iki.fi>
PR fortran/17740
diff --git a/gcc/fortran/trans-array.c b/gcc/fortran/trans-array.c
index a72a19dcdce..c284dca5465 100644
--- a/gcc/fortran/trans-array.c
+++ b/gcc/fortran/trans-array.c
@@ -3477,7 +3477,7 @@ gfc_trans_dummy_array_bias (gfc_symbol * sym, tree tmpdesc, tree body)
if (!INTEGER_CST_P (lbound))
{
gfc_init_se (&se, NULL);
- gfc_conv_expr_type (&se, sym->as->upper[n],
+ gfc_conv_expr_type (&se, sym->as->lower[n],
gfc_array_index_type);
gfc_add_block_to_block (&block, &se.pre);
gfc_add_modify_expr (&block, lbound, se.expr);
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index e871629d7a8..fda2fb3293c 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2005-09-13 Paul Thomas <pault@gcc.gnu.org>
+
+ PR fortran/19358
+ * gfortran.fortran-torture/assumed_dummy_1.f90: New test.
+
2005-09-13 Josh Conner <jconner@apple.com>
PR c++/23180
diff --git a/gcc/testsuite/gfortran.dg/assumed_dummy_1.f90 b/gcc/testsuite/gfortran.dg/assumed_dummy_1.f90
new file mode 100644
index 00000000000..a160a884b2a
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/assumed_dummy_1.f90
@@ -0,0 +1,46 @@
+! { dg do-run}
+! Tests the fix for PRs 19358, 19477, 21211 and 21622.
+!
+! Note that this tests only the valid cases with explicit interfaces.
+!
+! Contributed by Paul Thomas <pault@gcc.gnu.org>
+!
+module global
+contains
+ SUBROUTINE goo (x, i)
+ REAL, DIMENSION(i:) :: x
+ integer :: i
+ x (3) = 99.0
+ END SUBROUTINE goo
+end module global
+
+SUBROUTINE foo (x, i)
+ REAL, DIMENSION(i:) :: x
+ integer :: i
+ x (4) = 42.0
+END SUBROUTINE foo
+
+program test
+ use global
+ real, dimension(3) :: y = 0
+ integer :: j = 2
+
+interface
+ SUBROUTINE foo (x, i)
+ REAL, DIMENSION(i:) :: x
+ integer :: i
+ END SUBROUTINE foo
+end interface
+ call foo (y, j)
+ call goo (y, j)
+ call roo (y, j)
+ if (any(y.ne.(/21.0, 99.0, 42.0/))) call abort ()
+contains
+ SUBROUTINE roo (x, i)
+ REAL, DIMENSION(i:) :: x
+ integer :: i
+ x (2) = 21.0
+ END SUBROUTINE roo
+end program test
+
+