https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93264
--- Comment #3 from Richard Biener <rguenth at gcc dot gnu.org> --- In general it's a bad idea to try go "back" to CFG layout mode and the fix is to not do that. Which probably means scheduling pass_sms earlier and indeed then best before pass_partition_blocks. I don't see any reason to _not_ do this, the current pipeline is NEXT_PASS (pass_partition_blocks); NEXT_PASS (pass_outof_cfg_layout_mode); NEXT_PASS (pass_split_all_insns); NEXT_PASS (pass_lower_subreg3); NEXT_PASS (pass_df_initialize_no_opt); NEXT_PASS (pass_stack_ptr_mod); NEXT_PASS (pass_mode_switching); NEXT_PASS (pass_match_asm_constraints); NEXT_PASS (pass_sms); NEXT_PASS (pass_live_range_shrinkage); NEXT_PASS (pass_sched); NEXT_PASS (pass_early_remat); NEXT_PASS (pass_ira); NEXT_PASS (pass_reload); NEXT_PASS (pass_postreload); PUSH_INSERT_PASSES_WITHIN (pass_postreload) and while I understand sms wants to run as close to RA as possible the passes between its current position and partitioning should not mess with the schedule (mode switching might insert code I think).