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).

Reply via email to