To be used together with the no_register_allocation hook.
Everything after register allocation is currently in pass_postreload rather than pass_rest_of_compilation. This seems arbitrary to me, and for a target that doesn't do register allocation, pass_postreload isn't run, so the very last few passes (at least reorg and final) need to be moved up a level.
gcc/ * passes.def (pass_compute_alignments, pass_duplicate_computed_gotos, pass_variable_tracking, pass_free_cfg, pass_machine_reorg, pass_cleanup_barriers, pass_delay_slots, pass_split_for_shorten_branches, pass_convert_to_eh_region_ranges, pass_shorten_branches, pass_est_nothrow_function_flags, pass_dwarf2_frame, pass_final): Move outside of pass_postreload and into pass_rest_of_compilation. ------------------------------------------------------------------------ Index: gcc/passes.def =================================================================== --- gcc/passes.def.orig +++ gcc/passes.def @@ -396,19 +396,19 @@ along with GCC; see the file COPYING3. NEXT_PASS (pass_split_before_regstack); NEXT_PASS (pass_stack_regs_run); POP_INSERT_PASSES () - NEXT_PASS (pass_compute_alignments); - NEXT_PASS (pass_variable_tracking); - NEXT_PASS (pass_free_cfg); - NEXT_PASS (pass_machine_reorg); - NEXT_PASS (pass_cleanup_barriers); - NEXT_PASS (pass_delay_slots); - NEXT_PASS (pass_split_for_shorten_branches); - NEXT_PASS (pass_convert_to_eh_region_ranges); - NEXT_PASS (pass_shorten_branches); - NEXT_PASS (pass_set_nothrow_function_flags); - NEXT_PASS (pass_dwarf2_frame); - NEXT_PASS (pass_final); POP_INSERT_PASSES () + NEXT_PASS (pass_compute_alignments); + NEXT_PASS (pass_variable_tracking); + NEXT_PASS (pass_free_cfg); + NEXT_PASS (pass_machine_reorg); + NEXT_PASS (pass_cleanup_barriers); + NEXT_PASS (pass_delay_slots); + NEXT_PASS (pass_split_for_shorten_branches); + NEXT_PASS (pass_convert_to_eh_region_ranges); + NEXT_PASS (pass_shorten_branches); + NEXT_PASS (pass_set_nothrow_function_flags); + NEXT_PASS (pass_dwarf2_frame); + NEXT_PASS (pass_final); NEXT_PASS (pass_df_finish); POP_INSERT_PASSES () NEXT_PASS (pass_clean_state);