From: Sebastian Buchwald Date: Mon, 21 Sep 2009 08:05:26 +0000 (+0000) Subject: Connect Projs and their predecessors by nearedges instead of edges. X-Git-Url: http://nsz.repo.hu/git/?a=commitdiff_plain;h=d24f219deba0e488d5412f2b2b18953209ff4cef;p=libfirm Connect Projs and their predecessors by nearedges instead of edges. [r26555] --- diff --git a/ir/ir/irdump.c b/ir/ir/irdump.c index 58a057948..862b58b32 100644 --- a/ir/ir/irdump.c +++ b/ir/ir/irdump.c @@ -329,6 +329,19 @@ static void print_vcg_color(FILE *F, ird_color_t color) { fprintf(F, "color:%s", color_names[color]); } +/** + * Prints the edge kind of a given IR node. + * + * Projs should be dumped near their predecessor, so they get "nearedge". + */ +static void print_node_edge_kind(FILE *F, ir_node *node) { + if (is_Proj(node)) { + fprintf(F, "nearedge: "); + } else { + fprintf(F, "edge: "); + } +} + /** * Prints the edge from a type S to a type T with additional info fmt, ... * to the file F. @@ -1577,7 +1590,8 @@ static void dump_ir_data_edges(FILE *F, ir_node *n) { ir_node *dep = get_irn_dep(n, i); if (dep) { - fprintf(F, "edge: {sourcename: \""); + print_node_edge_kind(F, n); + fprintf(F, "{sourcename: \""); PRINT_NODEID(n); fprintf(F, "\" targetname: "); if ((get_opt_dump_const_local()) && is_constlike_node(dep)) { @@ -1602,8 +1616,10 @@ static void dump_ir_data_edges(FILE *F, ir_node *n) { if (dump_backedge_information_flag && is_backedge(n, i)) fprintf(F, "backedge: {sourcename: \""); - else - fprintf(F, "edge: {sourcename: \""); + else { + print_node_edge_kind(F, n); + fprintf(F, "{sourcename: \""); + } PRINT_NODEID(n); fprintf(F, "\" targetname: "); if ((get_opt_dump_const_local()) && is_constlike_node(pred)) { @@ -1638,7 +1654,8 @@ dump_ir_edges(FILE *F, ir_node *n) { foreach_out_edge(n, edge) { ir_node *succ = get_edge_src_irn(edge); - fprintf(F, "edge: {sourcename: \""); + print_node_edge_kind(F, succ); + fprintf(F, "{sourcename: \""); PRINT_NODEID(n); fprintf(F, "\" targetname: \""); PRINT_NODEID(succ); @@ -2210,7 +2227,8 @@ dump_out_edge(ir_node *n, void *env) { for (i = get_irn_n_outs(n) - 1; i >= 0; --i) { ir_node *succ = get_irn_out(n, i); assert(succ); - fprintf(F, "edge: {sourcename: \""); + print_node_edge_kind(F, succ); + fprintf(F, "{sourcename: \""); PRINT_NODEID(n); fprintf(F, "\" targetname: \""); PRINT_NODEID(succ);