-
- /* Push the local data into the local data stack. */
- VARRAY_PUSH_GENERIC_PTR (walk_data->block_data_stack, bd);
-
- /* Call the initializer. */
- walk_data->initialize_block_local_data (walk_data, bb, recycled);
-
- }
-
- /* Callback for operations to execute before we have walked the
- dominator children, but before we walk statements. */
- if (walk_data->before_dom_children_before_stmts)
- (*walk_data->before_dom_children_before_stmts) (walk_data, bb);
-
- /* Statement walk before walking dominator children. */
- if (is_interesting && walk_data->before_dom_children_walk_stmts)
- {
- if (walk_data->walk_stmts_backward)
- for (bsi = bsi_last (bb); !bsi_end_p (bsi); bsi_prev (&bsi))
- (*walk_data->before_dom_children_walk_stmts) (walk_data, bb, bsi);
- else
- for (bsi = bsi_start (bb); !bsi_end_p (bsi); bsi_next (&bsi))
- (*walk_data->before_dom_children_walk_stmts) (walk_data, bb, bsi);
- }
-
- /* Callback for operations to execute before we have walked the
- dominator children, and after we walk statements. */
- if (walk_data->before_dom_children_after_stmts)
- (*walk_data->before_dom_children_after_stmts) (walk_data, bb);
-
- /* Recursively call ourselves on the dominator children of BB. */
- for (dest = first_dom_son (walk_data->dom_direction, bb);
- dest;
- dest = next_dom_son (walk_data->dom_direction, dest))
- {
- /* The destination block may have become unreachable, in
- which case there's no point in optimizing it. */
- if (EDGE_COUNT (dest->preds) > 0)
- walk_dominator_tree (walk_data, dest);
- }
-
- /* Callback for operations to execute after we have walked the
- dominator children, but before we walk statements. */
- if (walk_data->after_dom_children_before_stmts)
- (*walk_data->after_dom_children_before_stmts) (walk_data, bb);
-
- /* Statement walk after walking dominator children. */
- if (is_interesting && walk_data->after_dom_children_walk_stmts)
- {
- if (walk_data->walk_stmts_backward)
- for (bsi = bsi_last (bb); !bsi_end_p (bsi); bsi_prev (&bsi))
- (*walk_data->after_dom_children_walk_stmts) (walk_data, bb, bsi);