This problem concerned associate targets being substrings. It turns out that they are returned as pointer types (with a different cast for unity based substrings ***sigh***) and so can be assigned directly to the associate name. The patch quite simply removed the condition that such targets be allocatable, pointer or dummy. I noticed in the course of working up the testcase that character (:), pointer :: ptr => NULL() character (6), target :: tgt = 'lmnopq' ptr => tgt print *, len (ptr), ptr end ICEs on the NULL initialization of the pointer but works fine if this is removed. Has this already been posted as a PR? Bootstrapped and regtested on FC28/x86_64 - OK for trunk? Paul 2018-10-17 Paul Thomas PR fortran/58618 * trans-stmt.c (trans_associate_var): All strings that return as pointer types can be assigned directly to the associate name so remove 'attr' and the condition that uses it. 2018-10-17 Paul Thomas PR fortran/58618 * gfortran.dg/associate_45.f90 : New test.