! { dg-do run } program foo implicit none character(len=4) :: s character(len=10) :: a ! This works. s = 'abc' associate(t => s) if (trim(t) /= 'abc') STOP 1 end associate ! This failed. associate(u => 'abc') if (trim(u) /= 'abc') STOP 2 end associate ! This failed. a = s // 'abc' associate(v => s // 'abc') if (trim(v) /= trim(a)) STOP 3 end associate ! This failed. a = trim(s) // 'abc' associate(w => trim(s) // 'abc') if (trim(w) /= trim(a)) STOP 4 end associate ! This failed. associate(x => trim('abc')) if (trim(x) /= 'abc') STOP 5 end associate end program foo