aboutsummaryrefslogtreecommitdiff
path: root/gcc/passes.c
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2013-04-12 09:50:28 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2013-04-12 09:50:28 +0000
commitd3afd9aacaa66fc22dfbd4943df8b05dcc3e6bee (patch)
tree2766f41a08f71d117d9d6574f06cf40113aebde0 /gcc/passes.c
parente1e3b9d3359ea668c7581f6673bdeeb59b085d24 (diff)
downloadgcc-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/passes.c')
-rw-r--r--gcc/passes.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/gcc/passes.c b/gcc/passes.c
index c9911b9..47dca56 100644
--- a/gcc/passes.c
+++ b/gcc/passes.c
@@ -1620,6 +1620,7 @@ init_optimization_passes (void)
NEXT_PASS (pass_sms);
NEXT_PASS (pass_sched);
NEXT_PASS (pass_ira);
+ NEXT_PASS (pass_reload);
NEXT_PASS (pass_postreload);
{
struct opt_pass **p = &pass_postreload.pass.sub;
@@ -2186,7 +2187,8 @@ execute_one_ipa_transform_pass (struct cgraph_node *node,
current_pass = NULL;
/* Signal this is a suitable GC collection point. */
- ggc_collect ();
+ if (!(todo_after & TODO_do_not_ggc_collect))
+ ggc_collect ();
}
/* For the current function, execute all ipa transforms. */
@@ -2365,7 +2367,8 @@ execute_one_pass (struct opt_pass *pass)
current_pass = NULL;
/* Signal this is a suitable GC collection point. */
- ggc_collect ();
+ if (!((todo_after | pass->todo_flags_finish) & TODO_do_not_ggc_collect))
+ ggc_collect ();
return true;
}