https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79002
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |rguenth at gcc dot gnu.org --- Comment #5 from Richard Biener <rguenth at gcc dot gnu.org> --- Looking at NEXT_PASS (pass_cd_dce); NEXT_PASS (pass_early_ipa_sra); NEXT_PASS (pass_tail_recursion); NEXT_PASS (pass_convert_switch); NEXT_PASS (pass_cleanup_eh); NEXT_PASS (pass_profile); NEXT_PASS (pass_local_pure_const); /* Split functions creates parts that are not run through early optimizations again. It is thus good idea to do this late. */ NEXT_PASS (pass_split_functions); POP_INSERT_PASSES () I think neither switch-conversion nor tail-recursion should enable extra EH cleanup opportunities so moving cleanup_eh before tail-recursion might work. Of course the question is why writing (i) makes i addressable in the first place... (which is why I left this categorized as C++ FE issue)