2014-11-05 Bernd Schmidt <bernds@codesourcery.com>
+ * 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_late_compilation.
+ (pass_late_compilation): Add.
+ * passes.c (pass_data_late_compilation, pass_late_compilation,
+ make_pass_late_compilation): New.
+ * timevar.def (TV_LATE_COMPILATION): New.
+
* target.def (omit_struct_return_reg): New data hook.
* doc/tm.texi.in: Add @hook TARGET_OMIT_STRUCT_RETURN_REG.
* doc/tm.texi: Regenerate.
return new pass_postreload (ctxt);
}
+namespace {
+
+const pass_data pass_data_late_compilation =
+{
+ RTL_PASS, /* type */
+ "*all-late_compilation", /* name */
+ OPTGROUP_NONE, /* optinfo_flags */
+ TV_LATE_COMPILATION, /* tv_id */
+ PROP_rtl, /* properties_required */
+ 0, /* properties_provided */
+ 0, /* properties_destroyed */
+ 0, /* todo_flags_start */
+ 0, /* todo_flags_finish */
+};
+
+class pass_late_compilation : public rtl_opt_pass
+{
+public:
+ pass_late_compilation (gcc::context *ctxt)
+ : rtl_opt_pass (pass_data_late_compilation, ctxt)
+ {}
+
+ /* opt_pass methods: */
+ virtual bool gate (function *)
+ {
+ return reload_completed || targetm.no_register_allocation;
+ }
+
+}; // class pass_late_compilation
+
+} // anon namespace
+
+static rtl_opt_pass *
+make_pass_late_compilation (gcc::context *ctxt)
+{
+ return new pass_late_compilation (ctxt);
+}
+
/* Set the static pass number of pass PASS to ID and record that
NEXT_PASS (pass_split_before_regstack);
NEXT_PASS (pass_stack_regs_run);
POP_INSERT_PASSES ()
+ POP_INSERT_PASSES ()
+ NEXT_PASS (pass_late_compilation);
+ PUSH_INSERT_PASSES_WITHIN (pass_late_compilation)
NEXT_PASS (pass_compute_alignments);
NEXT_PASS (pass_variable_tracking);
NEXT_PASS (pass_free_cfg);
DEFTIMEVAR (TV_OPTIMIZE , "unaccounted optimizations")
DEFTIMEVAR (TV_REST_OF_COMPILATION , "rest of compilation")
DEFTIMEVAR (TV_POSTRELOAD , "unaccounted post reload")
+DEFTIMEVAR (TV_LATE_COMPILATION , "unaccounted late compilation")
DEFTIMEVAR (TV_REMOVE_UNUSED , "remove unused locals")
DEFTIMEVAR (TV_ADDRESS_TAKEN , "address taken")
DEFTIMEVAR (TV_TODO , "unaccounted todo")