X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fir%2Firdump_t.h;h=56d0bca79edac856e0f82301183ec95f338b8aca;hb=5baeb7adbb892d71ead14a2fc3d71bae2d45d38e;hp=d25b362d0f99808fc8fe623f38a6787d4a7ec9bf;hpb=a142727aca4ef56cf754045fc0129b6d1b840a63;p=libfirm diff --git a/ir/ir/irdump_t.h b/ir/ir/irdump_t.h index d25b362d0..56d0bca79 100644 --- a/ir/ir/irdump_t.h +++ b/ir/ir/irdump_t.h @@ -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. * @@ -20,90 +20,44 @@ /** * @file * @brief Private header for irdump - * @version $Id$ */ #ifndef FIRM_IR_IRDUMPT_T_H #define FIRM_IR_IRDUMPT_T_H #include "irdump.h" +#include "irgraph_t.h" -/* Attributes of nodes */ -#define PRINT_DEFAULT_NODE_ATTR -#define DEFAULT_NODE_ATTR " " -#define DEFAULT_TYPE_ATTRIBUTE " " -#define DEFAULT_ENUM_ITEM_ATTRIBUTE " " +void print_nodeid(FILE *F, const ir_node *node); +void print_irgid(FILE *F, const ir_graph *irg); +void print_typeid(FILE *F, const ir_type *type); +void print_entityid(FILE *F, const ir_entity *entity); +void print_loopid(FILE *F, const ir_loop *loop); -/* Attributes of edges between Firm nodes */ -#define INTRA_DATA_EDGE_ATTR "class:1 priority:50" -#define INTER_DATA_EDGE_ATTR "class:16 priority:10" -#define BLOCK_EDGE_ATTR "class:2 priority:50 linestyle:dotted" -#define CF_EDGE_ATTR "class:13 priority:60 color:red" -#define EXC_CF_EDGE_ATTR "class:18 priority:60 color:blue" -#define INTRA_MEM_EDGE_ATTR "class:14 priority:50 color:blue" -#define INTER_MEM_EDGE_ATTR "class:17 priority:10 color:blue" -#define DOMINATOR_EDGE_ATTR "class:15 color:red" -#define POSTDOMINATOR_EDGE_ATTR "class:19 color:red linestyle:dotted" +const char *get_irg_dump_name(const ir_graph *irg); -#define BACK_EDGE_ATTR "linestyle:dashed " +const char *get_ent_dump_name(const ir_entity *ent); -/* Attributes of edges between Firm nodes and type/entity nodes */ -#define NODE2TYPE_EDGE_ATTR "class:2 priority:2 linestyle:dotted" - -/* Attributes of edges in type/entity graphs. */ -#define TYPE_METH_NODE_ATTR "color: lightyellow" -#define TYPE_CLASS_NODE_ATTR "color: green" -#define TYPE_DESCRIPTION_NODE_ATTR "color: lightgreen" -#define ENTITY_NODE_ATTR "color: yellow" -#define ENT_TYPE_EDGE_ATTR "class: 3 label: \"type\" color: red" -#define ENT_OWN_EDGE_ATTR "class: 4 label: \"owner\" color: black" -#define METH_PAR_EDGE_ATTR "class: 5 label: \"param %d\" color: green" -#define METH_RES_EDGE_ATTR "class: 6 label: \"res %d\" color: green" -#define TYPE_SUPER_EDGE_ATTR "class: 7 label: \"supertype\" color: red" -#define UNION_EDGE_ATTR "class: 8 label: \"component\" color: blue" -#define PTR_PTS_TO_EDGE_ATTR "class: 9 label: \"points to\" color:green" -#define ARR_ELT_TYPE_EDGE_ATTR "class: 10 label: \"arr elt tp\" color:green" -#define ARR_ENT_EDGE_ATTR "class: 10 label: \"arr ent\" color: green" -#define ENT_OVERWRITES_EDGE_ATTR "class: 11 label: \"overwrites\" color:red" -#define ENT_VALUE_EDGE_ATTR "label: \"value %d\"" -#define ENT_CORR_EDGE_ATTR "label: \"value %d corresponds to \" " -#define TYPE_MEMBER_EDGE_ATTR "class: 12 label: \"member\" color:blue" -#define ENUM_ITEM_NODE_ATTR "color: green" -/* #define CALLGRAPH_EDGE_ATTR "calls" */ - -#define PRINT_NODEID(X) fprintf(F, "n%ld", get_irn_node_nr(X)) -#define PRINT_TYPEID(X) fprintf(F, "\"t%ld\"", get_type_nr(X)) -#define PRINT_ENTID(X) fprintf(F, "e%ld", get_entity_nr(X)) -#define PRINT_IRGID(X) fprintf(F, "g%ld", get_irg_graph_nr(X)) -#define PRINT_CONSTID(X,Y) fprintf(F, "\"n%ldn%ld\"", get_irn_node_nr(X),get_irn_node_nr(Y)) -#define PRINT_CONSTBLKID(X,Y) fprintf(F, "n%ldb%ld", get_irn_node_nr(X),get_irn_node_nr(Y)) -#define PRINT_LOOPID(X) fprintf(F, "l%d", get_loop_loop_nr(X)) -#define PRINT_ITEMID(X,Y) fprintf(F, "i%ldT%d", get_type_nr(X), (Y)) -#define PRINT_EXTBBID(X) fprintf(F, "x%ld", get_irn_node_nr(X)) - -extern int dump_dominator_information_flag; -extern int opt_dump_pointer_values_to_info; -extern int opt_dump_analysed_type_info; - -FILE *vcg_open (ir_graph *irg, const char * suffix1, const char *suffix2); -FILE *vcg_open_name (const char *name, const char *suffix); -void dump_vcg_header(FILE *F, const char *name, const char *orientation); -const char *get_irg_dump_name(ir_graph *irg); -void vcg_close (FILE *F); - - -const char *get_ent_dump_name(ir_entity *ent); -const char *get_type_name_ex(ir_type *tp, int *bad); -const char *get_mode_name_ex(ir_mode *mode, int *bad); /** - * dump the name of a node n to the File F. + * returns the name of a mode or "" if mode is NOT a mode object. + * in the later case, sets bad. */ -int -dump_node_opcode(FILE *F, ir_node *n); - -int dump_node_label(FILE *F, ir_node *n); +const char *get_mode_name_ex(const ir_mode *mode, int *bad); +/** dump the name of a node n to the File F. */ +void dump_node_opcode(FILE *out, const ir_node *n); +void dump_node_label(FILE *out, const ir_node *n); /** Writes vcg representation with title "PRINT_TYPEID(tp)" to file F. */ -int dump_type_node(FILE *F, ir_type *tp); +void dump_type_node(FILE *out, ir_type *tp); + +void dump_vcg_header(FILE *out, const char *name, const char *layout, const char *orientation); +void dump_vcg_footer(FILE *out); +void dump_vcg_header_colors(FILE *out); +void dump_vcg_infonames(FILE *out); +void dump_node(FILE *out, const ir_node *node); + +/** Write the irnode and all its attributes to the file passed. + * (plain text format) */ +void dump_irnode_to_file(FILE *out, const ir_node *node); #endif