Mercurial > hg > CbC > CbC_gcc
annotate gcc/sel-sched-dump.h @ 55:77e2b8dfacca gcc-4.4.5
update it from 4.4.3 to 4.5.0
author | ryoma <e075725@ie.u-ryukyu.ac.jp> |
---|---|
date | Fri, 12 Feb 2010 23:39:51 +0900 |
parents | a06113de4d67 |
children | f6334be47118 |
rev | line source |
---|---|
55
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
1 /* Instruction scheduling pass. Log dumping infrastructure. |
0 | 2 Copyright (C) 2006, 2007, 2008 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. */ | |
55
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
58 SEL_DUMP_CFG_FLAGS = (SEL_DUMP_CFG_CURRENT_REGION |
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
59 | SEL_DUMP_CFG_BB_NOTES_LIST |
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
60 | SEL_DUMP_CFG_AV_SET |
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
61 | SEL_DUMP_CFG_LV_SET |
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
62 | SEL_DUMP_CFG_BB_INSNS |
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
63 | SEL_DUMP_CFG_FENCES |
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
64 | SEL_DUMP_CFG_INSN_SEQNO |
0 | 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 /* These values control dumping of expressions. The meaning of the fields | |
115 is explained in sel-sched-ir.h. */ | |
116 enum dump_expr_def | |
117 { | |
118 /* Dump the vinsn behind this expression. */ | |
119 DUMP_EXPR_VINSN = 2, | |
55
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
120 |
0 | 121 /* Dump expression's SPEC parameter. */ |
122 DUMP_EXPR_SPEC = 4, | |
123 | |
124 /* Dump expression's priority. */ | |
125 DUMP_EXPR_PRIORITY = 8, | |
126 | |
127 /* Dump the number of times this expression was scheduled. */ | |
128 DUMP_EXPR_SCHED_TIMES = 16, | |
129 | |
130 /* Dump speculative status of the expression. */ | |
131 DUMP_EXPR_SPEC_DONE_DS = 32, | |
132 | |
133 /* Dump the basic block number which originated this expression. */ | |
134 DUMP_EXPR_ORIG_BB = 64, | |
135 | |
136 /* Dump expression's usefulness. */ | |
137 DUMP_EXPR_USEFULNESS = 128, | |
138 | |
139 /* Dump all of the above. */ | |
140 DUMP_EXPR_ALL = (DUMP_EXPR_VINSN | DUMP_EXPR_SPEC | DUMP_EXPR_PRIORITY | |
141 | DUMP_EXPR_SCHED_TIMES | DUMP_EXPR_SPEC_DONE_DS | |
142 | DUMP_EXPR_ORIG_BB | DUMP_EXPR_USEFULNESS) | |
143 }; | |
144 | |
145 extern void dump_expr_1 (expr_t, int); | |
146 extern void dump_expr (expr_t); | |
147 extern void debug_expr (expr_t); | |
148 | |
55
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
149 /* A enumeration for dumping flags of an insn. The difference from |
0 | 150 dump_insn_rtx_def is that these fields are for insns in stream only. */ |
151 enum dump_insn_def | |
152 { | |
153 /* Dump expression of this insn. */ | |
154 DUMP_INSN_EXPR = 2, | |
155 | |
156 /* Dump insn's seqno. */ | |
157 DUMP_INSN_SEQNO = 4, | |
158 | |
159 /* Dump the cycle on which insn was scheduled. */ | |
160 DUMP_INSN_SCHED_CYCLE = 8, | |
161 | |
162 /* Dump insn's UID. */ | |
163 DUMP_INSN_UID = 16, | |
164 | |
165 /* Dump insn's pattern. */ | |
166 DUMP_INSN_PATTERN = 32, | |
167 | |
168 /* Dump insn's basic block number. */ | |
169 DUMP_INSN_BBN = 64, | |
170 | |
171 /* Dump all of the above. */ | |
172 DUMP_INSN_ALL = (DUMP_INSN_EXPR | DUMP_INSN_SEQNO | DUMP_INSN_BBN | |
173 | DUMP_INSN_SCHED_CYCLE | DUMP_INSN_UID | DUMP_INSN_PATTERN) | |
174 }; | |
175 | |
176 extern void dump_insn_1 (insn_t, int); | |
177 extern void dump_insn (insn_t); | |
178 extern void debug_insn (insn_t); | |
179 | |
180 extern void sel_prepare_string_for_dot_label (char *); | |
181 | |
182 /* When this flag is on, we are dumping to the .dot file. | |
183 When it is off, we are dumping to log. */ | |
184 extern bool sched_dump_to_dot_p; | |
185 | |
55
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
186 /* This macro acts like printf but dumps information to the .dot file. |
0 | 187 Used when dumping control flow. */ |
188 #define sel_print_to_dot(...) \ | |
189 do { \ | |
190 int __j = 1 + 2 * snprintf (NULL, 0, __VA_ARGS__); \ | |
191 char *__s = XALLOCAVEC (char, __j); \ | |
192 snprintf (__s, __j, __VA_ARGS__); \ | |
193 sel_prepare_string_for_dot_label (__s); \ | |
194 fprintf (sched_dump, "%s", __s); \ | |
195 } while (0) | |
196 | |
197 /* This macro acts like printf but dumps to the sched_dump file. */ | |
198 #define sel_print(...) \ | |
199 do { \ | |
200 if (sched_dump_to_dot_p) \ | |
201 sel_print_to_dot (__VA_ARGS__); \ | |
202 else \ | |
203 fprintf (sched_dump, __VA_ARGS__); \ | |
204 } while (0) | |
205 | |
206 | |
207 /* Functions from sel-sched-dump.c. */ | |
208 extern const char * sel_print_insn (const_rtx, int); | |
209 extern void free_sel_dump_data (void); | |
210 | |
211 extern void block_start (void); | |
212 extern void block_finish (void); | |
213 extern int get_print_blocks_num (void); | |
214 extern void line_start (void); | |
215 extern void line_finish (void); | |
216 | |
217 extern void sel_print_rtl (rtx x); | |
218 extern void dump_insn_1 (insn_t, int); | |
219 extern void dump_insn (insn_t); | |
220 extern void dump_insn_vector (rtx_vec_t); | |
221 extern void dump_expr (expr_t); | |
222 extern void dump_used_regs (bitmap); | |
223 extern void dump_av_set (av_set_t); | |
224 extern void dump_lv_set (regset); | |
225 extern void dump_blist (blist_t); | |
226 extern void dump_flist (flist_t); | |
227 extern void dump_hard_reg_set (const char *, HARD_REG_SET); | |
228 extern void sel_debug_cfg_1 (int); | |
229 extern void sel_debug_cfg (void); | |
230 extern void setup_dump_cfg_params (void); | |
231 | |
232 /* Debug functions. */ | |
233 extern void debug_expr (expr_t); | |
234 extern void debug_av_set (av_set_t); | |
235 extern void debug_lv_set (regset); | |
236 extern void debug_ilist (ilist_t); | |
237 extern void debug_blist (blist_t); | |
238 extern void debug_insn_vector (rtx_vec_t); | |
239 extern void debug_hard_reg_set (HARD_REG_SET); | |
240 extern rtx debug_mem_addr_value (rtx); | |
241 #endif |