make sure projs of projs are moved in part_block_edges
[libfirm] / ir / ir / irdump.c
index 71289d0..b2ab4c6 100644 (file)
@@ -700,8 +700,6 @@ void dump_node_opcode(FILE *F, ir_node *n)
                fprintf(F, "%s", get_irn_opname(n));
                break;
        case iro_Block:
-               if (is_Block_dead(n))
-                       fputs("Dead ", F);
                if (n == get_irg_start_block(get_irn_irg(n)))
                        fputs("Start ", F);
                if (n == get_irg_end_block(get_irn_irg(n)))
@@ -1006,7 +1004,7 @@ static void dump_node_nodeattr(FILE *F, ir_node *n)
                break;
 
        default:
-               ;
+               break;
        } /* end switch */
 }
 
@@ -1098,10 +1096,7 @@ static void dump_node_vcgattr(FILE *F, ir_node *node, ir_node *local, int bad)
                print_vcg_color(F, ird_color_error);
                break;
        case iro_Block:
-               if (is_Block_dead(n))
-                       print_vcg_color(F, ird_color_dead_block_background);
-               else
-                       print_vcg_color(F, ird_color_block_background);
+               print_vcg_color(F, ird_color_block_background);
                break;
        case iro_Phi:
                print_vcg_color(F, ird_color_phi);
@@ -1191,8 +1186,7 @@ static void dump_const_node_local(FILE *F, ir_node *n)
 
        for (i = 0; i < get_irn_arity(n); i++) {
                ir_node *con = get_irn_n(n, i);
-               if (is_constlike_node(con) && !irn_visited(con)) {
-                       mark_irn_visited(con);
+               if (is_constlike_node(con) && !irn_visited_else_mark(con)) {
                        /* Generate a new name for the node by appending the names of
                        n and const. */
                        fprintf(F, "node: {title: "); PRINT_CONSTID(n, con);
@@ -1560,8 +1554,6 @@ static void dump_whole_block(FILE *F, ir_node *block)
        /* colorize blocks */
        if (! get_Block_matured(block))
                color = ird_color_block_background;
-       if (is_Block_dead(block))
-               color = ird_color_dead_block_background;
 
        fprintf(F, "\" status:clustered ");
        print_vcg_color(F, color);
@@ -1768,11 +1760,11 @@ void dump_type_node(FILE *F, ir_type *tp)
 {
        fprintf(F, "node: {title: ");
        PRINT_TYPEID(tp);
-       fprintf(F, " label: \"%s ", get_type_tpop_name(tp));
+       fprintf(F, " label: \"");
        if (tp->dbi != NULL) {
-               char buf[256];
+               char buf[1024];
                ir_print_type(buf, sizeof(buf), tp);
-               fprintf(F, "'%s'", buf);
+               fprintf(F, "%s '%s'", get_type_tpop_name(tp), buf);
        } else {
                ir_fprintf(F, "%+F", tp);
        }
@@ -1829,7 +1821,9 @@ static void dump_entity_initializer(FILE *F, const ir_entity *ent)
        (void) ent;
 }
 
-/** Dumps a type or entity and its edges. */
+/**
+ * type-walker: Dumps a type or entity and its edges.
+ */
 static void dump_type_info(type_or_ent tore, void *env)
 {
        FILE *F = (FILE*)env;
@@ -1922,8 +1916,8 @@ static void dump_type_info(type_or_ent tore, void *env)
                                 --i;
                                upper = get_array_upper_bound(tp, i);
                                lower = get_array_lower_bound(tp, i);
-                               print_node_type_edge(F, upper, tp, "label: \"upper %d\"", get_array_order(tp, i));
-                               print_node_type_edge(F, lower, tp, "label: \"lower %d\"", get_array_order(tp, i));
+                               print_node_type_edge(F, upper, tp, "label: \"upper %zu\"", get_array_order(tp, i));
+                               print_node_type_edge(F, lower, tp, "label: \"lower %zu\"", get_array_order(tp, i));
                                dump_const_expression(F, upper);
                                dump_const_expression(F, lower);
                        }
@@ -2187,12 +2181,12 @@ static void dump_blocks_as_subgraphs(FILE *out, ir_graph *irg)
         * from irg.
         */
        for (i = get_irp_n_irgs(); i > 0;) {
-               ir_graph *irg = get_irp_irg(--i);
-               ir_node **arr = (ir_node**)ird_get_irg_link(irg);
+               ir_graph *other_irg = get_irp_irg(--i);
+               ir_node **arr = (ir_node**)ird_get_irg_link(other_irg);
                if (arr == NULL)
                        continue;
 
-               dump_graph_from_list(out, irg);
+               dump_graph_from_list(out, other_irg);
                DEL_ARR_F(arr);
        }
 }
@@ -2261,20 +2255,20 @@ static void dump_blocks_extbb_grouped(FILE *F, ir_graph *irg)
        print_dbg_info(F, get_entity_dbg_info(ent));
 
        for (i = get_irp_n_irgs(); i > 0;) {
-               ir_graph *irg     = get_irp_irg(--i);
-               list_tuple *lists = (list_tuple*)ird_get_irg_link(irg);
+               ir_graph   *other_irg = get_irp_irg(--i);
+               list_tuple *lists     = (list_tuple*)ird_get_irg_link(other_irg);
 
                if (lists) {
                        /* dump the extended blocks first */
                        if (ARR_LEN(lists->extbb_list)) {
-                               ird_set_irg_link(irg, lists->extbb_list);
-                               dump_extblock_graph(F, irg);
+                               ird_set_irg_link(other_irg, lists->extbb_list);
+                               dump_extblock_graph(F, other_irg);
                        }
 
                        /* we may have blocks without extended blocks, bad for instance */
                        if (ARR_LEN(lists->blk_list)) {
-                               ird_set_irg_link(irg, lists->blk_list);
-                               dump_block_graph(F, irg);
+                               ird_set_irg_link(other_irg, lists->blk_list);
+                               dump_block_graph(F, other_irg);
                        }
 
                        DEL_ARR_F(lists->extbb_list);
@@ -2335,8 +2329,11 @@ void dump_ir_graph_file(FILE *out, ir_graph *irg)
 static void dump_block_to_cfg(ir_node *block, void *env)
 {
        FILE *F = (FILE*)env;
-       int i, fl = 0;
-       ir_node *pred;
+       int i;
+
+       if (is_Bad(block) && get_irn_mode(block) == mode_X) {
+               dump_node(F, block);
+       }
 
        if (is_Block(block)) {
                /* This is a block. Dump a node for the block. */
@@ -2355,35 +2352,30 @@ static void dump_block_to_cfg(ir_node *block, void *env)
                /* the generic version. */
                dump_irnode_to_file(F, block);
 
-               /* Check whether we have bad predecessors to color the block. */
-               for (i = get_Block_n_cfgpreds(block) - 1; i >= 0; --i)
-                       if ((fl = is_Bad(get_Block_cfgpred(block, i))))
-                               break;
-
                fprintf(F, "\"");  /* closing quote of info */
 
                if ((block == get_irg_start_block(get_irn_irg(block))) ||
                        (block == get_irg_end_block(get_irn_irg(block)))     )
                        fprintf(F, " color:blue ");
-               else if (fl)
-                       fprintf(F, " color:yellow ");
 
                fprintf(F, "}\n");
+
                /* Dump the edges */
-               for (i = get_Block_n_cfgpreds(block) - 1; i >= 0; --i)
-                       if (!is_Bad(skip_Proj(get_Block_cfgpred(block, i)))) {
-                               pred = get_nodes_block(skip_Proj(get_Block_cfgpred(block, i)));
-                               fprintf(F, "edge: { sourcename: \"");
-                               PRINT_NODEID(block);
-                               fprintf(F, "\" targetname: \"");
-                               PRINT_NODEID(pred);
-                               fprintf(F, "\"}\n");
-                       }
+               for (i = get_Block_n_cfgpreds(block) - 1; i >= 0; --i) {
+                       ir_node *pred = get_Block_cfgpred(block, i);
+                       if (!is_Bad(pred))
+                               pred = get_nodes_block(pred);
+                       fprintf(F, "edge: { sourcename: \"");
+                       PRINT_NODEID(block);
+                       fprintf(F, "\" targetname: \"");
+                       PRINT_NODEID(pred);
+                       fprintf(F, "\"}\n");
+               }
 
                /* Dump dominator/postdominator edge */
                if (ir_get_dump_flags() & ir_dump_flag_dominance) {
                        if (get_irg_dom_state(current_ir_graph) == dom_consistent && get_Block_idom(block)) {
-                               pred = get_Block_idom(block);
+                               ir_node *pred = get_Block_idom(block);
                                fprintf(F, "edge: { sourcename: \"");
                                PRINT_NODEID(block);
                                fprintf(F, "\" targetname: \"");
@@ -2391,7 +2383,7 @@ static void dump_block_to_cfg(ir_node *block, void *env)
                                fprintf(F, "\" " DOMINATOR_EDGE_ATTR "}\n");
                        }
                        if (get_irg_postdom_state(current_ir_graph) == dom_consistent && get_Block_ipostdom(block)) {
-                               pred = get_Block_ipostdom(block);
+                               ir_node *pred = get_Block_ipostdom(block);
                                fprintf(F, "edge: { sourcename: \"");
                                PRINT_NODEID(block);
                                fprintf(F, "\" targetname: \"");
@@ -2407,8 +2399,7 @@ void dump_cfg(FILE *F, ir_graph *irg)
        dump_vcg_header(F, get_irg_dump_name(irg), NULL, NULL);
 
        /* walk over the blocks in the graph */
-       irg_block_walk(get_irg_end(irg), dump_block_to_cfg, NULL, F);
-       dump_node(F, get_irg_bad(irg));
+       irg_walk_graph(irg, dump_block_to_cfg, NULL, F);
 
        dump_vcg_footer(F);
 }