X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fir%2Firdump.c;h=c96bdb8409ccf1ed641811b15eac51e02fa0e6ed;hb=26baaebd4406b34b8b04ef441d4e45e23c10a747;hp=d3da52ca044eaf53936fd1ccd9980cfb8e509ac6;hpb=890851125bcd47d1e55a1ed713111c899ad737ea;p=libfirm diff --git a/ir/ir/irdump.c b/ir/ir/irdump.c index d3da52ca0..c96bdb840 100644 --- a/ir/ir/irdump.c +++ b/ir/ir/irdump.c @@ -608,9 +608,7 @@ static void collect_node(ir_node * node, void *env) { (void) env; if (is_Block(node) || node_floats(node) - || get_irn_op(node) == op_Bad - || get_irn_op(node) == op_Unknown - || get_irn_op(node) == op_NoMem) { + || (get_op_flags(get_irn_op(node)) & irop_flag_dump_noblock)) { ir_node ** arr = (ir_node **) ird_get_irg_link(get_irn_irg(node)); if (!arr) arr = NEW_ARR_F(ir_node *, 0); ARR_APP1(ir_node *, arr, node); @@ -1445,18 +1443,26 @@ static void dump_node(FILE *F, ir_node *n) return; /* dump this node */ - fprintf(F, "node: {title: \""); PRINT_NODEID(n); fprintf(F, "\" label: \""); + fputs("node: {title: \"", F); + PRINT_NODEID(n); + fputs("\"", F); + fputs(" label: \"", F); bad = ! irn_vrfy_irg_dump(n, current_ir_graph, &p); bad |= dump_node_label(F, n); dump_node_ana_vals(F, n); //dump_node_ana_info(F, n); - fprintf(F, "\" "); + fputs("\" ", F); + + if (get_op_flags(get_irn_op(n)) & irop_flag_dump_noinput) { + //fputs(" node_class:23", F); + } + bad |= dump_node_info(F, n); print_node_error(F, p); print_dbg_info(F, get_irn_dbg_info(n)); dump_node_vcgattr(F, n, NULL, bad); - fprintf(F, "}\n"); + fputs("}\n", F); dump_const_node_local(F, n); if(dump_node_edge_hook) @@ -2036,15 +2042,15 @@ static void dump_enum_item(FILE *F, ir_type *tp, int pos) /* dumps a type or entity and it's edges. */ static void -dump_type_info(type_or_ent *tore, void *env) { +dump_type_info(type_or_ent tore, void *env) { FILE *F = env; int i = 0; /* to shutup gcc */ /* dump this type or entity */ - switch (get_kind(tore)) { + switch (get_kind(tore.ent)) { case k_entity: { - ir_entity *ent = (ir_entity *)tore; + ir_entity *ent = tore.ent; ir_node *value; /* The node */ dump_entity_node(F, ent, 0); @@ -2086,7 +2092,7 @@ dump_type_info(type_or_ent *tore, void *env) { break; } case k_type: { - ir_type *tp = (ir_type *)tore; + ir_type *tp = tore.typ; dump_type_node(F, tp); /* and now the edges */ switch (get_type_tpop_code(tp)) { @@ -2153,17 +2159,18 @@ typedef struct _h_env { * If env->dump_ent dumps entities of classes and overwrites edges. */ static void -dump_class_hierarchy_node(type_or_ent *tore, void *ctx) { +dump_class_hierarchy_node(type_or_ent tore, void *ctx) { h_env_t *env = ctx; FILE *F = env->f; int i = 0; /* to shutup gcc */ /* dump this type or entity */ - switch (get_kind(tore)) { + switch (get_kind(tore.ent)) { case k_entity: { - ir_entity *ent = (ir_entity *)tore; + ir_entity *ent = tore.ent; if (get_entity_owner(ent) == get_glob_type()) break; - if (!is_Method_type(get_entity_type(ent))) break; /* GL */ + if (!is_Method_type(get_entity_type(ent))) + break; /* GL */ if (env->dump_ent && is_Class_type(get_entity_owner(ent))) { /* The node */ dump_entity_node(F, ent, 0); @@ -2175,8 +2182,9 @@ dump_class_hierarchy_node(type_or_ent *tore, void *ctx) { break; } case k_type: { - ir_type *tp = (ir_type *)tore; - if (tp == get_glob_type()) break; + ir_type *tp = tore.typ; + if (tp == get_glob_type()) + break; switch (get_type_tpop_code(tp)) { case tpo_class: dump_type_node(F, tp); @@ -2334,6 +2342,7 @@ void dump_vcg_header(FILE *F, const char *name, const char *layout, const char * "classname 20: \"Keep Alive\"\n" "classname 21: \"Out Edges\"\n" "classname 22: \"Macro Block Edges\"\n" + //"classname 23: \"NoInput Nodes\"\n" "infoname 1: \"Attribute\"\n" "infoname 2: \"Verification errors\"\n" "infoname 3: \"Debug info\"\n",