}
+static DUMP_NODE_EDGE_FUNC dump_block_edge_hook = NULL;
+
+void set_dump_block_edge_hook(DUMP_NODE_EDGE_FUNC func)
+{
+ dump_block_edge_hook = func;
+}
+
+DUMP_NODE_EDGE_FUNC get_dump_block_edge_hook(void)
+{
+ return dump_node_edge_hook;
+}
+
+
/** The vcg node attribute hook. */
static DUMP_IR_GRAPH_FUNC dump_ir_graph_hook = NULL;
/** The vcg node attribute hook. */
X(X_initial_exec),
X(P_frame_base),
X(P_globals),
+ X(P_tls),
X(T_args),
X(P_value_arg_base)
#undef X
X(M),
X(X_except),
X(res),
- X(M_except)
#undef X
};
/* dump the blocks edges */
dump_ir_data_edges(F, block);
+ if (dump_block_edge_hook)
+ dump_block_edge_hook(F, block);
+
/* dump the nodes that go into the block */
for (node = ird_get_irn_link(block); node; node = ird_get_irn_link(node)) {
dump_node(F, node);
/* @@@ some consts have an entity */
break;
case iro_SymConst:
- if ( (get_SymConst_kind(n) ==symconst_type_tag)
- || (get_SymConst_kind(n) ==symconst_size))
- {
- print_node_type_edge(F,n,get_SymConst_type(n),NODE2TYPE_EDGE_ATTR);
- }
+ if (SYMCONST_HAS_TYPE(get_SymConst_kind(n)))
+ print_node_type_edge(F,n,get_SymConst_type(n),NODE2TYPE_EDGE_ATTR);
break;
case iro_Sel: {
print_node_ent_edge(F,n,get_Sel_entity(n),NODE2TYPE_EDGE_ATTR);
if (!suffix2) suffix2 = "";
/* open file for vcg graph */
- fname = malloc (len * 2 + strlen(suffix1) + strlen(suffix2) + 5);
+ fname = xmalloc (len * 2 + strlen(suffix1) + strlen(suffix2) + 5);
/* strncpy (fname, nm, len); */ /* copy the filename */
j = 0;