remove the unused 'ident' type, remove tpo_max add tpo_last
[libfirm] / include / libfirm / irdump.h
index ce55590..45de03e 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 1995-2007 University of Karlsruhe.  All right reserved.
+ * Copyright (C) 1995-2008 University of Karlsruhe.  All right reserved.
  *
  * This file is part of libFirm.
  *
@@ -22,7 +22,7 @@
  * @brief   Write vcg representation of firm to file.
  * @author  Martin Trapp, Christian Schaefer, Goetz Lindenmaier, Hubert Schmidt
  * @version $Id$
- * @summary
+ * @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
@@ -41,9 +41,9 @@
 #ifndef FIRM_IR_IRDUMP_H
 #define FIRM_IR_IRDUMP_H
 
-#include "irnode.h"
-#include "irgraph.h"
-#include "irloop.h"
+#include <stdio.h>
+
+#include "firm_types.h"
 
 /**
  * Symbolic names for the different dumping colors.
@@ -62,6 +62,7 @@ typedef enum ird_color_t {
        ird_color_proj,
        ird_color_uses_memory,
        ird_color_error,
+       ird_color_entity,
        ird_color_count
 } ird_color_t;
 
@@ -169,7 +170,8 @@ DUMP_NODE_EDGE_FUNC get_dump_block_edge_hook(void);
  *
  * @see turn_off_edge_labels()
  */
-void dump_ir_graph (ir_graph *irg, const char *suffix);
+void dump_ir_graph(ir_graph *irg, const char *suffix);
+void dump_ir_graph_file(ir_graph *irg, FILE *out);
 
 /** Dump a firm graph without explicit block nodes.
  *
@@ -188,7 +190,8 @@ void dump_ir_graph (ir_graph *irg, const char *suffix);
  *
  * @see turn_off_edge_labels()
  */
-void dump_ir_block_graph (ir_graph *irg, const char *suffix);
+void dump_ir_block_graph(ir_graph *irg, const char *suffix);
+void dump_ir_block_graph_file(ir_graph *irg, FILE *out);
 
 /** Dump a firm graph without explicit block nodes but grouped in extended blocks.
  *
@@ -206,9 +209,10 @@ void dump_ir_block_graph (ir_graph *irg, const char *suffix);
  *
  * @see turn_off_edge_labels()
  */
-void dump_ir_extblock_graph (ir_graph *irg, const char *suffix);
+void dump_ir_extblock_graph(ir_graph *irg, const char *suffix);
+void dump_ir_extblock_graph_file(ir_graph *irg, FILE *out);
 
-/** Dumps all graphs in interprocedural view to a file named All_graphs<suffix>.vcg.
+/** Dumps all graphs in interprocedural view to a file named All_graphs\<suffix\>.vcg.
  *
  * @param suffix  A suffix for the file name.
  */
@@ -229,7 +233,8 @@ void dump_all_cg_block_graph(const char *suffix);
  *
  * @see turn_off_edge_labels()
  */
-void dump_ir_graph_w_types (ir_graph *irg, const char *suffix);
+void dump_ir_graph_w_types(ir_graph *irg, const char *suffix);
+void dump_ir_graph_w_types_file(ir_graph *irg, FILE *out);
 
 /** Dumps a firm graph and  all the type information needed for Calls,
  *  Sels, ... in this graph.
@@ -247,7 +252,7 @@ void dump_ir_graph_w_types (ir_graph *irg, const char *suffix);
  *
  * @see turn_off_edge_labels()
  */
-void dump_ir_block_graph_w_types (ir_graph *irg, const char *suffix);
+void dump_ir_block_graph_w_types(ir_graph *irg, const char *suffix);
 
 /** The type of a dump function that is called for each graph.
  *
@@ -275,8 +280,19 @@ typedef void dump_graph_func(ir_graph *irg, const char *suffix);
  *
  * @see turn_off_edge_labels()
  */
-void dump_all_ir_graphs (dump_graph_func *dump_graph, const char *suffix);
+void dump_all_ir_graphs(dump_graph_func *dump_graph, const char *suffix);
 
+/**
+ * Creates an ir_prog pass for dump_all_ir_graphs().
+ *
+ * @param name          the name of this pass or NULL
+ * @param dump_graph    The dumper to be used for dumping.
+ * @param suffix        A suffix for the file name.
+ *
+ * @return  the newly created ir_prog pass
+ */
+ir_prog_pass_t *dump_all_ir_graph_pass(
+       const char *name, dump_graph_func *dump_graph, const char *suffix);
 
 /**
  * Dump the control flow graph of a procedure.
@@ -294,7 +310,7 @@ void dump_all_ir_graphs (dump_graph_func *dump_graph, const char *suffix);
  *
  * @see turn_off_edge_labels()
  */
-void dump_cfg (ir_graph *irg, const char *suffix);
+void dump_cfg(ir_graph *irg, const char *suffix);
 
 /**
  * Dump a node and its predecessors forming a subgraph to a vcg file.
@@ -305,13 +321,13 @@ void dump_cfg (ir_graph *irg, const char *suffix);
  *
  * Dumps the graph to a file.  The file name is constructed from the
  * name of the entity describing the procedure the passed node is
- * in, suffix and the ending -subg_<nr>.vcg.  nr is a unique number
+ * in, suffix and the ending -subg_\<nr\>.vcg.  nr is a unique number
  * for each graph dumped. Eventually overwrites existing files.
  *
  * @return
  *      A file containing the subgraph in vcg format.
  */
-void dump_subgraph (ir_node *root, int depth, const char *suffix);
+void dump_subgraph(ir_node *root, int depth, const char *suffix);
 
 /* **************************************************************************** */
 /*                              CALLGRAPH DUMPERS                               */
@@ -320,7 +336,7 @@ void dump_subgraph (ir_node *root, int depth, const char *suffix);
 
 /** Dump the call graph.
  *
- * Dumps the callgraph to a file "Callgraph"<suffix>".vcg".
+ * Dumps the callgraph to a file "Callgraph"\<suffix\>".vcg".
  *
  * @param suffix A suffix for the file name.
  *
@@ -348,7 +364,7 @@ void dump_callgraph(const char *suffix);
  *
  * @see turn_off_edge_labels()
  */
-void dump_type_graph (ir_graph *irg, const char *suffix);
+void dump_type_graph(ir_graph *irg, const char *suffix);
 
 /**
  * Dumps all type information.
@@ -365,7 +381,7 @@ void dump_type_graph (ir_graph *irg, const char *suffix);
  *
  * @see turn_off_edge_labels()
  */
-void dump_all_types (const char *suffix);
+void dump_all_types(const char *suffix);
 
 /**
  * Dumps the class hierarchy with or without entities.
@@ -384,7 +400,7 @@ void dump_all_types (const char *suffix);
  * is dumped along with the entities.
  * Dumps to a file class_hierarchy.vcg
  */
-void dump_class_hierarchy (int entities, const char *suffix);
+void dump_class_hierarchy(int entities, const char *suffix);
 
 /* **************************************************************************** */
 /*                              LOOPTREE DUMPERS                                */
@@ -393,7 +409,7 @@ void dump_class_hierarchy (int entities, const char *suffix);
 /**
  * Dump a standalone loop tree, which contains the loop nodes and the firm nodes
  * belonging to one loop packed together in one subgraph.  Dumps to file
- * <name of irg><suffix>-looptree.vcg
+ * \<name of irg\>\<suffix\>-looptree.vcg
  * Turns on edge labels by default.
  *
  * Implementing this dumper was stimulated by Florian Liekwegs similar dumper.
@@ -406,17 +422,17 @@ void dump_loop_tree(ir_graph *irg, const char *suffix);
 /** Dumps the firm nodes in the sub-loop-tree of loop to a graph.
  *
  * Dumps the loop nodes if dump_loop_information() is set.
- * The name of the file is loop_<loop_nr><suffix>.vcg.
+ * The name of the file is loop_<loop_nr>\<suffix\>.vcg.
  *
  * @param l       Dump the loop tree for this loop.
  * @param suffix  A suffix for the file name.
  */
-void dump_loop (ir_loop *l, const char *suffix);
+void dump_loop(ir_loop *l, const char *suffix);
 
 /** Dumps the loop tree over the call graph.
  *
  * See for yourself what you can use this for.
- * The filename is "Callgraph_looptree<suffix>.vcg".
+ * The filename is "Callgraph_looptree\<suffix\>.vcg".
  *
  * @param suffix  A suffix for the file name.
  */
@@ -430,11 +446,11 @@ void dump_callgraph_loop_tree(const char *suffix);
 
 /** Write the irnode and all its attributes to the file passed.
  * */
-int dump_irnode_to_file (FILE *f, ir_node *n);
+int dump_irnode_to_file(FILE *f, ir_node *n);
 
 /** Write the irnode and all its attributes to stdout.
  *  */
-void dump_irnode (ir_node *n);
+void dump_irnode(ir_node *n);
 
 /** Write the graph and all its attributes to the file passed.
  *  Does not write the nodes.
@@ -454,7 +470,7 @@ void dump_graph(ir_graph *g);
  *  but the relations between the nodes only implicitly.
  *
  *  The file name is the graph name (get_entity_name()), appended by
- *  <suffix>.txt.
+ *  \<suffix\>.txt.
  */
 void dump_graph_as_text(ir_graph *irg, const char *suffix);
 
@@ -502,20 +518,20 @@ typedef enum {
 
 /** Write the entity and all its attributes to the passed file.
  *  */
-void    dump_entity_to_file (FILE *F, ir_entity *ent, unsigned verbosity);
+void    dump_entity_to_file(FILE *F, ir_entity *ent, unsigned verbosity);
 
 /** Write the entity and all its attributes to the stdout.
  *
  *  Calls dump_entity_to_file().  */
-void    dump_entity (ir_entity *ent);
+void    dump_entity(ir_entity *ent);
 
 /** Write the type and all its attributes to the file passed.
  * */
-void    dump_type_to_file (FILE *f, ir_type *tp, dump_verbosity verbosity);
+void    dump_type_to_file(FILE *f, ir_type *tp, dump_verbosity verbosity);
 
 /** Write the type and all its attributes to stdout.
  *  */
-void    dump_type (ir_type *tp);
+void    dump_type(ir_type *tp);
 
 
 /** Dump type information as text.
@@ -527,7 +543,7 @@ void    dump_type (ir_type *tp);
  *  the global type nor frame types or the like.
  *
  *  The file name is the program name (get_irp_name()), or 'TextTypes'
- *  if the program name is not set, appended by <suffix>-types.txt.
+ *  if the program name is not set, appended by \<suffix\>-types.txt.
  *  For verbosity see the documentation of the verbosity flags above.
  */
 void dump_types_as_text(unsigned verbosity, const char *suffix);
@@ -539,7 +555,7 @@ void dump_types_as_text(unsigned verbosity, const char *suffix);
  * 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.
+ * 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);
@@ -588,12 +604,6 @@ void dump_consts_local(int flag);
  */
 void dump_node_idx_label(int flag);
 
-/**
- * Returns 0 if dump_out_edge_flag or dump_loop_information_flag
- * are set, else returns dump_const_local_flag.
- */
-int get_opt_dump_const_local(void);
-
 /**  Turns off dumping the values of constant entities. Makes type graphs
  *   better readable.
  */
@@ -657,6 +667,19 @@ void dump_ld_names(int flag);
  */
 void dump_all_anchors(int flag);
 
+/** Dumps a MacroBlock edge from every Block to its
+ * MacroBlock header.
+ *
+ * This option is off per default.
+ */
+void dump_macroblock_edges(int flag);
+
+/** Dumps a marked blocks with a asterisk in the title.
+ *
+ * This option is off per default.
+ */
+void dump_block_marker_in_title(int flag);
+
 /** A node info dumper callback. */
 typedef void (dump_node_info_cb_t)(void *data, FILE *f, const ir_node *n);