irdump_t.h 5.06 KB
Newer Older
Christian Würdig's avatar
Christian Würdig committed
1
/*
Michael Beck's avatar
Michael Beck committed
2
 * Copyright (C) 1995-2008 University of Karlsruhe.  All right reserved.
Christian Würdig's avatar
Christian Würdig committed
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 *
 * This file is part of libFirm.
 *
 * This file may be distributed and/or modified under the terms of the
 * GNU General Public License version 2 as published by the Free Software
 * Foundation and appearing in the file LICENSE.GPL included in the
 * packaging of this file.
 *
 * Licensees holding valid libFirm Professional Edition licenses may use
 * this file in accordance with the libFirm Commercial License.
 * Agreement provided with the Software.
 *
 * This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
 * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR
 * PURPOSE.
 */

Matthias Braun's avatar
Matthias Braun committed
20
21
22
23
24
25
26
/**
 * @file
 * @brief   Private header for irdump
 * @version $Id$
 */
#ifndef FIRM_IR_IRDUMPT_T_H
#define FIRM_IR_IRDUMPT_T_H
27

28
#include "irdump.h"
29
#include "irgraph_t.h"
30
31
32
33
34
35
36
37

/* Attributes of nodes */
#define PRINT_DEFAULT_NODE_ATTR
#define DEFAULT_NODE_ATTR " "
#define DEFAULT_TYPE_ATTRIBUTE " "
#define DEFAULT_ENUM_ITEM_ATTRIBUTE " "

/* Attributes of edges between Firm nodes */
Michael Beck's avatar
Michael Beck committed
38
39
40
41
42
43
44
45
46
#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"
Michael Beck's avatar
Michael Beck committed
47
48
49
#define KEEP_ALIVE_EDGE_ATTR     "class:20 priority:10 color:purple"
#define KEEP_ALIVE_CF_EDGE_ATTR  "class:20 priority:60 color:purple"
#define KEEP_ALIVE_DF_EDGE_ATTR  "class:20 priority:10 color:purple"
50
#define ANCHOR_EDGE_ATTR         "class:20 priority:60 color:purple linestyle:dotted"
Michael Beck's avatar
Michael Beck committed
51
#define OUT_EDGE_ATTR            "class:21 priority:10 color:gold linestyle:dashed"
52
#define MACROBLOCK_EDGE_ATTR     "class:22 priority:10 color:green linestyle:dashed"
53
54
55
56
57
58
59
60
61
62
63

#define BACK_EDGE_ATTR "linestyle:dashed "

/* 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"
Michael Beck's avatar
Michael Beck committed
64
#define ENUM_ITEM_NODE_ATTR      "color: green"
65
66
67
68
69
70
71
72
73
74
75
76
77
#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"
78
/* #define CALLGRAPH_EDGE_ATTR      "calls" */
79

80
81
82
83
84
#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))
85
#define PRINT_CONSTBLKID(X,Y) fprintf(F, "n%ldb%ld", get_irn_node_nr(X),get_irn_node_nr(Y))
86
87
#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))
88
#define PRINT_EXTBBID(X)      fprintf(F, "x%ld", get_irn_node_nr(X))
89
90

extern int dump_dominator_information_flag;
91
92
extern int opt_dump_pointer_values_to_info;
extern int opt_dump_analysed_type_info;
93

Michael Beck's avatar
Michael Beck committed
94
95
FILE *vcg_open(const ir_graph *irg, const char * suffix1, const char *suffix2);
FILE *vcg_open_name(const char *name, const char *suffix);
96
void dump_vcg_header(FILE *F, const char *name, const char *layout, const char *orientation);
97
void dump_vcg_footer(FILE *F);
Michael Beck's avatar
Michael Beck committed
98
const char *get_irg_dump_name(const ir_graph *irg);
99

100

Michael Beck's avatar
Michael Beck committed
101
102
const char *get_ent_dump_name(const ir_entity *ent);
const char *get_mode_name_ex(const ir_mode *mode, int *bad);
103
104
105
106
107
/**
 * dump the name of a node n to the File F.
 */
int
dump_node_opcode(FILE *F, ir_node *n);
108

Götz Lindenmaier's avatar
Götz Lindenmaier committed
109
110
int dump_node_label(FILE *F, ir_node *n);

111
int dump_vrp_info(FILE *F, ir_node *n);
Götz Lindenmaier's avatar
Götz Lindenmaier committed
112

113
/** Writes vcg representation with title "PRINT_TYPEID(tp)" to file F. */
114
int dump_type_node(FILE *F, ir_type *tp);
Götz Lindenmaier's avatar
Götz Lindenmaier committed
115

Michael Beck's avatar
Michael Beck committed
116
#endif /* FIRM_IR_IRDUMPT_T_H */