X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fir%2Firdump.c;h=4be2f5e67101fddacb8f05807df80222db806a78;hb=672b5c243e900427b5dcae01441d4fa3327d692c;hp=081072008e78419fc35e27b4e725bef6878fdab8;hpb=5ae1785fc181c0155b50fcee26cadf7194cb72d6;p=libfirm diff --git a/ir/ir/irdump.c b/ir/ir/irdump.c index 081072008..4be2f5e67 100644 --- a/ir/ir/irdump.c +++ b/ir/ir/irdump.c @@ -58,6 +58,7 @@ #include "irhooks.h" #include "dbginfo_t.h" #include "irtools.h" +#include "irprintf.h" #include "irvrfy.h" @@ -732,15 +733,11 @@ int dump_node_opcode(FILE *F, ir_node *n) /* implementation for default nodes */ switch (get_irn_opcode(n)) { - case iro_Const: { - int res; - char buf[1024]; - res = tarval_snprintf(buf, sizeof(buf), get_Const_tarval(n)); - assert(res < (int) sizeof(buf) && "buffer to small for tarval_snprintf"); - fprintf(F, buf); - } break; + case iro_Const: + ir_fprintf(F, "%T", get_Const_tarval(n)); + break; - case iro_SymConst: { + case iro_SymConst: switch (get_SymConst_kind(n)) { case symconst_addr_name: /* don't use get_SymConst_ptr_info as it mangles the name. */ @@ -768,14 +765,14 @@ int dump_node_opcode(FILE *F, ir_node *n) fprintf(F, "SymC %lu label", get_SymConst_label(n)); break; } - } break; + break; - case iro_Filter: { + case iro_Filter: if (!get_interprocedural_view()) fprintf(F, "Proj'"); else goto default_case; - } break; + break; case iro_Proj: { ir_node *pred = get_Proj_pred(n); @@ -790,20 +787,20 @@ int dump_node_opcode(FILE *F, ir_node *n) case iro_Start: case iro_End: case iro_EndExcept: - case iro_EndReg: { + case iro_EndReg: if (get_interprocedural_view()) { fprintf(F, "%s %s", get_irn_opname(n), get_ent_dump_name(get_irg_entity(get_irn_irg(n)))); break; } else goto default_case; - } + case iro_CallBegin: { ir_node *addr = get_CallBegin_ptr(n); ir_entity *ent = NULL; if (get_irn_op(addr) == op_Sel) ent = get_Sel_entity(addr); - else if (is_SymConst_addr_ent(addr)) - ent = get_SymConst_entity(addr); + else if (is_Global(addr)) + ent = get_Global_entity(addr); fprintf(F, "%s", get_irn_opname(n)); if (ent) fprintf(F, " %s", get_entity_name(ent)); break; @@ -922,7 +919,6 @@ static const pns_lookup_t start_lut[] = { #define X(a) { pn_Start_##a, #a } X(X_initial_exec), X(P_frame_base), - X(P_globals), X(P_tls), X(T_args), X(P_value_arg_base) @@ -2290,25 +2286,21 @@ void dump_loop_nodes_into_graph(FILE *F, ir_graph *irg) { /** * dumps the VCG header */ -void dump_vcg_header(FILE *F, const char *name, const char *orientation) { +void dump_vcg_header(FILE *F, const char *name, const char *layout, const char *orientation) { int i; char *label; init_colors(); - if (edge_label) { - label = "yes"; - } else { - label = "no"; - } - + label = edge_label ? "yes" : "no"; + if (! layout) layout = "Compilergraph"; if (!orientation) orientation = "bottom_to_top"; /* print header */ fprintf(F, "graph: { title: \"ir graph of %s\"\n" "display_edge_labels: %s\n" - "layoutalgorithm: mindepth\n" + "layoutalgorithm: mindepth //$ \"%s\"\n" "manhattan_edges: yes\n" "port_sharing: no\n" "orientation: %s\n" @@ -2337,10 +2329,10 @@ void dump_vcg_header(FILE *F, const char *name, const char *orientation) { "infoname 1: \"Attribute\"\n" "infoname 2: \"Verification errors\"\n" "infoname 3: \"Debug info\"\n", - name, label, orientation); + name, label, layout, orientation); for (i = 0; i < ird_color_count; ++i) { - if(color_rgb[i] != NULL) { + if (color_rgb[i] != NULL) { fprintf(F, "colorentry %s: %s\n", color_names[i], color_rgb[i]); } } @@ -2487,7 +2479,7 @@ void dump_ir_graph_file(ir_graph *irg, FILE *out) construct_backedges(irg); } - dump_vcg_header(out, get_irg_dump_name(irg), NULL); + dump_vcg_header(out, get_irg_dump_name(irg), NULL, NULL); /* call the dump graph hook */ if (dump_ir_graph_hook) { @@ -2518,7 +2510,7 @@ void dump_ir_block_graph_file(ir_graph *irg, FILE *out) { int i; - dump_vcg_header(out, get_irg_dump_name(irg), NULL); + dump_vcg_header(out, get_irg_dump_name(irg), NULL, NULL); construct_block_lists(irg); @@ -2553,7 +2545,7 @@ void dump_ir_extblock_graph_file(ir_graph *irg, FILE *F) if (get_irg_extblk_state(irg) != extblk_valid) compute_extbb(irg); - dump_vcg_header(F, get_irg_dump_name(irg), NULL); + dump_vcg_header(F, get_irg_dump_name(irg), NULL, NULL); construct_extblock_lists(irg); @@ -2612,7 +2604,7 @@ void dump_ir_graph_w_types_file(ir_graph *irg, FILE *out) /* dumping types does not work with local nodes */ dump_const_local = 0; - dump_vcg_header(out, get_irg_dump_name(irg), NULL); + dump_vcg_header(out, get_irg_dump_name(irg), NULL, NULL); /* dump common ir graph */ irg_walk(get_irg_end(irg), NULL, dump_whole_node, out); @@ -2644,7 +2636,7 @@ void dump_ir_block_graph_w_types_file(ir_graph *irg, FILE *out) /* dumping types does not work with local nodes */ dump_const_local = 0; - dump_vcg_header(out, get_irg_dump_name(irg), NULL); + dump_vcg_header(out, get_irg_dump_name(irg), NULL, NULL); /* dump common blocked ir graph */ construct_block_lists(irg); @@ -2765,7 +2757,7 @@ void dump_cfg(ir_graph *irg, const char *suffix) #endif current_ir_graph = irg; - dump_vcg_header(f, get_irg_dump_name(irg), NULL); + dump_vcg_header(f, get_irg_dump_name(irg), NULL, NULL); #ifdef INTERPROCEDURAL_VIEW if (ipv) { @@ -2814,7 +2806,7 @@ void dump_subgraph(ir_node *root, int depth, const char *suffix) { F = vcg_open(get_irn_irg(root), suffix, buf); if (F != NULL) { pset *mark_set = pset_new_ptr(1); - dump_vcg_header(F, get_irg_dump_name(get_irn_irg(root)), NULL); + dump_vcg_header(F, get_irg_dump_name(get_irn_irg(root)), NULL, NULL); descend_and_dump(F, root, depth, mark_set); dump_vcg_footer(F); fclose(F); @@ -2911,7 +2903,7 @@ dump_type_graph(ir_graph *irg, const char *suffix) ir_graph *rem = current_ir_graph; current_ir_graph = irg; - dump_vcg_header(f, get_irg_dump_name(irg), NULL); + dump_vcg_header(f, get_irg_dump_name(irg), "Hierarchic", NULL); /* walk over the blocks in the graph */ type_walk_irg(irg, dump_type_info, NULL, f); @@ -2932,7 +2924,7 @@ dump_all_types(const char *suffix) { FILE *f = vcg_open_name("All_types", suffix); if (f) { - dump_vcg_header(f, "All_types", NULL); + dump_vcg_header(f, "All_types", "Hierarchic", NULL); type_walk(dump_type_info, NULL, f); inc_irg_visited(get_const_code_irg()); @@ -2950,7 +2942,7 @@ dump_class_hierarchy(int entities, const char *suffix) h_env_t env; env.f = f; env.dump_ent = entities; - dump_vcg_header(f, "class_hierarchy", NULL); + dump_vcg_header(f, "class_hierarchy", "Hierarchic", NULL); type_walk(dump_class_hierarchy_node, NULL, &env); dump_vcg_footer(f); @@ -2988,15 +2980,14 @@ void dump_loops_standalone(FILE *F, ir_loop *loop) { dump_loop_node(F, loop); /* Dump the loop elements. */ - - for(i = 0; i < get_loop_n_elements(loop); i++) { + for (i = 0; i < get_loop_n_elements(loop); i++) { le = get_loop_element(loop, i); son = le.son; if (get_kind(son) == k_ir_loop) { /* We are a loop son -> Recurse */ - if(loop_node_started) { /* Close the "firm-nodes" node first if we started one. */ + if (loop_node_started) { /* Close the "firm-nodes" node first if we started one. */ fprintf(F, "\" }\n"); fprintf(F, "edge: {sourcename: \""); PRINT_LOOPID(loop); @@ -3031,7 +3022,7 @@ void dump_loops_standalone(FILE *F, ir_loop *loop) { assert(get_kind(son) == k_ir_graph); /* We are a loop node -> Collect firm graphs */ - n = (ir_graph *)le.node; + n = le.irg; if (!loop_node_started) { /* Start a new node which contains all firm nodes of the current loop */ fprintf(F, "node: { title: \""); @@ -3072,9 +3063,10 @@ void dump_loop_tree(ir_graph *irg, const char *suffix) current_ir_graph = irg; edge_label = 1; - dump_vcg_header(f, get_irg_dump_name(irg), "top_to_bottom"); + dump_vcg_header(f, get_irg_dump_name(irg), "Tree", "top_to_bottom"); - if (get_irg_loop(irg)) dump_loops_standalone(f, get_irg_loop(irg)); + if (get_irg_loop(irg)) + dump_loops_standalone(f, get_irg_loop(irg)); dump_vcg_footer(f); fclose(f); @@ -3087,7 +3079,7 @@ void dump_loop_tree(ir_graph *irg, const char *suffix) void dump_callgraph_loop_tree(const char *suffix) { FILE *F; F = vcg_open_name("Callgraph_looptree", suffix); - dump_vcg_header(F, "callgraph looptree", "top_to_bottom"); + dump_vcg_header(F, "callgraph looptree", "Tree", "top_to_bottom"); dump_loops_standalone(F, irp->outermost_cg_loop); dump_vcg_footer(F); fclose(F); @@ -3151,7 +3143,7 @@ void dump_loop(ir_loop *l, const char *suffix) { eset *extnodes = eset_create(); ir_node *n, *b; - dump_vcg_header(F, name, NULL); + dump_vcg_header(F, name, NULL, NULL); /* collect all nodes to dump */ collect_nodeloop(F, l, loopnodes);