From: Christian Würdig Date: Thu, 16 Mar 2006 14:23:36 +0000 (+0000) Subject: added new dump wrapper X-Git-Url: http://nsz.repo.hu/git/?a=commitdiff_plain;h=a5b4eea4c9905472176af8a4392b5938ed321727;p=libfirm added new dump wrapper --- diff --git a/ir/be/beutil.c b/ir/be/beutil.c index 935612ef5..6dc2e4bfd 100644 --- a/ir/be/beutil.c +++ b/ir/be/beutil.c @@ -150,6 +150,28 @@ void dump_ir_block_graph_sched(ir_graph *irg, const char *suffix) { set_dump_node_edge_hook(old); } +/** + * Dumps a graph and numbers all dumps. + * @param irg The graph + * @param suffix A suffix to its file name. + * @param dumper The dump function + */ +void be_dump(ir_graph *irg, const char *suffix, void (*dumper)(ir_graph *, const char *)) { + static ir_graph *last_irg = NULL; + static int nr = 0; + char buf[128]; + + if (irg != last_irg) { + last_irg = irg; + nr = 0; + } + + snprintf(buf, sizeof(buf), "-%02d%s", nr++, suffix); + dumper(irg, buf); +} + + + static void clear_link(ir_node *irn, void *data) { set_irn_link(irn, NULL); diff --git a/ir/be/beutil.h b/ir/be/beutil.h index 122e217fc..d44902dcd 100644 --- a/ir/be/beutil.h +++ b/ir/be/beutil.h @@ -101,7 +101,16 @@ static INLINE FILE *ffopen(const char *base, const char *ext, const char *mode) */ void dump_ir_block_graph_sched(ir_graph *irg, const char *suffix); -#endif +/** + * Dumps a graph and numbers all dumps. + * @param irg The graph + * @param suffix A suffix to its file name. + * @param dumper The dump function + */ +void be_dump(ir_graph *irg, const char *suffix, void (*dumper)(ir_graph *, const char *)); + + +#endif /* _BEUTIL_H */ /** * Search for an irn in @p accept. diff --git a/ir/be/ia32/bearch_ia32.c b/ir/be/ia32/bearch_ia32.c index baea4cdfd..306dfaa7f 100644 --- a/ir/be/ia32/bearch_ia32.c +++ b/ir/be/ia32/bearch_ia32.c @@ -353,7 +353,7 @@ static void ia32_prepare_graph(void *self) { cg->mod = firm_dbg_register("firm.be.ia32.transform"); irg_walk_blkwise_graph(cg->irg, ia32_place_consts_set_modes, ia32_transform_node, cg); - dump_ir_block_graph_sched(cg->irg, "-transformed"); + be_dump(cg->irg, "-transformed", dump_ir_block_graph_sched); edges_deactivate(cg->irg); dead_node_elimination(cg->irg); @@ -363,7 +363,7 @@ static void ia32_prepare_graph(void *self) { if (cg->opt.doam) { irg_walk_blkwise_graph(cg->irg, NULL, ia32_optimize_am, cg); - dump_ir_block_graph_sched(cg->irg, "-am"); + be_dump(cg->irg, "-am", dump_ir_block_graph_sched); } } @@ -589,7 +589,7 @@ static void ia32_codegen(void *self) { } ia32_finish_irg(irg, cg); - dump_ir_block_graph_sched(irg, "-finished"); + be_dump(irg, "-finished", dump_ir_block_graph_sched); ia32_gen_routine(out, irg, cg); cur_reg_set = NULL;