diff options
author | Paul Thomas <pault@gcc.gnu.org> | 2007-05-06 15:12:01 +0000 |
---|---|---|
committer | Paul Thomas <pault@gcc.gnu.org> | 2007-05-06 15:12:01 +0000 |
commit | 8111a921e9c63612e5b608439f2130276e845e0e (patch) | |
tree | a3b5abd8e222f8dca8d89027ac56bb9ca1d444f0 /gcc/fortran/resolve.c | |
parent | e7a5fbdc2b1b9f072e40fd8c243417a569f94cc1 (diff) | |
download | gcc-8111a921e9c63612e5b608439f2130276e845e0e.zip gcc-8111a921e9c63612e5b608439f2130276e845e0e.tar.gz gcc-8111a921e9c63612e5b608439f2130276e845e0e.tar.bz2 |
re PR fortran/31540 ([Regression 4.2 only] character((constant expression)) for external function)
2007-05-06 Paul Thomas <pault@gcc.gnu.org>
PR fortran/31540
* resolve.c (resolve_fl_procedure): Resolve constant character
lengths.
2007-05-06 Paul Thomas <pault@gcc.gnu.org>
PR fortran/31540
* gfortran.dg/char_result_4.f90: New test.
From-SVN: r124475
Diffstat (limited to 'gcc/fortran/resolve.c')
-rw-r--r-- | gcc/fortran/resolve.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c index 55f1390..4ec9a92 100644 --- a/gcc/fortran/resolve.c +++ b/gcc/fortran/resolve.c @@ -5812,6 +5812,11 @@ resolve_fl_procedure (gfc_symbol *sym, int mp_flag) if (sym->ts.type == BT_CHARACTER) { gfc_charlen *cl = sym->ts.cl; + + if (cl && cl->length && gfc_is_constant_expr (cl->length) + && resolve_charlen (cl) == FAILURE) + return FAILURE; + if (!cl || !cl->length || cl->length->expr_type != EXPR_CONSTANT) { if (sym->attr.proc == PROC_ST_FUNCTION) |