diff options
-rw-r--r-- | gcc/ChangeLog | 34 | ||||
-rw-r--r-- | gcc/cfgrtl.c | 2 | ||||
-rw-r--r-- | gcc/cgraphbuild.c | 6 | ||||
-rw-r--r-- | gcc/dce.c | 8 | ||||
-rw-r--r-- | gcc/df-core.c | 2 | ||||
-rw-r--r-- | gcc/doc/passes.texi | 9 | ||||
-rw-r--r-- | gcc/except.c | 2 | ||||
-rw-r--r-- | gcc/function.c | 4 | ||||
-rw-r--r-- | gcc/gcse.c | 2 | ||||
-rw-r--r-- | gcc/passes.c | 22 | ||||
-rw-r--r-- | gcc/predict.c | 2 | ||||
-rw-r--r-- | gcc/reg-stack.c | 2 | ||||
-rw-r--r-- | gcc/stack-ptr-mod.c | 2 | ||||
-rw-r--r-- | gcc/tree-cfg.c | 4 | ||||
-rw-r--r-- | gcc/tree-dfa.c | 2 | ||||
-rw-r--r-- | gcc/tree-optimize.c | 8 | ||||
-rw-r--r-- | gcc/tree-ssa-loop.c | 2 | ||||
-rw-r--r-- | gcc/tree-ssa.c | 4 | ||||
-rw-r--r-- | gcc/tree.c | 2 |
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 */ |