X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fbe%2Fbeirgmod.c;h=7afcb798bcc9c856ae0b45c34955e4ce5659d095;hb=1161999117f5c0f56b3af2dc9bb7150e03761905;hp=1c25d4421b27e41407dc2ef5f494e18ebab25e63;hpb=e61bf2102fdc3449fe191bb84e35b1581372eec6;p=libfirm diff --git a/ir/be/beirgmod.c b/ir/be/beirgmod.c index 1c25d4421..7afcb798b 100644 --- a/ir/be/beirgmod.c +++ b/ir/be/beirgmod.c @@ -36,7 +36,7 @@ #include "beirgmod.h" -#define DBG_MODULE firm_dbg_register("firm.be.irgmod") +#define DBG_MODULE "firm.be.irgmod" #define DBG_LEVEL SET_LEVEL_0 /* @@ -135,38 +135,40 @@ pset *be_get_dominance_frontier(dom_front_info_t *info, ir_node *block) return pmap_get(info->df_map, block); } -static void determine_phi_blocks(pset *copies, pset* copy_blocks, pset *phi_blocks, dom_front_info_t *df_info) +static void determine_phi_blocks(pset *copies, pset *copy_blocks, pset *phi_blocks, dom_front_info_t *df_info) { 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. - */ + * Fill the worklist queue and the rest of the orig blocks array. + */ for(bl = pset_first(copy_blocks); bl; bl = pset_next(copy_blocks)) { pdeq_putr(worklist, bl); } - while(!pdeq_empty(worklist)) { + while (!pdeq_empty(worklist)) { ir_node *bl = pdeq_getl(worklist); pset *df = be_get_dominance_frontier(df_info, bl); ir_node *y; DBG((dbg, LEVEL_3, "dom front of %+F\n", bl)); - for(y = pset_first(df); y; y = pset_next(df)) - DBG((dbg, LEVEL_3, "\t%+F\n", y)); + DEBUG_ONLY( + for (y = pset_first(df); y; y = pset_next(df)) + DBG((dbg, LEVEL_3, "\t%+F\n", y)) + ); for(y = pset_first(df); y; y = pset_next(df)) { if(!pset_find_ptr(phi_blocks, y)) { pset_insert_ptr(phi_blocks, y); /* - * Clear the link field of a possible phi block, since - * the possibly created phi will be stored there. See, - * search_def() - */ + * Clear the link field of a possible phi block, since + * the possibly created phi will be stored there. See, + * search_def() + */ set_irn_link(y, NULL); if(!pset_find_ptr(copy_blocks, y)) @@ -199,7 +201,7 @@ static void determine_phi_blocks(pset *copies, pset* copy_blocks, pset *phi_bloc * * The usage is given as a node and a position. Initially, the given operand * points to a node for which copies were introduced. We have to find - * the valid copy for this usage. This is done by travering the + * the valid copy for this usage. This is done by traversing the * dominance tree upwards. If the usage is a phi function, we start * traversing from the predecessor block which corresponds to the phi * usage. @@ -217,7 +219,7 @@ static ir_node *search_def(ir_node *usage, int pos, pset *copies, pset *copy_blo { 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); @@ -297,29 +299,28 @@ static ir_node *search_def(ir_node *usage, int pos, pset *copies, pset *copy_blo 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; struct obstack obst; ir_node *irn; int i; - struct out { ir_node *irn; int pos; } *outs; + FIRM_DBG_REGISTER(firm_dbg_module_t *dbg, DBG_MODULE); + obstack_init(&obst); /* - * Put all outs into an array. - * This is necessary, since the outs would be modified while - * iterating on them what could bring the outs module in trouble. - */ - for(irn = pset_first(copies); irn; irn = pset_next(copies)) { + * Put all outs into an array. + * This is necessary, since the outs would be modified while + * iterating on them what could bring the outs module in trouble. + */ + for (irn = pset_first(copies); irn; irn = pset_next(copies)) { const ir_edge_t *edge; foreach_out_edge(irn, edge) { - if(!pset_find_ptr(ignore_uses, get_edge_src_irn(edge))) { + if (!pset_find_ptr(ignore_uses, get_edge_src_irn(edge))) { struct out tmp; tmp.irn = get_edge_src_irn(edge); tmp.pos = get_edge_src_pos(edge); @@ -402,7 +403,6 @@ void be_ssa_constr_ignore(dom_front_info_t *info, int n, ir_node *nodes[], pset void be_ssa_constr(dom_front_info_t *info, int n, ir_node *nodes[]) { pset *empty_set = be_empty_set(); - assert(pset_count(empty_set) == 0); be_ssa_constr_ignore(info, n, nodes, empty_set); } @@ -413,11 +413,10 @@ void be_ssa_constr_set_phis_ignore(dom_front_info_t *df, pset *nodes, pset *phis 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; - firm_dbg_set_mask(dbg, DBG_LEVEL); DBG((dbg, LEVEL_1, "Introducing following copies for:\n")); /* Fill the sets. */ @@ -428,15 +427,15 @@ void be_ssa_constr_set_phis_ignore(dom_front_info_t *df, pset *nodes, pset *phis } /* - * Disable optimization so that the phi functions do not - * disappear. - */ + * Disable optimization so that the phi functions do not + * disappear. + */ set_optimize(0); set_opt_normalize(0); /* - * Place the phi functions and reroute the usages. - */ + * Place the phi functions and reroute the usages. + */ determine_phi_blocks(nodes, blocks, phi_blocks, df); fix_usages(nodes, blocks, phi_blocks, phis, ignore_uses); @@ -452,9 +451,7 @@ void be_ssa_constr_set_phis_ignore(dom_front_info_t *df, pset *nodes, pset *phis void be_ssa_constr_set_phis(dom_front_info_t *df, pset *nodes, pset *phis) { pset *empty_set = be_empty_set(); - assert(pset_count(empty_set) == 0); - - be_ssa_constr_set_phis_ignore(df, nodes,phis, empty_set); + be_ssa_constr_set_phis_ignore(df, nodes, phis, empty_set); } void be_ssa_constr_set_ignore(dom_front_info_t *df, pset *nodes, pset *ignore_uses) @@ -465,7 +462,6 @@ void be_ssa_constr_set_ignore(dom_front_info_t *df, pset *nodes, pset *ignore_us void be_ssa_constr_set(dom_front_info_t *info, pset *nodes) { pset *empty_set = be_empty_set(); - assert(pset_count(empty_set) == 0); be_ssa_constr_set_ignore(info, nodes, empty_set); } @@ -486,7 +482,7 @@ ir_node *insert_Perm_after(const arch_env_t *arch_env, 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;