/** Set the node_vcgattr hook. */
void set_dump_node_vcgattr_hook(DUMP_NODE_VCGATTR_FUNC hook);
+typedef int (*DUMP_NODE_EDGE_FUNC)(FILE *f, ir_node *node);
+
+/**
+ * Set the hook to be called to dump additional edges to a node.
+ * @param func The hook to be called.
+ */
+void set_dump_node_edge_hook(DUMP_NODE_EDGE_FUNC func);
+
+/**
+ * Get the additional edge dump hook.
+ * @return The current additional edge dump hook.]
+ */
+DUMP_NODE_EDGE_FUNC get_dump_node_edge_hook(void);
+
/** Dump a firm graph.
*
* @param irg The firm graph to be dumped.
*/
void dump_ir_block_graph (ir_graph *irg, const char *suffix);
+/** Dump a firm graph without explicit block nodes but grouped in extended blocks.
+ *
+ * @param irg The firm graph to be dumped.
+ *
+ * @return
+ * A file containing the firm graph in vcg format.
+ *
+ * Dumps all Firm nodes of a single graph for a single procedure in
+ * extended xvcg format.
+ * Dumps the graph to a file. The file name is constructed from the
+ * name of the entity describing the procedure (irg->entity) and the
+ * ending <-ip>.vcg. Eventually overwrites existing files. Dumps several
+ * procedures in boxes if interprocedural_view.
+ *
+ * @see turn_off_edge_labels()
+ */
+void dump_ir_extblock_graph (ir_graph *irg, const char *suffix);
+
/** Dumps all graphs in interprocedural view to a file named All_graphs.vcg.
*/
void dump_all_cg_block_graph(const char *suffix);
/** Dump the call graph.
*
* Dumps the callgraph to a file "Callgraph"<suffix>".vcg".
+ *
+ * @see dump_callgraph_loop_tree(const char *suffix)
*/
void dump_callgraph(const char *suffix);
/** Dumps all global variables as text.
*
+ * Dumps a text representation of the entities in the global type.
+ *
+ * The file name is the program name (get_irp_name()), or 'TextTypes'
+ * if the program name is not set, appended by <suffix>-globals.txt.
+ * For verbosity see the documentation of the verbosity flags above.
*/
void dump_globals_as_text(unsigned verbosity, const char *suffix);
/** Sets the vcg flag "display_edge_labels" to no.
*
* This is necessary as xvcg and aisee both fail to display graphs
- * with self-edges if these edges have lables.
+ * with self-edges if these edges have labels.
*/
void turn_off_edge_labels(void);
/** Turns on dumping the out edges starting from the Start block in
* dump_ir_graph.
*
- * To test the consistency of the out datastructure.
+ * To test the consistency of the out data structure.
*/
void dump_out_edges(bool b);