+ if (nodeset_find(be.cands, irn))
+ nodeset_remove(be.cands, irn);
+ }
+
+ if (selector->finish_block)
+ selector->finish_block(be.selector_block_env);
+
+ del_nodeset(be.cands);
+ del_nodeset(be.live);
+}
+
+/* List schedule a graph. */
+void list_sched(const be_irg_t *birg, be_options_t *be_opts)
+{
+ const arch_env_t *arch_env = birg->main_env->arch_env;
+ ir_graph *irg = birg->irg;
+
+ int num_nodes;
+ sched_env_t env;
+ mris_env_t *mris = NULL;
+ list_sched_selector_t sel;
+
+ /* Select a scheduler based on backend options */
+ switch (list_sched_options.select) {
+ case BE_SCHED_SELECT_TRIVIAL:
+ memcpy(&sel, trivial_selector, sizeof(sel));
+ break;
+ case BE_SCHED_SELECT_RANDOM:
+ memcpy(&sel, random_selector, sizeof(sel));
+ break;
+ case BE_SCHED_SELECT_REGPRESS:
+ memcpy(&sel, reg_pressure_selector, sizeof(sel));
+ break;
+ case BE_SCHED_SELECT_MUCHNIK:
+ memcpy(&sel, muchnik_selector, sizeof(sel));
+ break;
+ case BE_SCHED_SELECT_HEUR:
+ memcpy(&sel, heuristic_selector, sizeof(sel));
+ break;
+ case BE_SCHED_SELECT_HMUCHNIK:
+ default:
+ memcpy(&sel, trivial_selector, sizeof(sel));
+ }
+
+ /* Assure, that the out edges are computed */
+ edges_deactivate(birg->irg);
+ edges_activate(birg->irg);
+
+ switch (list_sched_options.prep) {
+ case BE_SCHED_PREP_MRIS:
+ mris = be_sched_mris_preprocess(birg);
+ break;
+ case BE_SCHED_PREP_RSS:
+ rss_schedule_preparation(birg);
+ break;
+ default:
+ break;