https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113911
--- Comment #2 from anlauf at gcc dot gnu.org --- Looking at the tree-dump before and after r14-8947, I see: - a change in the main program that seems to be desirable: bitsizetype D.4340; sizetype D.4341; + *_c6 = 0; D.4339 = *_c6; D.4340 = (bitsizetype) (sizetype) NON_LVALUE_EXPR <*_c6> * 8; D.4341 = (sizetype) NON_LVALUE_EXPR <*_c6>; - a change in the subroutine that kills the length: __attribute__((fn spec (". w w "))) void deferred (character(kind=1)[1:*_c5] * & restrict c5, struct array01_character(kind=1) & restrict c6, integer(kind=8) * _c5, integer(kind=8) * _c6) { integer(kind=8) D.4339; bitsizetype D.4340; sizetype D.4341; + *_c6 = 0; D.4339 = *_c6; D.4340 = (bitsizetype) (sizetype) NON_LVALUE_EXPR <*_c6> * 8; D.4341 = (sizetype) NON_LVALUE_EXPR <*_c6>;