https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86626
--- Comment #4 from G. Steinmetz <gs...@t-online.de> --- Exploring variations of the last print statement in z1.f90, where "fun" is the interface and "f" is the function/procedure : z1: print *, len(g(['abc'], '_'//fun(['xyz']))) ! ICE z2: print *, g(['abc'], '_'//fun(['xyz'])) ! ok z3: print *, len(g(['abc'], '_'//f(['xyz']))) ! ok z4: print *, len(g(['abc'], fun(['xyz']))) ! ok Output of z2: abc_xyz Output of z3: 7 Output of z4: 6 The problematic part is the concatenation in '_'//fun(), the resulting len() gets corrupted.