diff options
author | Paul Thomas <pault@gcc.gnu.org> | 2006-12-09 20:41:51 +0000 |
---|---|---|
committer | Paul Thomas <pault@gcc.gnu.org> | 2006-12-09 20:41:51 +0000 |
commit | 4d4074e415dbf2029f49bef9fe48ed79c8c5a106 (patch) | |
tree | e5890fbc9e14ecf6fff7b0db5962422484988337 /gcc/fortran | |
parent | 8aa25857e0a9bd2caf1900e6efa279c107c8c058 (diff) | |
download | gcc-4d4074e415dbf2029f49bef9fe48ed79c8c5a106.zip gcc-4d4074e415dbf2029f49bef9fe48ed79c8c5a106.tar.gz gcc-4d4074e415dbf2029f49bef9fe48ed79c8c5a106.tar.bz2 |
re PR fortran/29941 ([4.1 only] gfortran reports error with len of assumed size character array)
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.
From-SVN: r119695
Diffstat (limited to 'gcc/fortran')
-rw-r--r-- | gcc/fortran/ChangeLog | 14 | ||||
-rw-r--r-- | gcc/fortran/resolve.c | 13 |
2 files changed, 18 insertions, 9 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index be404ad..1a6b28a 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 e31ecbd..863e831 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; |