timevar_push (TV_DUMP);
if (profile_arc_flag || flag_test_coverage || flag_branch_probabilities)
{
- dump_file = dump_begin (pass_branch_prob.static_pass_number, NULL);
+ dump_file = dump_begin (pass_profile.static_pass_number, NULL);
end_branch_prob ();
if (dump_file)
- dump_end (pass_branch_prob.static_pass_number, dump_file);
+ dump_end (pass_profile.static_pass_number, dump_file);
}
if (optimize > 0)
/* Register the dump files for the pipeline starting at PASS. IPA is
true if the pass is inter-procedural, and PROPERTIES reflects the
- properties that are guarenteed to be available at the beginning of
+ properties that are guaranteed to be available at the beginning of
the pipeline. */
static void
NEXT_PASS (pass_jump2);
NEXT_PASS (pass_cse);
NEXT_PASS (pass_gcse);
- NEXT_PASS (pass_loop_optimize);
NEXT_PASS (pass_jump_bypass);
- NEXT_PASS (pass_cfg);
- NEXT_PASS (pass_branch_prob);
NEXT_PASS (pass_rtl_ifcvt);
NEXT_PASS (pass_tracer);
/* Perform loop optimizations. It might be better to do them a bit
flags &= ~last_verified;
if (!flags)
return;
+
+ /* Always recalculate SMT usage before doing anything else. */
+ if (flags & TODO_update_smt_usage)
+ recalculate_used_alone ();
- /* Always cleanup the CFG before doing anything else. */
+ /* Always cleanup the CFG before trying to update SSA . */
if (flags & TODO_cleanup_cfg)
{
if (current_loops)
execute_one_pass (struct tree_opt_pass *pass)
{
bool initializing_dump;
+ unsigned int todo_after = 0;
/* See if we're supposed to run this pass. */
if (pass->gate && !pass->gate ())
gcc_assert ((curr_properties & pass->properties_required)
== pass->properties_required);
+ if (pass->properties_destroyed & PROP_smt_usage)
+ updating_used_alone = true;
+
/* If a dump file name is present, open it if enabled. */
if (pass->static_pass_number != -1)
{
/* Do it! */
if (pass->execute)
{
- pass->execute ();
+ todo_after = pass->execute ();
last_verified = 0;
}
}
/* Run post-pass cleanup and verification. */
- execute_todo (pass->todo_flags_finish);
+ execute_todo (todo_after | pass->todo_flags_finish);
/* Flush and close dump file. */
if (dump_file_name)
dump_file = NULL;
}
+ if (pass->properties_destroyed & PROP_smt_usage)
+ updating_used_alone = false;
+
return true;
}