diff options
author | Paul Thomas <pault@gcc.gnu.org> | 2018-02-18 08:59:06 +0000 |
---|---|---|
committer | Paul Thomas <pault@gcc.gnu.org> | 2018-02-18 08:59:06 +0000 |
commit | d5ace3059cbf0130403b356a97a34f8103cadf36 (patch) | |
tree | b26a3232a0db08437d16e829fb863760f9474eaf /gcc/fortran/trans-array.c | |
parent | c83aacaecf39fbc8ce21830c54bfa090a621b7d5 (diff) | |
download | gcc-d5ace3059cbf0130403b356a97a34f8103cadf36.zip gcc-d5ace3059cbf0130403b356a97a34f8103cadf36.tar.gz gcc-d5ace3059cbf0130403b356a97a34f8103cadf36.tar.bz2 |
re PR fortran/80945 (Invalid code with allocatable character array in READ/WRITE statement)
2018-02-18 Paul Thomas <pault@gcc.gnu.org>
PR fortran/80945
* trans-array.c (gfc_conv_expr_descriptor): Set parmtype from
the typenode in the case of deferred length characters.
2018-02-18 Paul Thomas <pault@gcc.gnu.org>
PR fortran/80945
* gfortran.dg/associate_35.f90: Remove error, add stop n's and
change to run.
From-SVN: r257788
Diffstat (limited to 'gcc/fortran/trans-array.c')
-rw-r--r-- | gcc/fortran/trans-array.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/gcc/fortran/trans-array.c b/gcc/fortran/trans-array.c index 79d4d17..e321db3 100644 --- a/gcc/fortran/trans-array.c +++ b/gcc/fortran/trans-array.c @@ -7341,7 +7341,11 @@ gfc_conv_expr_descriptor (gfc_se *se, gfc_expr *expr) else { /* Otherwise make a new one. */ - parmtype = gfc_get_element_type (TREE_TYPE (desc)); + if (expr->ts.type == BT_CHARACTER && expr->ts.deferred) + parmtype = gfc_typenode_for_spec (&expr->ts); + else + parmtype = gfc_get_element_type (TREE_TYPE (desc)); + parmtype = gfc_get_array_type_bounds (parmtype, loop.dimen, codim, loop.from, loop.to, 0, GFC_ARRAY_UNKNOWN, false); |