because after the tree optimizers have run such cleanups may
be necessary. */
-static void
+static unsigned int
execute_cleanup_cfg_pre_ipa (void)
{
cleanup_tree_cfg ();
+ return 0;
}
struct tree_opt_pass pass_cleanup_cfg =
because after the tree optimizers have run such cleanups may
be necessary. */
-static void
+static unsigned int
execute_cleanup_cfg_post_optimizing (void)
{
fold_cond_expr_cond ();
cleanup_tree_cfg ();
cleanup_dead_labels ();
group_case_labels ();
+ return 0;
}
struct tree_opt_pass pass_cleanup_cfg_post_optimizing =
/* Pass: do the actions required to finish with tree-ssa optimization
passes. */
-static void
+static unsigned int
execute_free_datastructures (void)
{
/* ??? This isn't the right place for this. Worse, it got computed
/* Remove the ssa structures. Do it here since this includes statement
annotations that need to be intact during disband_implicit_edges. */
delete_tree_ssa ();
+ return 0;
}
struct tree_opt_pass pass_free_datastructures =
};
/* Pass: free cfg annotations. */
-static void
+static unsigned int
execute_free_cfg_annotations (void)
{
basic_block bb;
the integrity of statements in the EH throw table. */
verify_eh_throw_table_statements ();
#endif
+ return 0;
}
struct tree_opt_pass pass_free_cfg_annotations =
changed some properties - such as marked functions nothrow. Remove now
redundant edges and basic blocks. */
-static void
+static unsigned int
execute_fixup_cfg (void)
{
basic_block bb;
}
cleanup_tree_cfg ();
+ return 0;
}
struct tree_opt_pass pass_fixup_cfg =
/* Do the actions required to initialize internal data structures used
in tree-ssa optimization passes. */
-static void
+static unsigned int
execute_init_datastructures (void)
{
/* Allocate hash tables, arrays and other structures. */
init_tree_ssa ();
+ return 0;
}
struct tree_opt_pass pass_init_datastructures =
timevar_pop (TV_INTEGRATION);
}
}
- /* We are not going to maintain the cgraph edges up to date.
- Kill it so it won't confuse us. */
- while (node->callees)
+ /* In non-unit-at-a-time we must mark all referenced functions as needed.
+ */
+ if (!flag_unit_at_a_time)
{
- /* In non-unit-at-a-time we must mark all referenced functions as needed.
- */
- if (node->callees->callee->analyzed && !flag_unit_at_a_time)
- cgraph_mark_needed_node (node->callees->callee);
- cgraph_remove_edge (node->callees);
+ struct cgraph_edge *e;
+ for (e = node->callees; e; e = e->next_callee)
+ if (e->callee->analyzed)
+ cgraph_mark_needed_node (e->callee);
}
/* We are not going to maintain the cgraph edges up to date.