+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-17 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/84270
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);
+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.
+
2018-02-17 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/84270
--- /dev/null
+! { dg-do run }
+!
+! Test fix for PR80945, in which the character length was fixed at zero.
+!
+! Contributed by Nicolas Koenig <koenigni@gcc.gnu.org>
+!
+program main
+ implicit none
+ integer:: i
+ integer, parameter:: N = 10
+ character(20) :: buffer
+ character(len=:), dimension(:),allocatable:: ca
+ character(len=:), dimension(:,:),allocatable:: cb
+ allocate(character(len=N) :: ca(3))
+ ca(1) = "foo"
+ ca(2) = "bar"
+ ca(3) = "xyzzy"
+ write (buffer, '(3A5)') ca(1:3)
+ if (trim (buffer) .ne. "foo bar xyzzy") stop 1
+end program