GCC Middle and Back End API Reference
Main Page
Namespaces
Data Structures
Files
File List
Globals
sel-sched-dump.h
Go to the documentation of this file.
1
/* Instruction scheduling pass. Log dumping infrastructure.
2
Copyright (C) 2006-2013 Free Software Foundation, Inc.
3
4
This file is part of GCC.
5
6
GCC is free software; you can redistribute it and/or modify it under
7
the terms of the GNU General Public License as published by the Free
8
Software Foundation; either version 3, or (at your option) any later
9
version.
10
11
GCC is distributed in the hope that it will be useful, but WITHOUT ANY
12
WARRANTY; without even the implied warranty of MERCHANTABILITY or
13
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14
for more details.
15
16
You should have received a copy of the GNU General Public License
17
along with GCC; see the file COPYING3. If not see
18
<http://www.gnu.org/licenses/>. */
19
20
21
#ifndef GCC_SEL_SCHED_DUMP_H
22
#define GCC_SEL_SCHED_DUMP_H
23
24
#include "
sel-sched-ir.h
"
25
26
27
/* These values control the dumping of control flow graph to the .dot file. */
28
enum
sel_dump_cfg_def
29
{
30
/* Dump only current region. */
31
SEL_DUMP_CFG_CURRENT_REGION
= 2,
32
33
/* Dump note_list for this bb. */
34
SEL_DUMP_CFG_BB_NOTES_LIST
= 4,
35
36
/* Dump availability set from the bb header. */
37
SEL_DUMP_CFG_AV_SET
= 8,
38
39
/* Dump liveness set from the bb header. */
40
SEL_DUMP_CFG_LV_SET
= 16,
41
42
/* Dump insns of the given block. */
43
SEL_DUMP_CFG_BB_INSNS
= 32,
44
45
/* Show current fences when dumping cfg. */
46
SEL_DUMP_CFG_FENCES
= 64,
47
48
/* Show insn's seqnos when dumping cfg. */
49
SEL_DUMP_CFG_INSN_SEQNO
= 128,
50
51
/* Dump function name when dumping cfg. */
52
SEL_DUMP_CFG_FUNCTION_NAME
= 256,
53
54
/* Dump loop father number of the given bb. */
55
SEL_DUMP_CFG_BB_LOOP
= 512,
56
57
/* The default flags for cfg dumping. */
58
SEL_DUMP_CFG_FLAGS
= (
SEL_DUMP_CFG_CURRENT_REGION
59
|
SEL_DUMP_CFG_BB_NOTES_LIST
60
|
SEL_DUMP_CFG_AV_SET
61
|
SEL_DUMP_CFG_LV_SET
62
|
SEL_DUMP_CFG_BB_INSNS
63
|
SEL_DUMP_CFG_FENCES
64
|
SEL_DUMP_CFG_INSN_SEQNO
65
|
SEL_DUMP_CFG_BB_LOOP
)
66
};
67
68
/* These values control the dumping of insns containing in expressions. */
69
enum
dump_insn_rtx_def
70
{
71
/* Dump insn's UID. */
72
DUMP_INSN_RTX_UID
= 2,
73
74
/* Dump insn's pattern. */
75
DUMP_INSN_RTX_PATTERN
= 4,
76
77
/* Dump insn's basic block number. */
78
DUMP_INSN_RTX_BBN
= 8,
79
80
/* Dump all of the above. */
81
DUMP_INSN_RTX_ALL
= (
DUMP_INSN_RTX_UID
|
DUMP_INSN_RTX_PATTERN
82
|
DUMP_INSN_RTX_BBN
)
83
};
84
85
extern
void
dump_insn_rtx_1
(
rtx
,
int
);
86
extern
void
dump_insn_rtx
(
rtx
);
87
extern
void
debug_insn_rtx
(
rtx
);
88
89
/* These values control dumping of vinsns. The meaning of different fields
90
of a vinsn is explained in sel-sched-ir.h. */
91
enum
dump_vinsn_def
92
{
93
/* Dump the insn behind this vinsn. */
94
DUMP_VINSN_INSN_RTX
= 2,
95
96
/* Dump vinsn's type. */
97
DUMP_VINSN_TYPE
= 4,
98
99
/* Dump vinsn's count. */
100
DUMP_VINSN_COUNT
= 8,
101
102
/* Dump the cost (default latency) of the insn behind this vinsn. */
103
DUMP_VINSN_COST
= 16,
104
105
/* Dump all of the above. */
106
DUMP_VINSN_ALL
= (
DUMP_VINSN_INSN_RTX
|
DUMP_VINSN_TYPE
|
DUMP_VINSN_COUNT
107
|
DUMP_VINSN_COST
)
108
};
109
110
extern
void
dump_vinsn_1
(
vinsn_t
,
int
);
111
extern
void
dump_vinsn
(
vinsn_t
);
112
extern
void
debug_vinsn
(
vinsn_t
);
113
114
extern
void
debug
(
vinsn_def
&ref);
115
extern
void
debug
(
vinsn_def
*ptr);
116
extern
void
debug_verbose
(
vinsn_def
&ref);
117
extern
void
debug_verbose
(
vinsn_def
*ptr);
118
119
120
/* These values control dumping of expressions. The meaning of the fields
121
is explained in sel-sched-ir.h. */
122
enum
dump_expr_def
123
{
124
/* Dump the vinsn behind this expression. */
125
DUMP_EXPR_VINSN
= 2,
126
127
/* Dump expression's SPEC parameter. */
128
DUMP_EXPR_SPEC
= 4,
129
130
/* Dump expression's priority. */
131
DUMP_EXPR_PRIORITY
= 8,
132
133
/* Dump the number of times this expression was scheduled. */
134
DUMP_EXPR_SCHED_TIMES
= 16,
135
136
/* Dump speculative status of the expression. */
137
DUMP_EXPR_SPEC_DONE_DS
= 32,
138
139
/* Dump the basic block number which originated this expression. */
140
DUMP_EXPR_ORIG_BB
= 64,
141
142
/* Dump expression's usefulness. */
143
DUMP_EXPR_USEFULNESS
= 128,
144
145
/* Dump all of the above. */
146
DUMP_EXPR_ALL
= (
DUMP_EXPR_VINSN
|
DUMP_EXPR_SPEC
|
DUMP_EXPR_PRIORITY
147
|
DUMP_EXPR_SCHED_TIMES
|
DUMP_EXPR_SPEC_DONE_DS
148
|
DUMP_EXPR_ORIG_BB
|
DUMP_EXPR_USEFULNESS
)
149
};
150
151
extern
void
dump_expr_1
(
expr_t
,
int
);
152
extern
void
dump_expr
(
expr_t
);
153
extern
void
debug_expr
(
expr_t
);
154
155
extern
void
debug
(
expr_def
&ref);
156
extern
void
debug
(
expr_def
*ptr);
157
extern
void
debug_verbose
(
expr_def
&ref);
158
extern
void
debug_verbose
(
expr_def
*ptr);
159
160
161
/* A enumeration for dumping flags of an insn. The difference from
162
dump_insn_rtx_def is that these fields are for insns in stream only. */
163
enum
dump_insn_def
164
{
165
/* Dump expression of this insn. */
166
DUMP_INSN_EXPR
= 2,
167
168
/* Dump insn's seqno. */
169
DUMP_INSN_SEQNO
= 4,
170
171
/* Dump the cycle on which insn was scheduled. */
172
DUMP_INSN_SCHED_CYCLE
= 8,
173
174
/* Dump insn's UID. */
175
DUMP_INSN_UID
= 16,
176
177
/* Dump insn's pattern. */
178
DUMP_INSN_PATTERN
= 32,
179
180
/* Dump insn's basic block number. */
181
DUMP_INSN_BBN
= 64,
182
183
/* Dump all of the above. */
184
DUMP_INSN_ALL
= (
DUMP_INSN_EXPR
|
DUMP_INSN_SEQNO
|
DUMP_INSN_BBN
185
|
DUMP_INSN_SCHED_CYCLE
|
DUMP_INSN_UID
|
DUMP_INSN_PATTERN
)
186
};
187
188
extern
void
dump_insn_1
(
insn_t
,
int
);
189
extern
void
dump_insn
(
insn_t
);
190
extern
void
debug_insn
(
insn_t
);
191
192
/* When this flag is on, we are dumping to the .dot file.
193
When it is off, we are dumping to log. */
194
extern
bool
sched_dump_to_dot_p
;
195
196
197
/* Functions from sel-sched-dump.c. */
198
extern
void
sel_print
(
const
char
*fmt, ...) ATTRIBUTE_PRINTF_1;
199
extern const
char
*
sel_print_insn
(
const_rtx
,
int
);
200
extern
void
free_sel_dump_data
(
void
);
201
202
extern
void
block_start
(
void
);
203
extern
void
block_finish
(
void
);
204
extern
int
get_print_blocks_num
(
void
);
205
extern
void
line_start
(
void
);
206
extern
void
line_finish
(
void
);
207
208
extern
void
sel_print_rtl
(
rtx
x);
209
extern
void
dump_insn_1
(
insn_t
,
int
);
210
extern
void
dump_insn
(insn_t);
211
extern
void
dump_insn_vector
(
rtx_vec_t
);
212
extern
void
dump_expr
(
expr_t
);
213
extern
void
dump_used_regs
(
bitmap
);
214
extern
void
dump_av_set
(
av_set_t
);
215
extern
void
dump_lv_set
(
regset
);
216
extern
void
dump_blist
(
blist_t
);
217
extern
void
dump_flist
(
flist_t
);
218
extern
void
dump_hard_reg_set
(const
char
*,
HARD_REG_SET
);
219
extern
void
sel_debug_cfg_1
(
int
);
220
extern
void
sel_debug_cfg
(
void
);
221
extern
void
setup_dump_cfg_params
(
void
);
222
223
/* Debug functions. */
224
extern
void
debug_expr
(expr_t);
225
extern
void
debug_av_set
(av_set_t);
226
extern
void
debug_lv_set
(regset);
227
extern
void
debug_ilist
(
ilist_t
);
228
extern
void
debug_blist
(blist_t);
229
extern
void
debug
(
vec
<
rtx
> &ref);
230
extern
void
debug
(
vec
<
rtx
> *ptr);
231
extern
void
debug_insn_vector
(rtx_vec_t);
232
extern
void
debug_hard_reg_set
(HARD_REG_SET);
233
extern
rtx
debug_mem_addr_value
(
rtx
);
234
#endif
gcc
sel-sched-dump.h
Generated by
1.8.1.1