irverify: remove load/store from entity verification
[libfirm] / include / libfirm / irdump.h
index 04c69a0..51b2bc4 100644 (file)
  * @file
  * @brief   Write vcg representation of firm to file.
  * @author  Martin Trapp, Christian Schaefer, Goetz Lindenmaier, Hubert Schmidt
- * @version $Id$
- * @brief
- *  Dump routines for the ir graph and all type information.
- *
- *  The dump format of most functions is vcg.  This is a text based graph
- *  representation. Some use the original format,
- *  but most generate an extended format that is only read by some special
- *  versions of xvcg or by the comercialized version now calles aiSee.
- *  A test version of aiSee is available at
- *   http://www.absint.de/aisee/download/index.htm.
+ * @brief   Dump routines for the ir graph and all type information.
  *
- *  We have developed an own advanced viewer called ycomp:
- *    http://www.info.uni-karlsruhe.de/software/ycomp/
  */
 #ifndef FIRM_IR_IRDUMP_H
 #define FIRM_IR_IRDUMP_H
 #include "firm_types.h"
 #include "begin.h"
 
-/** @defgroup convenience_dumper   Convenience interface for dumpers */
-/*@{*/
+/** @defgroup ir_dump Visualisation
+ *
+ * Dumps information so it can be visualised. The dump format of most functions
+ * is vcg.  This is a text based graph representation. Some use the original
+ * format, but most generate an extended format that is only read by some
+ * special versions of xvcg or by the commercialized version now calles aiSee.
+ *
+ * A test version of aiSee is available at
+ *   http://www.absint.de/aisee/download/index.htm.
+ *
+ * We have developed an own advanced viewer called ycomp:
+ *   http://www.info.uni-karlsruhe.de/software/ycomp/
+ *@{
+ */
+
+/** @defgroup convenience Convenience Interface
+ * @{
+ */
 
 /**
  * Convenience interface for dumping a graph as vcg file.
@@ -66,7 +71,7 @@ typedef void (*ir_prog_dump_func)(FILE *out);
  * at @p mime_type.
  * The file is stored into the directory specified by #ir_set_dump_path
  *
- * @param func       Dumper. Usualle one of #dump_callgraph, #dump_typegraph,
+ * @param func       Dumper. Usually one of #dump_callgraph, #dump_typegraph,
  *                   #dump_class_hierarchy, #dump_types_as_text,
  *                   #dump_globals_as_text
  * @param suffix     Suffix to append to the name
@@ -106,7 +111,7 @@ FIRM_API void dump_all_ir_graphs(const char *suffix);
 FIRM_API void ir_set_dump_path(const char *path);
 
 /**
- * Set a prefix filter for output functions.
+ * Sets a prefix filter for output functions.
  *
  * All graph dumpers check this name.  If the name is != "" and
  * not a prefix of the graph to be dumped, the dumper does not
@@ -135,15 +140,6 @@ FIRM_API ir_prog_pass_t *dump_all_ir_graph_pass(const char *name,
 
 /*@}*/
 
-/**
- * @defgroup dumper     Dump information to file
- * This is the low-level interface for dumping information as text files
- * and xvcg graphs.
- * Normally you should use the convenience interface @ref convenience_dumper
- * instead of the functions in this group.
- */
-/*@{*/
-
 /**
  * Dumps all Firm nodes of a single graph for a single procedure in
  * standard xvcg format.
@@ -236,9 +232,6 @@ FIRM_API void dump_globals_as_text(FILE *out);
  */
 FIRM_API void dump_loop(FILE *out, ir_loop *loop);
 
-/** Write the irnode and all its attributes to the file passed. */
-FIRM_API void dump_irnode_to_file(FILE *out, ir_node *node);
-
 /** Write the graph and all its attributes to the file passed.
  *  Does not write the nodes. */
 FIRM_API void dump_graph_as_text(FILE *out, ir_graph *graph);
@@ -284,6 +277,7 @@ typedef enum {
 
        dump_verbosity_max                = 0x4FF00FBE   /**< Turn everything on */
 } ir_dump_verbosity_t;
+ENUM_BITSET(ir_dump_verbosity_t)
 
 /** override currently set text dump flags with new ones */
 FIRM_API void ir_set_dump_verbosity(ir_dump_verbosity_t verbosity);
@@ -298,8 +292,6 @@ FIRM_API ir_dump_verbosity_t ir_get_dump_verbosity(void);
 typedef enum {
        /** dump basic blocks as subgraphs which contain the nodes in the block */
        ir_dump_flag_blocks_as_subgraphs   = 1U << 0,
-       /** display blocks in extended basic grouped inside a subgraph */
-       ir_dump_flag_group_extbb           = 1U << 1,
        /** dump (parts of) typegraph along with nodes */
        ir_dump_flag_with_typegraph        = 1U << 2,
        /** Sets the vcg flag "display_edge_labels" to no.
@@ -343,6 +335,7 @@ typedef enum {
        /** dump entities in class hierarchies */
        ir_dump_flag_entities_in_hierarchy = 1U << 22,
 } ir_dump_flags_t;
+ENUM_BITSET(ir_dump_flags_t)
 
 /** override currently set dump flags with new ones */
 FIRM_API void ir_set_dump_flags(ir_dump_flags_t flags);
@@ -358,42 +351,46 @@ FIRM_API ir_dump_flags_t ir_get_dump_flags(void);
  * If this function returns zero, the default attributes are added, else
  * removed.
  */
-typedef int (*dump_node_vcgattr_func)(FILE *out, ir_node *node, ir_node *local);
+typedef int (*dump_node_vcgattr_func)(FILE *out, const ir_node *node, const ir_node *local);
 
 /**
  * This hook is called to dump the vcg attributes of an edge to a file.
  * If this function returns zero, the default attributes are added, else
  * removed.
  */
-typedef int (*dump_edge_vcgattr_func)(FILE *out, ir_node *node, int to);
+typedef int (*dump_edge_vcgattr_func)(FILE *out, const ir_node *node, int to);
 
-typedef void (*dump_node_edge_func)(FILE *out, ir_node *node);
+/**
+ * This hook allows dumping of additional edges (it is called outside a node: {}
+ * environment)
+ */
+typedef void (*dump_node_edge_func)(FILE *out, const ir_node *node);
 
-/** Set the node_vcgattr hook. */
+/** Sets the node_vcgattr hook. */
 FIRM_API void set_dump_node_vcgattr_hook(dump_node_vcgattr_func hook);
-/** Set the edge_vcgattr hook. */
+/** Sets the edge_vcgattr hook. */
 FIRM_API void set_dump_edge_vcgattr_hook(dump_edge_vcgattr_func hook);
 
 /**
- * Set the hook to be called to dump additional edges to a node.
+ * Sets the hook to be called to dump additional edges to a node.
  * @param func The hook to be called.
  */
 FIRM_API void set_dump_node_edge_hook(dump_node_edge_func func);
 
 /**
- * Get the additional edge dump hook.
+ * Returns the additional edge dump hook.
  * @return The current additional edge dump hook.]
  */
 FIRM_API dump_node_edge_func get_dump_node_edge_hook(void);
 
 /**
- * Set the hook to be called to dump additional edges to a block.
+ * Sets the hook to be called to dump additional edges to a block.
  * @param func The hook to be called.
  */
 FIRM_API void set_dump_block_edge_hook(dump_node_edge_func func);
 
 /**
- * Get the additional block edge dump hook.
+ * Returns the additional block edge dump hook.
  * @return The current additional block edge dump hook.
  */
 FIRM_API dump_node_edge_func get_dump_block_edge_hook(void);