X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=include%2Flibfirm%2Firdump.h;h=ba17cda6f19c9d60f9467c20c5e243f59c046ee9;hb=5bfb295525b0e0811b61106bb47375e2aaf77c54;hp=3b33984576d72398c3ffd8cbe99d74316fe95b32;hpb=bc6a704a4833b7f9462546f15d11a75ec301d037;p=libfirm diff --git a/include/libfirm/irdump.h b/include/libfirm/irdump.h index 3b3398457..ba17cda6f 100644 --- a/include/libfirm/irdump.h +++ b/include/libfirm/irdump.h @@ -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 + +#include "firm_types.h" /** * Symbolic names for the different dumping colors. @@ -170,8 +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_file (ir_graph *irg, FILE *out); +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. * @@ -190,12 +190,18 @@ void dump_ir_graph_file (ir_graph *irg, FILE *out); * * @see turn_off_edge_labels() */ -void dump_ir_block_graph (ir_graph *irg, const char *suffix); -void dump_ir_block_graph_file (ir_graph *irg, FILE *out); +void dump_ir_block_graph(ir_graph *irg, const char *suffix); + +/** + * Does the same as dump_ir_block_graph but dumps to a stream + * @see dump_ir_block_graph() + */ +void dump_ir_block_graph_file(ir_graph *irg, FILE *out); /** Dump a firm graph without explicit block nodes but grouped in extended blocks. * - * @param irg The firm graph to be dumped. + * @param irg The firm graph to be dumped. + * @param suffix suffix to append after the irgname (but before the .vcg) * * @return * A file containing the firm graph in vcg format. @@ -209,10 +215,15 @@ void dump_ir_block_graph_file (ir_graph *irg, FILE *out); * * @see turn_off_edge_labels() */ -void dump_ir_extblock_graph (ir_graph *irg, const char *suffix); -void dump_ir_extblock_graph_file (ir_graph *irg, FILE *out); +void dump_ir_extblock_graph(ir_graph *irg, const char *suffix); -/** Dumps all graphs in interprocedural view to a file named All_graphs.vcg. +/** + * Does the same as dump_ir_extrblock_graph but dumps to a stream + * @see dump_ir_extblock_graph() + */ +void dump_ir_extblock_graph_file(ir_graph *irg, FILE *out); + +/** Dumps all graphs in interprocedural view to a file named All_graphs\.vcg. * * @param suffix A suffix for the file name. */ @@ -233,8 +244,13 @@ 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_file (ir_graph *irg, FILE *out); +void dump_ir_graph_w_types(ir_graph *irg, const char *suffix); + +/** + * Does the same as dump_ir_graph_w_types but dumps to a stream + * @see dump_ir_graph_w_types() + */ +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. @@ -252,7 +268,14 @@ void dump_ir_graph_w_types_file (ir_graph *irg, FILE *out); * * @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); + +/** + * same as @see dump_ir_block_graph_w_types() but dumps to a stream + * @param irg the graph to dump + * @param out stream to dump to + */ +void dump_ir_block_graph_w_types_file(ir_graph *irg, FILE *out); /** The type of a dump function that is called for each graph. * @@ -280,8 +303,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. @@ -299,7 +333,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. @@ -310,13 +344,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_.vcg. nr is a unique number + * in, suffix and the ending -subg_\.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 */ @@ -325,7 +359,7 @@ void dump_subgraph (ir_node *root, int depth, const char *suffix); /** Dump the call graph. * - * Dumps the callgraph to a file "Callgraph"".vcg". + * Dumps the callgraph to a file "Callgraph"\".vcg". * * @param suffix A suffix for the file name. * @@ -353,7 +387,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. @@ -370,7 +404,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. @@ -389,7 +423,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 */ @@ -398,7 +432,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 - * -looptree.vcg + * \\-looptree.vcg * Turns on edge labels by default. * * Implementing this dumper was stimulated by Florian Liekwegs similar dumper. @@ -411,17 +445,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_.vcg. + * The name of the file is loop_\.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.vcg". + * The filename is "Callgraph_looptree\.vcg". * * @param suffix A suffix for the file name. */ @@ -435,11 +469,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. @@ -459,7 +493,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 - * .txt. + * \.txt. */ void dump_graph_as_text(ir_graph *irg, const char *suffix); @@ -478,7 +512,6 @@ typedef enum { dump_verbosity_entconsts = 0x00000020, /**< Dump entity constants. */ dump_verbosity_accessStats = 0x00000100, /**< Dump entity access statistics. */ - dump_verbosity_csv = 0x00000200, /**< Dump access statistics as comma separated list. */ dump_verbosity_noClassTypes = 0x00001000, /**< Dump no class types. */ dump_verbosity_noStructTypes = 0x00002000, /**< Dump no struct types. */ @@ -507,20 +540,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. @@ -532,19 +565,20 @@ 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 -types.txt. + * if the program name is not set, appended by \-types.txt. * For verbosity see the documentation of the verbosity flags above. */ void dump_types_as_text(unsigned verbosity, const char *suffix); /** Dumps all global variables as text. * - * @param suffix A suffix for the file name. + * @param verbosity verbosity flag + * @param suffix A suffix for the file name. * * 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 -globals.txt. + * if the program name is not set, appended by \-globals.txt. * For verbosity see the documentation of the verbosity flags above. */ void dump_globals_as_text(unsigned verbosity, const char *suffix); @@ -636,6 +670,11 @@ void dump_backedge_information(int flag); */ void set_opt_dump_analysed_type_info(int flag); +/** + * dump iredges (new style out edges) + */ +void dump_new_edges(int flag); + /** Write the address of a node into the vcg info. * * This is off per default for automatic comparisons of