env->dce_survivor = new_survive_dce();
env->birg = birg;
- env->dbg = firm_dbg_register("firm.be.abi");
env->stack_phis = pset_new_ptr(16);
env->init_sp = dummy = new_r_Unknown(irg, env->isa->sp->reg_class->mode);
+ FIRM_DBG_REGISTER(env->dbg, "firm.be.abi");
env->cb = env->call->cb->init(env->call, birg->main_env->arch_env, irg);
static void constraints(ir_node *bl, void *data)
{
be_chordal_alloc_env_t *env = data;
- firm_dbg_module_t *dbg = firm_dbg_register("firm.be.chordal.constr");
arch_env_t *arch_env = env->chordal_env->birg->main_env->arch_env;
+ FIRM_DBG_REGISTER(firm_dbg_module_t *dbg, "firm.be.chordal.constr");
/*
Start silent in the start block.
env.in_colors = bitset_alloca(colors_n);
env.ignore_regs = bitset_alloca(colors_n);
env.pre_colored = pset_new_ptr_default();
- env.constr_dbg = firm_dbg_register("firm.be.chordal.constr");
+ FIRM_DBG_REGISTER(env.constr_dbg, "firm.be.chordal.constr");
for(i = 0; i < colors_n; ++i)
if(arch_register_type_is(&chordal_env->cls->regs[i], ignore))
chordal_env.opts = &options;
chordal_env.irg = irg;
- chordal_env.dbg = firm_dbg_register("firm.be.chordal");
- chordal_env.birg = bi;
+ chordal_env.birg = bi;
chordal_env.dom_front = be_compute_dominance_frontiers(irg);
+ FIRM_DBG_REGISTER(chordal_env.dbg, "firm.be.chordal");
obstack_init(&chordal_env.obst);
int co_solve_heuristic(copy_opt_t *co) {
unit_t *curr;
- dbg = firm_dbg_register("ir.be.copyoptheur");
+ FIRM_DBG_REGISTER(dbg, "ir.be.copyoptheur");
ASSERT_OU_AVAIL(co);
my.first_x_var = -1;
my.last_x_var = -1;
my.nr_2_irn = pmap_create();
- my.dbg = firm_dbg_register("ir.be.coilp2");
+ FIRM_DBG_REGISTER(my.dbg, "ir.be.coilp2");
firm_dbg_set_mask(my.dbg, DEBUG_LVL);
ienv = new_ilp_env(co, ilp2_build, ilp2_apply, &my);
int len;
copy_opt_t *co;
- dbg = firm_dbg_register("ir.be.copyopt");
+ FIRM_DBG_REGISTER(dbg, "ir.be.copyopt");
co = xcalloc(1, sizeof(*co));
co->cenv = chordal_env;
static ir_graph *last_irg;
void copystat_init(void) {
- dbg = firm_dbg_register("ir.be.copystat");
+ FIRM_DBG_REGISTER(dbg, "ir.be.copystat");
firm_dbg_set_mask(dbg, DEBUG_LVL);
all_phi_nodes = pset_new_ptr_default();
#include "beirgmod.h"
-#define DBG_MODULE firm_dbg_register("firm.be.irgmod")
+#define DBG_MODULE "firm.be.irgmod"
#define DBG_LEVEL SET_LEVEL_0
/*
{
ir_node *bl;
pdeq *worklist = new_pdeq();
- firm_dbg_module_t *dbg = DBG_MODULE;
+ FIRM_DBG_REGISTER(firm_dbg_module_t *dbg, DBG_MODULE);
/*
* Fill the worklist queue and the rest of the orig blocks array.
{
ir_node *curr_bl;
ir_node *start_irn;
- firm_dbg_module_t *dbg = DBG_MODULE;
+ FIRM_DBG_REGISTER(firm_dbg_module_t *dbg, DBG_MODULE);
curr_bl = get_nodes_block(usage);
static void fix_usages(pset *copies, pset *copy_blocks, pset *phi_blocks, pset *phis, pset *ignore_uses)
{
- firm_dbg_module_t *dbg = DBG_MODULE;
- int n_outs = 0;
+ int n_outs = 0;
+ FIRM_DBG_REGISTER(firm_dbg_module_t *dbg, DBG_MODULE);
struct obstack obst;
ir_node *irn;
pset *phi_blocks = pset_new_ptr(n);
int save_optimize = get_optimize();
int save_normalize = get_opt_normalize();
- firm_dbg_module_t *dbg = DBG_MODULE;
+ FIRM_DBG_REGISTER(firm_dbg_module_t *dbg, DBG_MODULE);
ir_node *irn;
ir_node *bl = is_Block(pos) ? pos : get_nodes_block(pos);
ir_graph *irg = get_irn_irg(bl);
pset *live = pset_new_ptr_default();
- firm_dbg_module_t *dbg = firm_dbg_register("be.node");
+ FIRM_DBG_REGISTER(firm_dbg_module_t *dbg, "be.node");
ir_node *curr, *irn, *perm, **nodes;
int i, n;
INIT_LIST_HEAD(&info->list);
/* Initialize the block scheduling environment */
- be.dbg = firm_dbg_register("firm.be.sched");
be.block = block;
be.curr_time = 0;
be.ready_set = new_pset(node_cmp_func, get_irn_n_edges(block));
be.already_scheduled = new_pset(node_cmp_func, get_irn_n_edges(block));
be.selector = selector;
+ FIRM_DBG_REGISTER(be.dbg, "firm.be.sched");
if(selector->init_block)
be.selector_block_env = selector->init_block(env->selector_env, block);
pset *be_liveness_transfer(const arch_env_t *arch_env, const arch_register_class_t *cls, ir_node *irn, pset *live)
{
- firm_dbg_module_t *dbg = firm_dbg_register(DBG_MODULE);
int i, n;
ir_node *x;
+ FIRM_DBG_REGISTER(firm_dbg_module_t *dbg, DBG_MODULE);
DBG((dbg, LEVEL_1, "%+F\n", irn));
for(x = pset_first(live); x; x = pset_next(live))
pset *be_liveness_nodes_live_at(const arch_env_t *arch_env, const arch_register_class_t *cls, const ir_node *pos, pset *live)
{
- firm_dbg_module_t *dbg = firm_dbg_register(DBG_MODULE);
- const ir_node *bl = is_Block(pos) ? pos : get_nodes_block(pos);
+ const ir_node *bl = is_Block(pos) ? pos : get_nodes_block(pos);
ir_node *irn;
be_liveness_end_of_block(arch_env, cls, bl, live);
-
sched_foreach_reverse(bl, irn) {
/*
* If we encounter the node we want to insert the Perm after,
const arch_env_t *arch_env = birg->main_env->arch_env;
ir_node *in[2], *keep, *cpy, *temp;
ir_node *block = get_nodes_block(irn);
- firm_dbg_module_t *mod = firm_dbg_register("firm.be.lower");
const arch_register_class_t *cls = arch_get_irn_reg_class(arch_env, other_different, -1);
+ FIRM_DBG_REGISTER(firm_dbg_module_t *mod, "firm.be.lower");
if (arch_irn_is(arch_env, other_different, ignore) || ! mode_is_datab(get_irn_mode(other_different))) {
DBG((mod, LEVEL_1, "ignore constraint for %+F because other_irn is ignore or not a datab node\n", irn));
env.chord_env = chord_env;
env.do_copy = do_copy;
- env.dbg_module = firm_dbg_register("firm.be.lower");
+ FIRM_DBG_REGISTER(env.dbg_module, "firm.be.lower");
irg_walk_blkwise_graph(chord_env->irg, NULL, lower_nodes_after_ra_walker, &env);
}
#include "bearch.h"
#include "firm/bearch_firm.h"
#include "ia32/bearch_ia32.h"
+#include "arm/bearch_arm.h"
+#include "ppc32/bearch_ppc32.h"
+#include "mips/bearch_mips.h"
#include "be_t.h"
#include "benumb_t.h"
#include "beabi.h"
#include "belower.h"
-#define DUMP_INITIAL (1 << 0)
-#define DUMP_ABI (1 << 1)
-#define DUMP_SCHED (1 << 2)
-#define DUMP_PREPARED (1 << 3)
-#define DUMP_RA (1 << 4)
-#define DUMP_FINAL (1 << 5)
+#define DUMP_INITIAL (1 << 0)
+#define DUMP_ABI (1 << 1)
+#define DUMP_SCHED (1 << 2)
+#define DUMP_PREPARED (1 << 3)
+#define DUMP_RA (1 << 4)
+#define DUMP_FINAL (1 << 5)
/* options visible for anyone */
static be_options_t be_options = {
static const lc_opt_enum_const_ptr_items_t isa_items[] = {
{ "firm", &firm_isa },
{ "ia32", &ia32_isa_if },
+ { "arm", &arm_isa_if },
+ { "ppc", &ppc32_isa_if },
+ { "mips", &mips_isa_if },
{ NULL, NULL }
};
{
memset(env, 0, sizeof(*env));
obstack_init(&env->obst);
- env->dbg = firm_dbg_register("be.main");
env->arch_env = obstack_alloc(&env->obst, sizeof(env->arch_env[0]));
env->options = &be_options;
+ FIRM_DBG_REGISTER(env->dbg, "be.main");
arch_env_init(env->arch_env, isa_if);
raenv.aenv = env->arch_env;
raenv.dom_info = be_compute_dominance_frontiers(irg);
raenv.vars = new_set(compare_var_infos, 64);
- raenv.dbg = firm_dbg_register("ir.be.raextern");
+ FIRM_DBG_REGISTER(raenv.dbg, "ir.be.raextern");
firm_dbg_set_mask(raenv.dbg, DBG_LEVEL);
/* Insert copies for constraints */
/* Init the scheduling stuff. */
void be_sched_init(void)
{
+ FIRM_DBG_REGISTER(firm_dbg_module_t *dbg, "be.sched");
sched_irn_data_offset = register_additional_node_data(sizeof(sched_info_t));
- firm_dbg_register("be.sched");
}
void sched_renumber(const ir_node *block)
/* Verify a schedule. */
int sched_verify(const ir_node *block)
{
- firm_dbg_module_t *dbg_sched = firm_dbg_register("be.sched");
int res = 1;
const ir_node *irn;
int i, n;
const ir_node **save_nodes;
const ir_edge_t *edge;
pset *scheduled_nodes = pset_new_ptr_default();
+ FIRM_DBG_REGISTER(firm_dbg_module_t *dbg_sched, "be.sched");
firm_dbg_set_mask(dbg_sched, -1);
ssenv.cenv = cenv;
ssenv.slots = pmap_create();
ssenv.types = pmap_create();
- ssenv.dbg = firm_dbg_register("ir.be.spillslots");
+ FIRM_DBG_REGISTER(ssenv.dbg, "ir.be.spillslots");
/* Get initial spill slots */
irg_walk_graph(cenv->irg, NULL, compute_spill_slots_walker, &ssenv);
void be_spill_belady(const be_chordal_env_t *chordal_env) {
belady_env_t bel;
- dbg = firm_dbg_register("ir.be.spillbelady");
+ FIRM_DBG_REGISTER(dbg, "ir.be.spillbelady");
/* init belady env */
obstack_init(&bel.ob);
memset(&si.stats, 0, sizeof(si.stats));
si.chordal_env = chordal_env;
si.obst = &obst;
- si.dbg = firm_dbg_register("be.ra.spillilp");
si.senv = be_new_spill_env(si.dbg, chordal_env, is_mem_phi, &si);
si.cls = chordal_env->cls;
si.lpp = new_lpp(problem_name, lpp_minimize);
si.edges = NULL;
si.enable_remat = 0;
si.enable_store = 1;
+ FIRM_DBG_REGISTER(si.dbg, "be.ra.spillilp");
firm_dbg_set_mask(si.dbg, DBG_LEVEL);
irg_block_walk_graph(chordal_env->irg, process_block, NULL, &si);
pmap *perm_map = pmap_create();
ir_graph *irg = chordal_env->irg;
- dbg = firm_dbg_register("ir.be.ssadestr");
+ FIRM_DBG_REGISTER(dbg, "ir.be.ssadestr");
/* create a map for fast lookup of perms: block --> perm */
chordal_env->data = perm_map;
uses->arch_env = arch_env;
uses->uses = new_set(cmp_use, 512);
- uses->dbg = firm_dbg_register("be.uses");
uses->irg = irg;
+ FIRM_DBG_REGISTER(uses->dbg, "be.uses");
firm_dbg_set_mask(uses->dbg, DBG_LEVEL);
return uses;