- if (get_irn_mode(irn) == mode_T) {
- /* for mode_T nodes: count the users of all Projs */
- foreach_out_edge(irn, edge) {
- ir_node *proj = get_edge_src_irn(edge);
- ir_mode *mode = get_irn_mode(proj);
-
- if (mode == mode_T) {
- sum += get_num_successors(proj);
- } else if (mode_is_datab(mode)) {
- sum += get_irn_n_edges(proj);
- }
- }
- }
- else {
- /* do not count keep-alive edges */
- foreach_out_edge(irn, edge) {
- if (get_irn_opcode(get_edge_src_irn(edge)) != iro_End)
- sum++;
- }
- }
-
- return sum;
-}
-
-/**
- * Adds irn to @p live, updates all inputs that this user is scheduled
- * and counts all of its non scheduled users.
- */
-static void update_sched_liveness(block_sched_env_t *env, ir_node *irn)
-{
- int i;
-
- /* ignore Projs */
- if (is_Proj(irn))
- return;
-
- for (i = get_irn_ins_or_deps(irn) - 1; i >= 0; --i) {
- ir_node *in = get_irn_in_or_dep(irn, i);
+ /* notify the selector about the finally selected node. */
+ if (env->selector->node_selected)
+ env->selector->node_selected(env->selector_block_env, node);