https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117672
--- Comment #4 from Jan Hubicka <hubicka at gcc dot gnu.org> --- There is constructor of the static variable (_GLOBAL__sub_I_main) which we do not optimize out since we think it makes useful memory writes since at that stage we do not know that static var is effectively write-only. While we optimize out the writes later, we do not notice that this makes constructor unnecesary. We would need to break the pipeline after late opts and re-run unreachable symbol removal to optimize that.