GCC Middle and Back End API Reference
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. */
29  {
30  /* Dump only current region. */
32 
33  /* Dump note_list for this bb. */
35 
36  /* Dump availability set from the bb header. */
38 
39  /* Dump liveness set from the bb header. */
41 
42  /* Dump insns of the given block. */
44 
45  /* Show current fences when dumping cfg. */
47 
48  /* Show insn's seqnos when dumping cfg. */
50 
51  /* Dump function name when dumping cfg. */
53 
54  /* Dump loop father number of the given bb. */
56 
57  /* The default flags for cfg dumping. */
66  };
67 
68 /* These values control the dumping of insns containing in expressions. */
70  {
71  /* Dump insn's UID. */
73 
74  /* Dump insn's pattern. */
76 
77  /* Dump insn's basic block number. */
79 
80  /* Dump all of the above. */
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. */
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. */
107  | DUMP_VINSN_COST)
108  };
110 extern void dump_vinsn_1 (vinsn_t, int);
111 extern void dump_vinsn (vinsn_t);
112 extern void debug_vinsn (vinsn_t);
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. */
126 
127  /* Dump expression's SPEC parameter. */
128  DUMP_EXPR_SPEC = 4,
130  /* Dump expression's priority. */
131  DUMP_EXPR_PRIORITY = 8,
132 
133  /* Dump the number of times this expression was scheduled. */
135 
136  /* Dump speculative status of the expression. */
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. */
149  };
151 extern void dump_expr_1 (expr_t, int);
152 extern void dump_expr (expr_t);
153 extern void debug_expr (expr_t);
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. */
167 
168  /* Dump insn's seqno. */
169  DUMP_INSN_SEQNO = 4,
171  /* Dump the cycle on which insn was scheduled. */
173 
174  /* Dump insn's UID. */
175  DUMP_INSN_UID = 16,
176 
177  /* Dump insn's pattern. */
179 
180  /* Dump insn's basic block number. */
181  DUMP_INSN_BBN = 64,
182 
183  /* Dump all of the above. */
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 
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