summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog34
-rw-r--r--gcc/cfgrtl.c2
-rw-r--r--gcc/cgraphbuild.c6
-rw-r--r--gcc/dce.c8
-rw-r--r--gcc/df-core.c2
-rw-r--r--gcc/doc/passes.texi9
-rw-r--r--gcc/except.c2
-rw-r--r--gcc/function.c4
-rw-r--r--gcc/gcse.c2
-rw-r--r--gcc/passes.c22
-rw-r--r--gcc/predict.c2
-rw-r--r--gcc/reg-stack.c2
-rw-r--r--gcc/stack-ptr-mod.c2
-rw-r--r--gcc/tree-cfg.c4
-rw-r--r--gcc/tree-dfa.c2
-rw-r--r--gcc/tree-optimize.c8
-rw-r--r--gcc/tree-ssa-loop.c2
-rw-r--r--gcc/tree-ssa.c4
-rw-r--r--gcc/tree.c2
19 files changed, 84 insertions, 35 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 845e28250b2..aeb880e8230 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,37 @@
+2009-11-08 Zbigniew Chamski <zbigniew.chamski@gmail.com>
+ Joern Rennecke <amylaar@spamcop.net>
+
+ * cfgrtl.c (pass_free_cfg): Add pass name.
+ * cgraphbuild.c (pass_build_cgraph_edges): Likewise.
+ (pass_rebuild_cgraph_edges, pass_remove_cgraph_callee_edges): Likewise.
+ * dce.c (pass_ud_rtl_dce, pass_fast_rtl_dce): Change pass name.
+ * df-core.c (pass_df_initialize_no_opt): Likewise.
+ * except.c (pass_rtl_eh): Likewise.
+ * function.c (pass_init_function, pass_leaf_regs): Likewise.
+ * gcse.c (pass_rtl_pre): Change pass name.
+ * passes.c (pass_postreload): Add pass name.
+ (make_pass_instance): Don't use duplicate-tracking logic for
+ names starting with '*'.
+ (next_pass_1): Assert that pass has a name.
+ (register_one_dump_file): If there is an space in the name,
+ skip past it.
+ * predict.c (pass_strip_predict_hints): Add pass name.
+ * reg-stack.c (pass_stack_regs): Likewise.
+ * stack-ptr-mod.c (pass_stack_ptr_mod): Likewise.
+ * tree-cfg.c (pass_warn_function_return,
+ pass_warn_function_noreturn): Add pass name.
+ * tree-dfa.c (pass_referenced_vars): Likewise.
+ * tree-optimize.c (pass_cleanup_cfg_post_optimizing):
+ Fix whitespace before comment.
+ (pass_fixup_cfg): Add pass name, fix whitespace before comment.
+ (pass_init_datastructures): Add pass name.
+ * tree-ssa-loop.c (pass_record_bounds): Likewise.
+ * tree-ssa.c (pass_early_warn_uninitialized,
+ pass_late_warn_uninitialized): Likewise.
+ * tree.c (pass_ipa_free_lang_data): Likewise.
+ * doc/passes.texi (pass manager): Document how to disambiguate
+ pass names.
+
2009-11-08 Paolo Bonzini <bonzini@gnu.org>
* df-problems.c: Fix documentation for forward simulation of LR.
diff --git a/gcc/cfgrtl.c b/gcc/cfgrtl.c
index 4146b146977..73aebf07844 100644
--- a/gcc/cfgrtl.c
+++ b/gcc/cfgrtl.c
@@ -433,7 +433,7 @@ struct rtl_opt_pass pass_free_cfg =
{
{
RTL_PASS,
- NULL, /* name */
+ "*free_cfg", /* name */
NULL, /* gate */
rest_of_pass_free_cfg, /* execute */
NULL, /* sub */
diff --git a/gcc/cgraphbuild.c b/gcc/cgraphbuild.c
index 65e3d67e14c..8423c36b880 100644
--- a/gcc/cgraphbuild.c
+++ b/gcc/cgraphbuild.c
@@ -205,7 +205,7 @@ struct gimple_opt_pass pass_build_cgraph_edges =
{
{
GIMPLE_PASS,
- NULL, /* name */
+ "*build_cgraph_edges", /* name */
NULL, /* gate */
build_cgraph_edges, /* execute */
NULL, /* sub */
@@ -270,7 +270,7 @@ struct gimple_opt_pass pass_rebuild_cgraph_edges =
{
{
GIMPLE_PASS,
- NULL, /* name */
+ "*rebuild_cgraph_edges", /* name */
NULL, /* gate */
rebuild_cgraph_edges, /* execute */
NULL, /* sub */
@@ -297,7 +297,7 @@ struct gimple_opt_pass pass_remove_cgraph_callee_edges =
{
{
GIMPLE_PASS,
- NULL, /* name */
+ "*remove_cgraph_callee_edges", /* name */
NULL, /* gate */
remove_cgraph_callee_edges, /* execute */
NULL, /* sub */
diff --git a/gcc/dce.c b/gcc/dce.c
index b937dd44a19..a2c6973f53f 100644
--- a/gcc/dce.c
+++ b/gcc/dce.c
@@ -738,9 +738,9 @@ struct rtl_opt_pass pass_ud_rtl_dce =
{
{
RTL_PASS,
- "dce", /* name */
- gate_ud_dce, /* gate */
- rest_of_handle_ud_dce, /* execute */
+ "ud dce", /* name */
+ gate_ud_dce, /* gate */
+ rest_of_handle_ud_dce, /* execute */
NULL, /* sub */
NULL, /* next */
0, /* static_pass_number */
@@ -1123,7 +1123,7 @@ struct rtl_opt_pass pass_fast_rtl_dce =
{
{
RTL_PASS,
- "dce", /* name */
+ "rtl dce", /* name */
gate_fast_dce, /* gate */
rest_of_handle_fast_dce, /* execute */
NULL, /* sub */
diff --git a/gcc/df-core.c b/gcc/df-core.c
index 8057b54df10..a53e7091d95 100644
--- a/gcc/df-core.c
+++ b/gcc/df-core.c
@@ -780,7 +780,7 @@ struct rtl_opt_pass pass_df_initialize_no_opt =
{
{
RTL_PASS,
- "dfinit", /* name */
+ "no-opt dfinit", /* name */
gate_no_opt, /* gate */
rest_of_handle_df_initialize, /* execute */
NULL, /* sub */
diff --git a/gcc/doc/passes.texi b/gcc/doc/passes.texi
index b28b87cb57a..2bbddeab520 100644
--- a/gcc/doc/passes.texi
+++ b/gcc/doc/passes.texi
@@ -166,9 +166,14 @@ not attempt to (re-)generate data structures or lower intermediate
language form based on the requirements of the next pass. Nevertheless,
what is present is useful, and a far sight better than nothing at all.
+Each pass should have a unique name.
Each pass may have its own dump file (for GCC debugging purposes).
-Passes without any names, or with a name starting with a star, do not
-dump anything.
+Passes with a name starting with a star do not dump anything.
+Sometimes passes are supposed to share a dump file / option name.
+To still give these unique names, you can use a prefix that is delimited
+by a space from the part that is used for the dump file / option name.
+E.g. When the pass name is "ud dce", the name used for dump file/options
+is "dce".
TODO: describe the global variables set up by the pass manager,
and a brief description of how a new pass should use it.
diff --git a/gcc/except.c b/gcc/except.c
index b25e48b6c9b..6c7618339e5 100644
--- a/gcc/except.c
+++ b/gcc/except.c
@@ -1465,7 +1465,7 @@ struct rtl_opt_pass pass_rtl_eh =
{
{
RTL_PASS,
- "eh", /* name */
+ "rtl eh", /* name */
gate_handle_eh, /* gate */
rest_of_handle_eh, /* execute */
NULL, /* sub */
diff --git a/gcc/function.c b/gcc/function.c
index 35c0cfd609e..d5963430c73 100644
--- a/gcc/function.c
+++ b/gcc/function.c
@@ -4228,7 +4228,7 @@ struct rtl_opt_pass pass_init_function =
{
{
RTL_PASS,
- NULL, /* name */
+ "*init_function", /* name */
NULL, /* gate */
init_function_for_compilation, /* execute */
NULL, /* sub */
@@ -5538,7 +5538,7 @@ struct rtl_opt_pass pass_leaf_regs =
{
{
RTL_PASS,
- NULL, /* name */
+ "*leaf_regs", /* name */
NULL, /* gate */
rest_of_handle_check_leaf_regs, /* execute */
NULL, /* sub */
diff --git a/gcc/gcse.c b/gcc/gcse.c
index 7ccb05e1d85..e6514e7cce5 100644
--- a/gcc/gcse.c
+++ b/gcc/gcse.c
@@ -5147,7 +5147,7 @@ struct rtl_opt_pass pass_rtl_pre =
{
{
RTL_PASS,
- "pre", /* name */
+ "rtl pre", /* name */
gate_rtl_pre, /* gate */
execute_rtl_pre, /* execute */
NULL, /* sub */
diff --git a/gcc/passes.c b/gcc/passes.c
index 80225490cbd..1cef3499b78 100644
--- a/gcc/passes.c
+++ b/gcc/passes.c
@@ -314,7 +314,7 @@ struct rtl_opt_pass pass_postreload =
{
{
RTL_PASS,
- NULL, /* name */
+ "*all-postreload", /* name */
gate_postreload, /* gate */
NULL, /* execute */
NULL, /* sub */
@@ -374,7 +374,7 @@ void
register_one_dump_file (struct opt_pass *pass)
{
char *dot_name, *flag_name, *glob_name;
- const char *prefix;
+ const char *name, *prefix;
char num[10];
int flags, id;
@@ -384,7 +384,14 @@ register_one_dump_file (struct opt_pass *pass)
sprintf (num, "%d", ((int) pass->static_pass_number < 0
? 1 : pass->static_pass_number));
- dot_name = concat (".", pass->name, num, NULL);
+ /* The name is both used to identify the pass for the purposes of plugins,
+ and to specify dump file name and option.
+ The latter two might want something short which is not quite unique; for
+ that reason, we may have a disambiguating prefix, followed by a space
+ to mark the start of the following dump file name / option string. */
+ name = strchr (pass->name, ' ');
+ name = name ? name + 1 : pass->name;
+ dot_name = concat (".", name, num, NULL);
if (pass->type == SIMPLE_IPA_PASS || pass->type == IPA_PASS)
prefix = "ipa-", flags = TDF_IPA;
else if (pass->type == GIMPLE_PASS)
@@ -392,8 +399,8 @@ register_one_dump_file (struct opt_pass *pass)
else
prefix = "rtl-", flags = TDF_RTL;
- flag_name = concat (prefix, pass->name, num, NULL);
- glob_name = concat (prefix, pass->name, NULL);
+ flag_name = concat (prefix, name, num, NULL);
+ glob_name = concat (prefix, name, NULL);
id = dump_register (dot_name, flag_name, glob_name, flags);
set_pass_for_id (id, pass);
}
@@ -461,7 +468,7 @@ make_pass_instance (struct opt_pass *pass, bool track_duplicates)
and so it should rename the dump file. The first instance will
be -1, and be number of duplicates = -static_pass_number - 1.
Subsequent instances will be > 0 and just the duplicate number. */
- if (pass->name || track_duplicates)
+ if ((pass->name && pass->name[0] != '*') || track_duplicates)
{
pass->static_pass_number -= 1;
new_pass->static_pass_number = -pass->static_pass_number;
@@ -482,6 +489,9 @@ make_pass_instance (struct opt_pass *pass, bool track_duplicates)
static struct opt_pass **
next_pass_1 (struct opt_pass **list, struct opt_pass *pass)
{
+ /* Every pass should have a name so that plugins can refer to them. */
+ gcc_assert (pass->name != NULL);
+
*list = make_pass_instance (pass, false);
return &(*list)->next;
diff --git a/gcc/predict.c b/gcc/predict.c
index 6353fb96a56..becff10615b 100644
--- a/gcc/predict.c
+++ b/gcc/predict.c
@@ -2246,7 +2246,7 @@ struct gimple_opt_pass pass_strip_predict_hints =
{
{
GIMPLE_PASS,
- NULL, /* name */
+ "*strip_predict_hints", /* name */
NULL, /* gate */
strip_predict_hints, /* execute */
NULL, /* sub */
diff --git a/gcc/reg-stack.c b/gcc/reg-stack.c
index 7e4ba6cad20..f3f71e9c534 100644
--- a/gcc/reg-stack.c
+++ b/gcc/reg-stack.c
@@ -3275,7 +3275,7 @@ struct rtl_opt_pass pass_stack_regs =
{
{
RTL_PASS,
- NULL, /* name */
+ "*stack_regs", /* name */
gate_handle_stack_regs, /* gate */
NULL, /* execute */
NULL, /* sub */
diff --git a/gcc/stack-ptr-mod.c b/gcc/stack-ptr-mod.c
index 9800d9966ab..2d9ce82c98e 100644
--- a/gcc/stack-ptr-mod.c
+++ b/gcc/stack-ptr-mod.c
@@ -95,7 +95,7 @@ struct rtl_opt_pass pass_stack_ptr_mod =
{
{
RTL_PASS,
- NULL, /* name */
+ "*stack_ptr_mod", /* name */
NULL, /* gate */
rest_of_handle_stack_ptr_mod, /* execute */
NULL, /* sub */
diff --git a/gcc/tree-cfg.c b/gcc/tree-cfg.c
index 97b08924ff7..4de3dea4ea4 100644
--- a/gcc/tree-cfg.c
+++ b/gcc/tree-cfg.c
@@ -7191,7 +7191,7 @@ struct gimple_opt_pass pass_warn_function_return =
{
{
GIMPLE_PASS,
- NULL, /* name */
+ "*warn_function_return", /* name */
NULL, /* gate */
execute_warn_function_return, /* execute */
NULL, /* sub */
@@ -7225,7 +7225,7 @@ struct gimple_opt_pass pass_warn_function_noreturn =
{
{
GIMPLE_PASS,
- NULL, /* name */
+ "*warn_function_noreturn", /* name */
NULL, /* gate */
execute_warn_function_noreturn, /* execute */
NULL, /* sub */
diff --git a/gcc/tree-dfa.c b/gcc/tree-dfa.c
index 847a6818b1b..d1f84a2ebaa 100644
--- a/gcc/tree-dfa.c
+++ b/gcc/tree-dfa.c
@@ -106,7 +106,7 @@ struct gimple_opt_pass pass_referenced_vars =
{
{
GIMPLE_PASS,
- NULL, /* name */
+ "*referenced_vars", /* name */
NULL, /* gate */
find_referenced_vars, /* execute */
NULL, /* sub */
diff --git a/gcc/tree-optimize.c b/gcc/tree-optimize.c
index abd56fcc484..7affd1627c5 100644
--- a/gcc/tree-optimize.c
+++ b/gcc/tree-optimize.c
@@ -201,7 +201,7 @@ struct gimple_opt_pass pass_cleanup_cfg_post_optimizing =
{
{
GIMPLE_PASS,
- "optimized", /* name */
+ "optimized", /* name */
NULL, /* gate */
execute_cleanup_cfg_post_optimizing, /* execute */
NULL, /* sub */
@@ -287,9 +287,9 @@ struct gimple_opt_pass pass_fixup_cfg =
{
{
GIMPLE_PASS,
- NULL, /* name */
+ "*free_cfg_annotations", /* name */
NULL, /* gate */
- execute_fixup_cfg, /* execute */
+ execute_fixup_cfg, /* execute */
NULL, /* sub */
NULL, /* next */
0, /* static_pass_number */
@@ -317,7 +317,7 @@ struct gimple_opt_pass pass_init_datastructures =
{
{
GIMPLE_PASS,
- NULL, /* name */
+ "*init_datastructures", /* name */
NULL, /* gate */
execute_init_datastructures, /* execute */
NULL, /* sub */
diff --git a/gcc/tree-ssa-loop.c b/gcc/tree-ssa-loop.c
index 8f7047f8309..c52b787f407 100644
--- a/gcc/tree-ssa-loop.c
+++ b/gcc/tree-ssa-loop.c
@@ -455,7 +455,7 @@ struct gimple_opt_pass pass_record_bounds =
{
{
GIMPLE_PASS,
- NULL, /* name */
+ "*record_bounds", /* name */
NULL, /* gate */
tree_ssa_loop_bounds, /* execute */
NULL, /* sub */
diff --git a/gcc/tree-ssa.c b/gcc/tree-ssa.c
index 8e88c2f73b0..e6a9a07a5d8 100644
--- a/gcc/tree-ssa.c
+++ b/gcc/tree-ssa.c
@@ -1856,7 +1856,7 @@ struct gimple_opt_pass pass_early_warn_uninitialized =
{
{
GIMPLE_PASS,
- NULL, /* name */
+ "*early_warn_uninitialized", /* name */
gate_warn_uninitialized, /* gate */
execute_early_warn_uninitialized, /* execute */
NULL, /* sub */
@@ -1875,7 +1875,7 @@ struct gimple_opt_pass pass_late_warn_uninitialized =
{
{
GIMPLE_PASS,
- NULL, /* name */
+ "*late_warn_uninitialized", /* name */
gate_warn_uninitialized, /* gate */
execute_late_warn_uninitialized, /* execute */
NULL, /* sub */
diff --git a/gcc/tree.c b/gcc/tree.c
index b3863340212..3bfb527590e 100644
--- a/gcc/tree.c
+++ b/gcc/tree.c
@@ -4988,7 +4988,7 @@ struct simple_ipa_opt_pass pass_ipa_free_lang_data =
{
{
SIMPLE_IPA_PASS,
- NULL, /* name */
+ "*free_lang_data", /* name */
NULL, /* gate */
free_lang_data, /* execute */
NULL, /* sub */