summaryrefslogtreecommitdiff
path: root/gcc/passes.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/passes.c')
-rw-r--r--gcc/passes.c74
1 files changed, 39 insertions, 35 deletions
diff --git a/gcc/passes.c b/gcc/passes.c
index bec473a0670..833bdbd0134 100644
--- a/gcc/passes.c
+++ b/gcc/passes.c
@@ -104,7 +104,7 @@ along with GCC; see the file COPYING3. If not see
/* This is used for debugging. It allows the current pass to printed
from anywhere in compilation. */
-struct tree_opt_pass *current_pass;
+struct opt_pass *current_pass;
/* Call from anywhere to find out what pass this is. Useful for
printing out debugging information deep inside an service
@@ -246,19 +246,19 @@ finish_optimization_passes (void)
timevar_push (TV_DUMP);
if (profile_arc_flag || flag_test_coverage || flag_branch_probabilities)
{
- dump_file = dump_begin (pass_profile.static_pass_number, NULL);
+ dump_file = dump_begin (pass_profile.pass.static_pass_number, NULL);
end_branch_prob ();
if (dump_file)
- dump_end (pass_profile.static_pass_number, dump_file);
+ dump_end (pass_profile.pass.static_pass_number, dump_file);
}
if (optimize > 0)
{
- dump_file = dump_begin (pass_combine.static_pass_number, NULL);
+ dump_file = dump_begin (pass_combine.pass.static_pass_number, NULL);
if (dump_file)
{
dump_combine_total_stats (dump_file);
- dump_end (pass_combine.static_pass_number, dump_file);
+ dump_end (pass_combine.pass.static_pass_number, dump_file);
}
}
@@ -284,8 +284,10 @@ gate_rest_of_compilation (void)
return !(rtl_dump_and_exit || flag_syntax_only || errorcount || sorrycount);
}
-struct tree_opt_pass pass_rest_of_compilation =
+struct gimple_opt_pass pass_rest_of_compilation =
{
+ {
+ GIMPLE_PASS,
NULL, /* name */
gate_rest_of_compilation, /* gate */
NULL, /* execute */
@@ -297,8 +299,8 @@ struct tree_opt_pass pass_rest_of_compilation =
0, /* properties_provided */
0, /* properties_destroyed */
0, /* todo_flags_start */
- TODO_ggc_collect, /* todo_flags_finish */
- 0 /* letter */
+ TODO_ggc_collect /* todo_flags_finish */
+ }
};
static bool
@@ -307,8 +309,10 @@ gate_postreload (void)
return reload_completed;
}
-struct tree_opt_pass pass_postreload =
+struct rtl_opt_pass pass_postreload =
{
+ {
+ RTL_PASS,
NULL, /* name */
gate_postreload, /* gate */
NULL, /* execute */
@@ -320,21 +324,21 @@ struct tree_opt_pass pass_postreload =
0, /* properties_provided */
0, /* properties_destroyed */
0, /* todo_flags_start */
- TODO_ggc_collect | TODO_verify_rtl_sharing, /* todo_flags_finish */
- 0 /* letter */
+ TODO_ggc_collect | TODO_verify_rtl_sharing /* todo_flags_finish */
+ }
};
/* The root of the compilation pass tree, once constructed. */
-struct tree_opt_pass *all_passes, *all_ipa_passes, *all_lowering_passes;
+struct opt_pass *all_passes, *all_ipa_passes, *all_lowering_passes;
/* Iterate over the pass tree allocating dump file numbers. We want
to do this depth first, and independent of whether the pass is
enabled or not. */
static void
-register_one_dump_file (struct tree_opt_pass *pass, bool ipa, int properties)
+register_one_dump_file (struct opt_pass *pass, bool ipa, int properties)
{
char *dot_name, *flag_name, *glob_name;
const char *prefix;
@@ -358,13 +362,13 @@ register_one_dump_file (struct tree_opt_pass *pass, bool ipa, int properties)
flag_name = concat (prefix, pass->name, num, NULL);
glob_name = concat (prefix, pass->name, NULL);
pass->static_pass_number = dump_register (dot_name, flag_name, glob_name,
- flags, pass->letter);
+ flags);
}
/* Recursive worker function for register_dump_files. */
static int
-register_dump_files_1 (struct tree_opt_pass *pass, bool ipa, int properties)
+register_dump_files_1 (struct opt_pass *pass, bool ipa, int properties)
{
do
{
@@ -398,7 +402,7 @@ register_dump_files_1 (struct tree_opt_pass *pass, bool ipa, int properties)
the pipeline. */
static void
-register_dump_files (struct tree_opt_pass *pass, bool ipa, int properties)
+register_dump_files (struct opt_pass *pass, bool ipa, int properties)
{
pass->properties_required |= properties;
register_dump_files_1 (pass, ipa, properties);
@@ -407,14 +411,14 @@ register_dump_files (struct tree_opt_pass *pass, bool ipa, int properties)
/* Add a pass to the pass list. Duplicate the pass if it's already
in the list. */
-static struct tree_opt_pass **
-next_pass_1 (struct tree_opt_pass **list, struct tree_opt_pass *pass)
+static struct opt_pass **
+next_pass_1 (struct opt_pass **list, struct opt_pass *pass)
{
/* A nonzero static_pass_number indicates that the
pass is already in the list. */
if (pass->static_pass_number)
{
- struct tree_opt_pass *new;
+ struct opt_pass *new;
new = xmalloc (sizeof (*new));
memcpy (new, pass, sizeof (*new));
@@ -467,9 +471,9 @@ next_pass_1 (struct tree_opt_pass **list, struct tree_opt_pass *pass)
void
init_optimization_passes (void)
{
- struct tree_opt_pass **p;
+ struct opt_pass **p;
-#define NEXT_PASS(PASS) (p = next_pass_1 (p, &PASS))
+#define NEXT_PASS(PASS) (p = next_pass_1 (p, &((PASS).pass)))
/* All passes needed to lower the function into shape optimizers can
operate on. These passes are always run first on the function, but
@@ -497,21 +501,21 @@ init_optimization_passes (void)
NEXT_PASS (pass_ipa_function_and_variable_visibility);
NEXT_PASS (pass_ipa_early_inline);
{
- struct tree_opt_pass **p = &pass_ipa_early_inline.sub;
+ struct opt_pass **p = &pass_ipa_early_inline.pass.sub;
NEXT_PASS (pass_early_inline);
NEXT_PASS (pass_inline_parameters);
NEXT_PASS (pass_rebuild_cgraph_edges);
}
NEXT_PASS (pass_early_local_passes);
{
- struct tree_opt_pass **p = &pass_early_local_passes.sub;
+ struct opt_pass **p = &pass_early_local_passes.pass.sub;
NEXT_PASS (pass_tree_profile);
NEXT_PASS (pass_cleanup_cfg);
NEXT_PASS (pass_init_datastructures);
NEXT_PASS (pass_expand_omp);
NEXT_PASS (pass_all_early_optimizations);
{
- struct tree_opt_pass **p = &pass_all_early_optimizations.sub;
+ struct opt_pass **p = &pass_all_early_optimizations.pass.sub;
NEXT_PASS (pass_referenced_vars);
NEXT_PASS (pass_reset_cc_flags);
NEXT_PASS (pass_build_ssa);
@@ -555,7 +559,7 @@ init_optimization_passes (void)
NEXT_PASS (pass_apply_inline);
NEXT_PASS (pass_all_optimizations);
{
- struct tree_opt_pass **p = &pass_all_optimizations.sub;
+ struct opt_pass **p = &pass_all_optimizations.pass.sub;
NEXT_PASS (pass_create_structure_vars);
/* ??? pass_build_alias is a dummy pass that ensures that we
execute TODO_rebuild_alias at this point even if
@@ -614,7 +618,7 @@ init_optimization_passes (void)
NEXT_PASS (pass_sink_code);
NEXT_PASS (pass_tree_loop);
{
- struct tree_opt_pass **p = &pass_tree_loop.sub;
+ struct opt_pass **p = &pass_tree_loop.pass.sub;
NEXT_PASS (pass_tree_loop_init);
NEXT_PASS (pass_copy_prop);
NEXT_PASS (pass_dce_loop);
@@ -631,7 +635,7 @@ init_optimization_passes (void)
NEXT_PASS (pass_if_conversion);
NEXT_PASS (pass_vectorize);
{
- struct tree_opt_pass **p = &pass_vectorize.sub;
+ struct opt_pass **p = &pass_vectorize.pass.sub;
NEXT_PASS (pass_lower_vector_ssa);
NEXT_PASS (pass_dce_loop);
}
@@ -685,7 +689,7 @@ init_optimization_passes (void)
NEXT_PASS (pass_expand);
NEXT_PASS (pass_rest_of_compilation);
{
- struct tree_opt_pass **p = &pass_rest_of_compilation.sub;
+ struct opt_pass **p = &pass_rest_of_compilation.pass.sub;
NEXT_PASS (pass_init_function);
NEXT_PASS (pass_jump);
NEXT_PASS (pass_rtl_eh);
@@ -705,7 +709,7 @@ init_optimization_passes (void)
efficiently. */
NEXT_PASS (pass_loop2);
{
- struct tree_opt_pass **p = &pass_loop2.sub;
+ struct opt_pass **p = &pass_loop2.pass.sub;
NEXT_PASS (pass_rtl_loop_init);
NEXT_PASS (pass_rtl_move_loop_invariants);
NEXT_PASS (pass_rtl_unswitch);
@@ -743,7 +747,7 @@ init_optimization_passes (void)
NEXT_PASS (pass_subregs_of_mode_finish);
NEXT_PASS (pass_postreload);
{
- struct tree_opt_pass **p = &pass_postreload.sub;
+ struct opt_pass **p = &pass_postreload.pass.sub;
NEXT_PASS (pass_postreload_cse);
NEXT_PASS (pass_gcse2);
NEXT_PASS (pass_split_after_reload);
@@ -764,7 +768,7 @@ init_optimization_passes (void)
NEXT_PASS (pass_sched2);
NEXT_PASS (pass_stack_regs);
{
- struct tree_opt_pass **p = &pass_stack_regs.sub;
+ struct opt_pass **p = &pass_stack_regs.pass.sub;
NEXT_PASS (pass_split_before_regstack);
NEXT_PASS (pass_stack_regs_run);
}
@@ -1056,13 +1060,13 @@ verify_curr_properties (void *data)
static void
update_properties_after_pass (void *data)
{
- struct tree_opt_pass *pass = data;
+ struct opt_pass *pass = data;
cfun->curr_properties = (cfun->curr_properties | pass->properties_provided)
& ~pass->properties_destroyed;
}
static bool
-execute_one_pass (struct tree_opt_pass *pass)
+execute_one_pass (struct opt_pass *pass)
{
bool initializing_dump;
unsigned int todo_after = 0;
@@ -1169,7 +1173,7 @@ execute_one_pass (struct tree_opt_pass *pass)
}
void
-execute_pass_list (struct tree_opt_pass *pass)
+execute_pass_list (struct opt_pass *pass)
{
do
{
@@ -1183,7 +1187,7 @@ execute_pass_list (struct tree_opt_pass *pass)
/* Same as execute_pass_list but assume that subpasses of IPA passes
are local passes. */
void
-execute_ipa_pass_list (struct tree_opt_pass *pass)
+execute_ipa_pass_list (struct opt_pass *pass)
{
do
{