X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fir%2Firdump.c;h=b2ab4c6fa58c093c469e9f3215d33eaa914438a0;hb=fe6c9130a81330693ec34a0e2a261ccf47b48599;hp=e0704077b88299c95717aad7c475a085e31c35ea;hpb=15ad7ccd8dff64e1808e1d093d4a8d7cda5af33e;p=libfirm diff --git a/ir/ir/irdump.c b/ir/ir/irdump.c index e0704077b..b2ab4c6fa 100644 --- a/ir/ir/irdump.c +++ b/ir/ir/irdump.c @@ -404,7 +404,6 @@ static void print_enum_item_edge(FILE *F, const ir_type *tp, size_t item, const /* global and ahead declarations */ /*-----------------------------------------------------------------*/ -static void dump_node_with_edges(ir_node *n, void *env); static void dump_loop_nodes_into_graph(FILE *F, ir_graph *irg); /*-----------------------------------------------------------------*/ @@ -691,18 +690,16 @@ void dump_node_opcode(FILE *F, ir_node *n) } break; case iro_Load: - if (get_Load_align(n) == align_non_aligned) + if (get_Load_unaligned(n) == align_non_aligned) fprintf(F, "ua"); fprintf(F, "%s[%s]", get_irn_opname(n), get_mode_name_ex(get_Load_mode(n), NULL)); break; case iro_Store: - if (get_Store_align(n) == align_non_aligned) + if (get_Store_unaligned(n) == align_non_aligned) fprintf(F, "ua"); 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))) @@ -807,8 +804,8 @@ typedef struct proj_lookup { static const pns_lookup_t start_lut[] = { #define X(a) { pn_Start_##a, #a } X(X_initial_exec), + X(M), X(P_frame_base), - X(P_tls), X(T_args), #undef X }; @@ -828,7 +825,6 @@ static const pns_lookup_t call_lut[] = { X(X_regular), X(X_except), X(T_result), - X(P_value_res_base) #undef X }; @@ -1008,7 +1004,7 @@ static void dump_node_nodeattr(FILE *F, ir_node *n) break; default: - ; + break; } /* end switch */ } @@ -1100,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); @@ -1193,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); @@ -1562,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); @@ -1770,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); } @@ -1831,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; @@ -1924,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); } @@ -2189,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); } } @@ -2263,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); @@ -2337,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. */ @@ -2357,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: \""); @@ -2393,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: \""); @@ -2409,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); } @@ -2664,7 +2653,7 @@ void dump_loop(FILE *F, ir_loop *l) PRINT_NODEID(b); fprintf(F, "\" label: \""); dump_node_opcode(F, b); - fprintf(F, " %ld:%d", get_irn_node_nr(b), get_irn_idx(b)); + fprintf(F, " %ld:%u", get_irn_node_nr(b), get_irn_idx(b)); fprintf(F, "\" status:clustered color:yellow\n"); /* dump the blocks edges */ @@ -2691,7 +2680,7 @@ void dump_loop(FILE *F, ir_loop *l) PRINT_NODEID(b); fprintf(F, "\" label: \""); dump_node_opcode(F, b); - fprintf(F, " %ld:%d", get_irn_node_nr(b), get_irn_idx(b)); + fprintf(F, " %ld:%u", get_irn_node_nr(b), get_irn_idx(b)); fprintf(F, "\" status:clustered color:lightblue\n"); /* dump the nodes that go into the block */