diff options
| author | pault <pault@138bc75d-0d04-0410-961f-82ee72b054a4> | 2006-12-09 20:41:51 +0000 |
|---|---|---|
| committer | pault <pault@138bc75d-0d04-0410-961f-82ee72b054a4> | 2006-12-09 20:41:51 +0000 |
| commit | 48a3e2a88420ebebe83cb52ecfbb80eb200b7f1d (patch) | |
| tree | e5890fbc9e14ecf6fff7b0db5962422484988337 /gcc | |
| parent | 1c8a300d0b8af51b7ab5c3a4df2b685399dbcd3a (diff) | |
| download | ppe42-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/ChangeLog | 14 | ||||
| -rw-r--r-- | gcc/fortran/resolve.c | 13 | ||||
| -rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
| -rw-r--r-- | gcc/testsuite/gfortran.dg/assumed_len.f90 | 11 |
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 |

