diff options
author | Richard Biener <rguenther@suse.de> | 2013-04-12 09:50:28 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2013-04-12 09:50:28 +0000 |
commit | d3afd9aacaa66fc22dfbd4943df8b05dcc3e6bee (patch) | |
tree | 2766f41a08f71d117d9d6574f06cf40113aebde0 /gcc/ira.c | |
parent | e1e3b9d3359ea668c7581f6673bdeeb59b085d24 (diff) | |
download | gcc-d3afd9aacaa66fc22dfbd4943df8b05dcc3e6bee.zip gcc-d3afd9aacaa66fc22dfbd4943df8b05dcc3e6bee.tar.gz gcc-d3afd9aacaa66fc22dfbd4943df8b05dcc3e6bee.tar.bz2 |
tree-pass.h (TODO_do_not_ggc_collect): New.
2013-04-12 Richard Biener <rguenther@suse.de>
* tree-pass.h (TODO_do_not_ggc_collect): New.
* passes.c (execute_one_ipa_transform_pass): Honor
TODO_do_not_ggc_collect.
(execute_one_pass): Likewise.
Revert
2013-04-10 Richard Biener <rguenther@suse.de>
* passes.c (init_optimization_passes): Remove reload pass.
* ira.c (do_reload): Merge into ...
(ira): ... this.
(rest_of_handle_reload): Remove.
(pass_reload): Likewise.
* config/i386/i386.c (ix86_option_override): Refer to ira instead
of reload for vzeroupper pass placement.
* g++.dg/pr55604.C: Use -fdump-rtl-ira.
From-SVN: r197865
Diffstat (limited to 'gcc/ira.c')
-rw-r--r-- | gcc/ira.c | 42 |
1 files changed, 39 insertions, 3 deletions
@@ -4359,8 +4359,6 @@ ira (FILE *f) int rebuild_p; bool saved_flag_caller_saves = flag_caller_saves; enum ira_region saved_flag_ira_region = flag_ira_region; - basic_block bb; - bool need_dce; ira_conflicts_p = optimize > 0; @@ -4590,6 +4588,13 @@ ira (FILE *f) flag_caller_saves = saved_flag_caller_saves; flag_ira_region = saved_flag_ira_region; } +} + +static void +do_reload (void) +{ + basic_block bb; + bool need_dce; if (flag_ira_verbose < 10) ira_dump_file = dump_file; @@ -4629,6 +4634,8 @@ ira (FILE *f) timevar_pop (TV_RELOAD); + timevar_push (TV_IRA); + if (ira_conflicts_p && ! ira_use_lra_p) { ira_free (ira_spilled_reg_stack_slots); @@ -4686,6 +4693,8 @@ ira (FILE *f) if (need_dce && optimize) run_fast_dce (); + + timevar_pop (TV_IRA); } /* Run the integrated register allocator. */ @@ -4712,6 +4721,33 @@ struct rtl_opt_pass pass_ira = 0, /* properties_provided */ 0, /* properties_destroyed */ 0, /* todo_flags_start */ - 0 /* todo_flags_finish */ + TODO_do_not_ggc_collect /* todo_flags_finish */ + } +}; + +static unsigned int +rest_of_handle_reload (void) +{ + do_reload (); + return 0; +} + +struct rtl_opt_pass pass_reload = +{ + { + RTL_PASS, + "reload", /* name */ + OPTGROUP_NONE, /* optinfo_flags */ + NULL, /* gate */ + rest_of_handle_reload, /* execute */ + NULL, /* sub */ + NULL, /* next */ + 0, /* static_pass_number */ + TV_RELOAD, /* tv_id */ + 0, /* properties_required */ + 0, /* properties_provided */ + 0, /* properties_destroyed */ + 0, /* todo_flags_start */ + 0 /* todo_flags_finish */ } }; |