https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71544
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |wrong-code Status|WAITING |ASSIGNED Component|fortran |tree-optimization --- Comment #8 from Richard Biener <rguenth at gcc dot gnu.org> --- So it's "easy" to explain. The initialization gets optimized away because appearantly points-to analysis concludes that the allocated storage does not escape: a_3 = &HEAP(10) CALLUSED(12) = &STRING _4 = a_3 D.3422 = a_3 callarg(19) = &D.3422 callarg(19) = *callarg(19) + UNKNOWN CALLUSED(17) = callarg(19) derefaddrtmp(20) = &NONLOCAL *a_3 = derefaddrtmp(20) -> ESCAPED, points-to non-local, points-to vars: { } but this should have included HEAP(10). Let me investigate. It might be still a FE issue.