aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorPaul Thomas <pault@gcc.gnu.org>2006-01-27 21:20:12 +0000
committerPaul Thomas <pault@gcc.gnu.org>2006-01-27 21:20:12 +0000
commit4f1c7759aaead3b108435072b681cedcccd0abd8 (patch)
tree8389fc27409f25e59129031a891d2a9806c284f3 /gcc
parent2d7c7df665fd79a85731ca2a5d9d31775d2bc81e (diff)
downloadgcc-4f1c7759aaead3b108435072b681cedcccd0abd8.zip
gcc-4f1c7759aaead3b108435072b681cedcccd0abd8.tar.gz
gcc-4f1c7759aaead3b108435072b681cedcccd0abd8.tar.bz2
re PR fortran/25964 (NIST regression on fm311.f)
2005-01-27 Paul Thomas <pault@gcc.gnu.org> PR fortran/25964 * resolve.c (resolve_function): Add GFC_ISYM_LOC to the list of generic_ids exempted from assumed size checking. 2005-01-27 Paul Thomas <pault@gcc.gnu.org> PR fortran/25964 * gfortran.dg/assumed_size_refs_3.f90: New test. From-SVN: r110307
Diffstat (limited to 'gcc')
-rw-r--r--gcc/fortran/ChangeLog6
-rw-r--r--gcc/fortran/resolve.c1
-rw-r--r--gcc/testsuite/ChangeLog5
-rwxr-xr-xgcc/testsuite/gfortran.dg/assumed_size_refs_3.f9017
4 files changed, 29 insertions, 0 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index 37f100d..2100d5c 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,9 @@
+2005-01-27 Paul Thomas <pault@gcc.gnu.org>
+
+ PR fortran/25964
+ * resolve.c (resolve_function): Add GFC_ISYM_LOC to the list of
+ generic_ids exempted from assumed size checking.
+
2006-01-27 Jakub Jelinek <jakub@redhat.com>
PR fortran/25324
diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c
index 99fb2a2..ca89f88 100644
--- a/gcc/fortran/resolve.c
+++ b/gcc/fortran/resolve.c
@@ -1304,6 +1304,7 @@ resolve_function (gfc_expr * expr)
else if (expr->value.function.actual != NULL
&& expr->value.function.isym != NULL
&& expr->value.function.isym->generic_id != GFC_ISYM_LBOUND
+ && expr->value.function.isym->generic_id != GFC_ISYM_LOC
&& expr->value.function.isym->generic_id != GFC_ISYM_PRESENT)
{
/* Array instrinsics must also have the last upper bound of an
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 04f8764..ff4f007 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2005-01-27 Paul Thomas <pault@gcc.gnu.org>
+
+ PR fortran/25964
+ * gfortran.dg/assumed_size_refs_3.f90: New test.
+
2006-01-27 Ben Elliston <bje@au.ibm.com>
* gcc.misc-tests/dectest.exp: Remove defunct comment.
diff --git a/gcc/testsuite/gfortran.dg/assumed_size_refs_3.f90 b/gcc/testsuite/gfortran.dg/assumed_size_refs_3.f90
new file mode 100755
index 0000000..b8aa44b
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/assumed_size_refs_3.f90
@@ -0,0 +1,17 @@
+! { dg-do compile }
+! Tests the fix for PR25951, a regression caused by the assumed
+! size patch.
+! Test case provided by Mark Hesselink <mhesseli@caltech.edu>
+PROGRAM loc_1
+ integer i(10)
+ call f (i)
+CONTAINS
+ SUBROUTINE f (x)
+ INTEGER, DIMENSION(*) :: x
+ INTEGER :: address
+! The next line would cause:
+! Error: The upper bound in the last dimension must appear in the
+! reference to the assumed size array 'x' at (1)
+ address=LOC(x)
+ END SUBROUTINE f
+END PROGRAM loc_1 \ No newline at end of file