+ * See for yourself what you can use this for.
+ * The filename is "Callgraph_looptree<suffix>.vcg".
+ *
+ * @param suffix A suffix for the file name.
+ */
+void dump_callgraph_loop_tree(const char *suffix);
+
+
+/* **************************************************************************** */
+/* TEXT DUMPERS */
+/* **************************************************************************** */
+
+
+/** Write the irnode and all its attributes to the file passed.
+ * */
+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);
+
+/** Write the graph and all its attributes to the file passed.
+ * Does not write the nodes.
+ * */
+void dump_graph_to_file(FILE *F, ir_graph *irg);
+
+/** Write the graph and all its attributes to stdout.
+ * Does not write the nodes.
+ * */
+void dump_graph(ir_graph *g);
+
+
+/** Dump graph information as text.
+ *
+ * Often graphs are unhandy in their vcg representation. The text
+ * dumper represents the information for the firm nodes more compact,
+ * but the relations between the nodes only implicitly.
+ *
+ * The file name is the graph name (get_entity_name()), appended by
+ * <suffix>.txt.
+ */
+void dump_graph_as_text(ir_graph *irg, const char *suffix);
+
+
+/** Verbosity for text dumpers */
+typedef enum {
+ dump_verbosity_onlynames = 0x00000001, /**< only dump names. turns off all other
+ flags up to 0x00010000. */
+ dump_verbosity_fields = 0x00000002, /**< dump types and fields (like a type declaration) */
+ dump_verbosity_methods = 0x00000004, /**< dump types and methods (like a type declaration) */
+ dump_verbosity_nostatic = 0x00000040, /**< dump types and dynamic allocated fields (like a
+ type declaration). This excludes methods and
+ static, polymorphic fields. */
+ dump_verbosity_typeattrs = 0x00000008, /**< dump all type attributes */
+ dump_verbosity_entattrs = 0x00000010, /**< dump all entity attributes */
+ 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 */
+ dump_verbosity_noUnionTypes = 0x00004000, /**< dump no union types */
+ dump_verbosity_noArrayTypes = 0x00008000, /**< dump no array types */
+ dump_verbosity_noPointerTypes = 0x00010000, /**< dump no pointer types */
+ dump_verbosity_noMethodTypes = 0x00020000, /**< dump no method types */
+ dump_verbosity_noPrimitiveTypes = 0x00040000, /**< dump no primitive types */
+ dump_verbosity_noEnumerationTypes= 0x00080000, /**< dump no enumeration types */
+
+ dump_verbosity_onlyClassTypes = 0x000FE000, /**< dump only class types */
+ dump_verbosity_onlyStructTypes = 0x000FD000, /**< dump only struct types */
+ dump_verbosity_onlyUnionTypes = 0x000FB000, /**< dump only union types */
+ dump_verbosity_onlyArrayTypes = 0x000F7000, /**< dump only array types */
+ dump_verbosity_onlyPointerTypes = 0x000EF000, /**< dump only pointer types */
+ dump_verbosity_onlyMethodTypes = 0x000DF000, /**< dump only method types */
+ dump_verbosity_onlyPrimitiveTypes = 0x000BF000, /**< dump only primitive types */
+ dump_verbosity_onlyEnumerationTypes=0x0007F000, /**< dump only enumeration types */
+
+ dump_verbosity_max = 0x4FF00FBE /**< turn on all verbosity.
+ Do not turn on negative flags!
+ @@@ Because of a bug in gcc 3.2 we can not set the
+ first two bits. */
+} dump_verbosity;
+
+
+/** Write the entity and all its attributes to the passed file.
+ * */
+void dump_entity_to_file (FILE *F, entity *ent, unsigned verbosity);
+
+/** Write the entity and all its attributes to the stdout.
+ *
+ * Calls dump_entity_to_file(). */
+void dump_entity (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);
+
+/** Write the type and all its attributes to stdout.
+ * */
+void dump_type (ir_type *tp);
+
+
+/** Dump type information as text.
+ *
+ * Often type graphs are unhandy in their vcg representation. The text
+ * dumper represents the information for a single type more compact, but
+ * the relations between the types only implicitly.
+ * Dumps only 'real' types, i.e., those in the type list. Does not dump
+ * 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.
+ * 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.
+ *
+ * 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);
+
+/* **************************************************************************** */
+/* FLAGS */
+/* **************************************************************************** */
+
+/** Output a selected graph.
+ *
+ * All graph dumpers check this name. If the name is != "" and
+ * not a prefix of the graph to be dumped, the dumper does not
+ * dump the graph.
+ *
+ * @param name The prefix of the name (not the ld_name) of the method
+ * entity to be dumped.
+ */
+void only_dump_method_with_name(ident *name);
+
+/** Returns the name set with only_dump_method_with_name(). */
+ident *get_dump_file_filter_ident(void);
+
+/** Returns true if dump file filter is not set, or if it is a
+ * prefix of name. */
+int is_filtered_dump_name(ident *name);
+
+/** 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 labels.