+ be_numbering_init();
+ be_ra_chordal_init();
+ be_copy_opt_init();
+ copystat_init();
+}
+
+static be_main_env_t *be_init_env(be_main_env_t *env)
+{
+ const arch_isa_if_t *isa = &firm_isa;
+
+ obstack_init(&env->obst);
+
+ env->arch_env = obstack_alloc(&env->obst, sizeof(env->arch_env[0]));
+ arch_env_init(env->arch_env, isa);
+ env->arch_env->isa->init();
+
+ env->node_factory = obstack_alloc(&env->obst, sizeof(*env->node_factory));
+ be_node_factory_init(env->node_factory, isa);
+
+ arch_env_add_irn_handler(env->arch_env, &firm_irn_handler);
+ arch_env_add_irn_handler(env->arch_env,
+ be_node_get_irn_handler(env->node_factory));
+
+ return env;
+}
+
+static be_main_session_env_t *
+be_init_session_env(be_main_session_env_t *env,
+ be_main_env_t *main_env, ir_graph *irg)
+{
+ env->main_env = main_env;
+ env->irg = irg;
+
+ return env;
+}
+
+static void prepare_graph(be_main_session_env_t *s)
+{
+ /*
+ * Duplicate consts in each block
+ * (This is just for the firm dummy backend)
+ */
+ // localize_consts(s->irg);
+
+ /* Remove critical edges */
+ remove_critical_cf_edges(s->irg);
+
+ /* Compute the dominance information. */
+ free_dom_and_peace(s->irg);
+ compute_doms(s->irg);
+
+ /* Compute the dominance frontiers */
+ s->dom_front = be_compute_dominance_frontiers(s->irg);
+
+ /* Ensure, that the ir_edges are computed. */
+ edges_assure(s->irg);
+
+ /* Compute loop nesting information (for weighting copies) */
+ if (get_irg_loopinfo_state(s->irg) != (loopinfo_valid & loopinfo_cf_consistent))
+ construct_cf_backedges(s->irg);
+
+ dump_dominator_information(true);
+ dump_ir_block_graph(s->irg, "-prepared");
+ dump_dominator_information(false);