https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80945
--- Comment #3 from Thomas Koenig <tkoenig at gcc dot gnu.org> --- Really strange - the tree dumps look OK at first glance. D.3543 = (sizetype) NON_LVALUE_EXPR <.ca>; and later on parm.3.dtype = ((integer(kind=8)) SAVE_EXPR <D.3543> << 6) + 49; parm.3.dim[0].lbound = 1; parm.3.dim[0].ubound = 3; parm.3.dim[0].stride = 1; parm.3.data = (void *) &(*(character(kind=1)[0:][1:.ca] * restrict) ca.data)[1 - ca.dim[0].lbound]; parm.3.offset = 0; _gfortran_transfer_array_write (&dt_parm.2, &parm.3, 1, .ca); What am I missing?