#define DUMP_INITIAL (1 << 0)
#define DUMP_SCHED (1 << 1)
#define DUMP_PREPARED (1 << 2)
#define DUMP_INITIAL (1 << 0)
#define DUMP_SCHED (1 << 1)
#define DUMP_PREPARED (1 << 2)
/* register allocator to use. */
static const be_ra_t *ra = &be_ra_chordal_allocator;
/* back end instruction set architecture to use */
/* register allocator to use. */
static const be_ra_t *ra = &be_ra_chordal_allocator;
/* back end instruction set architecture to use */
{ "initial", DUMP_INITIAL },
{ "sched", DUMP_SCHED },
{ "prepared", DUMP_PREPARED },
{ "initial", DUMP_INITIAL },
{ "sched", DUMP_SCHED },
{ "prepared", DUMP_PREPARED },
/* register allocators */
static const lc_opt_enum_const_ptr_items_t ra_items[] = {
{ "chordal", &be_ra_chordal_allocator },
/* register allocators */
static const lc_opt_enum_const_ptr_items_t ra_items[] = {
{ "chordal", &be_ra_chordal_allocator },
- LC_OPT_ENT_ENUM_MASK("dump", "dump irg on several occasions", &dump_var),
- LC_OPT_ENT_ENUM_PTR("ra", "register allocator", &ra_var),
- LC_OPT_ENT_ENUM_PTR("isa", "the instruction set architecture", &isa_var),
+ LC_OPT_ENT_ENUM_MASK("dump", "dump irg on several occasions", &dump_var),
+ LC_OPT_ENT_ENUM_PTR("ra", "register allocator", &ra_var),
+ LC_OPT_ENT_ENUM_PTR("isa", "the instruction set architecture", &isa_var),
- LC_OPT_ENT_STR ("ilp.server", "the ilp server name", be_options.ilp_server, sizeof(be_options.ilp_server)),
- LC_OPT_ENT_STR ("ilp.solver", "the ilp solver name", be_options.ilp_solver, sizeof(be_options.ilp_solver)),
+ LC_OPT_ENT_STR ("ilp.server", "the ilp server name", be_options.ilp_server, sizeof(be_options.ilp_server)),
+ LC_OPT_ENT_STR ("ilp.solver", "the ilp solver name", be_options.ilp_solver, sizeof(be_options.ilp_solver)),
* This irn handler takes care of the platform independent
* spill, reload and perm nodes.
*/
* This irn handler takes care of the platform independent
* spill, reload and perm nodes.
*/
- env->node_factory = obstack_alloc(&env->obst, sizeof(*env->node_factory));
- be_node_factory_init(env->node_factory, env->arch_env->isa);
- arch_env_add_irn_handler(env->arch_env, be_node_get_irn_handler(env->node_factory));
+ arch_env_add_irn_handler(env->arch_env, &be_node_irn_handler);
for(i = 0, n = get_irp_n_irgs(); i < n; ++i) {
ir_graph *irg = get_irp_irg(i);
for(i = 0, n = get_irp_n_irgs(); i < n; ++i) {
ir_graph *irg = get_irp_irg(i);
DBG((env.dbg, LEVEL_2, "====> IRG: %F\n", irg));
dump(DUMP_INITIAL, irg, "-begin", dump_ir_block_graph);
DBG((env.dbg, LEVEL_2, "====> IRG: %F\n", irg));
dump(DUMP_INITIAL, irg, "-begin", dump_ir_block_graph);
/* create the code generator and generate code. */
prepare_graph(&env, irg);
/* create the code generator and generate code. */
prepare_graph(&env, irg);
dump(DUMP_PREPARED, irg, "-prepared", dump_ir_block_graph);
/* Schedule the graphs. */
dump(DUMP_PREPARED, irg, "-prepared", dump_ir_block_graph);
/* Schedule the graphs. */
list_sched(isa, irg);
dump(DUMP_SCHED, irg, "-sched", dump_ir_block_graph_sched);
list_sched(isa, irg);
dump(DUMP_SCHED, irg, "-sched", dump_ir_block_graph_sched);
- arch_code_generator_done(cg);
+ dump(DUMP_RA, irg, "-ra", dump_ir_block_graph_sched);
+
+ arch_code_generator_done(env.cg);
dump(DUMP_FINAL, irg, "-end", dump_ir_block_graph_sched);
}
be_done_env(&env);
}
dump(DUMP_FINAL, irg, "-end", dump_ir_block_graph_sched);
}
be_done_env(&env);
}