summaryrefslogtreecommitdiffstats
path: root/gcc
diff options
context:
space:
mode:
authorpault <pault@138bc75d-0d04-0410-961f-82ee72b054a4>2006-12-09 20:41:51 +0000
committerpault <pault@138bc75d-0d04-0410-961f-82ee72b054a4>2006-12-09 20:41:51 +0000
commit48a3e2a88420ebebe83cb52ecfbb80eb200b7f1d (patch)
treee5890fbc9e14ecf6fff7b0db5962422484988337 /gcc
parent1c8a300d0b8af51b7ab5c3a4df2b685399dbcd3a (diff)
downloadppe42-gcc-48a3e2a88420ebebe83cb52ecfbb80eb200b7f1d.tar.gz
ppe42-gcc-48a3e2a88420ebebe83cb52ecfbb80eb200b7f1d.zip
2006-12-09 Paul Thomas <pault@gcc.gnu.org>
PR fortran/29941 * resolve.c (resolve_function): Add LEN to the functions not checked for assumed size actual args. 2006-12-09 Paul Thomas <pault@gcc.gnu.org> PR fortran/29941 * gfortran.dg/assumed_len.f90: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@119695 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc')
-rw-r--r--gcc/fortran/ChangeLog14
-rw-r--r--gcc/fortran/resolve.c13
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gfortran.dg/assumed_len.f9011
4 files changed, 34 insertions, 9 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index be404adad1c..1a6b28afcde 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,14 +1,20 @@
+2006-12-09 Paul Thomas <pault@gcc.gnu.org>
+
+ PR fortran/29941
+ * resolve.c (resolve_function): Add LEN to the functions not
+ checked for assumed size actual args.
+
2006-12-08 Tobias Burnus <burnus@net-b.de>
PR fortran/27546
- * trans-decl.f90 (gfc_create_module_variable): Allow imported symbols
- in interface bodys in modules.
+ * trans-decl.c (gfc_create_module_variable): Allow imported
+ symbols in interface bodies in modules.
2006-12-06 Tobias Burnus <burnus@net-b.de>
PR fortran/29711
- * error.c (error_print): Fix handling of printf-style position specifiers
- of the form "%3$d"
+ * error.c (error_print): Fix handling of printf-style position
+ specifiers of the form "%3$d".
2006-12-05 Paul Thomas <pault@gcc.gnu.org>
diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c
index e31ecbd5909..863e8319d09 100644
--- a/gcc/fortran/resolve.c
+++ b/gcc/fortran/resolve.c
@@ -1514,19 +1514,21 @@ resolve_function (gfc_expr * expr)
t = FAILURE;
}
+#define GENERIC_ID expr->value.function.isym->generic_id
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)
+ && GENERIC_ID != GFC_ISYM_LBOUND
+ && GENERIC_ID != GFC_ISYM_LEN
+ && GENERIC_ID != GFC_ISYM_LOC
+ && GENERIC_ID != GFC_ISYM_PRESENT)
{
/* Array intrinsics must also have the last upper bound of an
assumed size array argument. UBOUND and SIZE have to be
excluded from the check if the second argument is anything
than a constant. */
int inquiry;
- inquiry = expr->value.function.isym->generic_id == GFC_ISYM_UBOUND
- || expr->value.function.isym->generic_id == GFC_ISYM_SIZE;
+ inquiry = GENERIC_ID == GFC_ISYM_UBOUND
+ || GENERIC_ID == GFC_ISYM_SIZE;
for (arg = expr->value.function.actual; arg; arg = arg->next)
{
@@ -1540,6 +1542,7 @@ resolve_function (gfc_expr * expr)
return FAILURE;
}
}
+#undef GENERIC_ID
need_full_assumed_size = temp;
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 74246f22db0..761d53bb660 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2006-12-09 Paul Thomas <pault@gcc.gnu.org>
+
+ PR fortran/29941
+ * gfortran.dg/assumed_len.f90: New test.
+
2006-12-09 Richard Guenther <rguenther@suse.de>
* g++.dg/warn/implicit-typename1.C: Qualify types.
diff --git a/gcc/testsuite/gfortran.dg/assumed_len.f90 b/gcc/testsuite/gfortran.dg/assumed_len.f90
new file mode 100644
index 00000000000..5895e21457b
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/assumed_len.f90
@@ -0,0 +1,11 @@
+! { dg-do compile }
+! Test of the patch for PR29941, in which LEN threw an error with
+! an assumed size argument.
+!
+! Contributed by William Mitchell <william.mitchell@nist.gov>
+!
+subroutine whatever(str)
+character(len=*), dimension(*) :: str
+integer :: i
+i = len(str)
+end subroutine whatever
OpenPOWER on IntegriCloud