From ff0eec94e87dfb7dc387f120ca5ade2707aecf50 Mon Sep 17 00:00:00 2001 From: Tobias Burnus Date: Tue, 19 Oct 2021 16:38:56 +0200 Subject: [PATCH] Fortran: Fix 'fn spec' for deferred character length Shows now up with gfortran.dg/deferred_type_param_6.f90 due to more ME optimizations, causing fails without this commit. gcc/fortran/ChangeLog: * trans-types.c (create_fn_spec): For allocatable/pointer character(len=:), use 'w' not 'R' as fn spec for the length dummy argument. --- gcc/fortran/trans-types.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/gcc/fortran/trans-types.c b/gcc/fortran/trans-types.c index 50fceeb..4277806 100644 --- a/gcc/fortran/trans-types.c +++ b/gcc/fortran/trans-types.c @@ -3014,7 +3014,11 @@ create_fn_spec (gfc_symbol *sym, tree fntype) } if (sym->ts.type == BT_CHARACTER) { - spec[spec_len++] = 'R'; + if (!sym->ts.u.cl->length + && (sym->attr.allocatable || sym->attr.pointer)) + spec[spec_len++] = 'w'; + else + spec[spec_len++] = 'R'; spec[spec_len++] = ' '; } } -- 2.7.4