aboutsummaryrefslogtreecommitdiff
path: root/gcc
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
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')
-rw-r--r--gcc/ChangeLog18
-rw-r--r--gcc/config/i386/i386.c2
-rw-r--r--gcc/ira.c42
-rw-r--r--gcc/passes.c7
-rw-r--r--gcc/testsuite/ChangeLog7
-rw-r--r--gcc/testsuite/g++.dg/pr55604.C4
-rw-r--r--gcc/tree-pass.h2
7 files changed, 74 insertions, 8 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index aa33272..cf92ee9 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,21 @@
+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.
+
2013-04-12 Jakub Jelinek <jakub@redhat.com>
PR tree-optimization/56918
diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
index 21ebd0f..9f5a24f 100644
--- a/gcc/config/i386/i386.c
+++ b/gcc/config/i386/i386.c
@@ -3930,7 +3930,7 @@ static void
ix86_option_override (void)
{
static struct register_pass_info insert_vzeroupper_info
- = { &pass_insert_vzeroupper.pass, "ira",
+ = { &pass_insert_vzeroupper.pass, "reload",
1, PASS_POS_INSERT_AFTER
};
diff --git a/gcc/ira.c b/gcc/ira.c
index edfc974..cfa287f 100644
--- a/gcc/ira.c
+++ b/gcc/ira.c
@@ -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 */
}
};
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;
}
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 6272c49..57b3c5b 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,10 @@
+2013-04-12 Richard Biener <rguenther@suse.de>
+
+ Revert
+ 2013-04-10 Richard Biener <rguenther@suse.de>
+
+ * g++.dg/pr55604.C: Use -fdump-rtl-ira.
+
2013-04-12 Tobias Burnus <burnus@net-b.de>
PR fortran/56845
diff --git a/gcc/testsuite/g++.dg/pr55604.C b/gcc/testsuite/g++.dg/pr55604.C
index b2e7af0..135ae4d 100644
--- a/gcc/testsuite/g++.dg/pr55604.C
+++ b/gcc/testsuite/g++.dg/pr55604.C
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O -fdump-rtl-ira" } */
+/* { dg-options "-O -fdump-rtl-reload" } */
main ()
{
@@ -8,4 +8,4 @@ main ()
__builtin_printf ("%d %s\n", t, s);
}
-/* { dg-final { cleanup-rtl-dump "ira" } } */
+/* { dg-final { cleanup-rtl-dump "reload" } } */
diff --git a/gcc/tree-pass.h b/gcc/tree-pass.h
index a6bb4fa..b8c59a7 100644
--- a/gcc/tree-pass.h
+++ b/gcc/tree-pass.h
@@ -154,6 +154,7 @@ struct simple_ipa_opt_pass
(PROP_gimple_any | PROP_gimple_lcf | PROP_gimple_leh | PROP_gimple_lomp)
/* To-do flags. */
+#define TODO_do_not_ggc_collect (1 << 1)
#define TODO_verify_ssa (1 << 2)
#define TODO_verify_flow (1 << 3)
#define TODO_verify_stmts (1 << 4)
@@ -445,6 +446,7 @@ extern struct rtl_opt_pass pass_mode_switching;
extern struct rtl_opt_pass pass_sms;
extern struct rtl_opt_pass pass_sched;
extern struct rtl_opt_pass pass_ira;
+extern struct rtl_opt_pass pass_reload;
extern struct rtl_opt_pass pass_clean_state;
extern struct rtl_opt_pass pass_branch_prob;
extern struct rtl_opt_pass pass_value_profile_transformations;