annotate gcc/gimple-pretty-print.c @ 125:2c7bdd5a49f6

supress return with no value, in function returning non-void warning on goto code segment in normal function
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Sun, 01 Apr 2018 14:05:45 +0900
parents 04ced10e8804
children 84e7813d76e9
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1 /* Pretty formatting of GIMPLE statements and expressions.
111
kono
parents: 67
diff changeset
2 Copyright (C) 2001-2017 Free Software Foundation, Inc.
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
3 Contributed by Aldy Hernandez <aldyh@redhat.com> and
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
4 Diego Novillo <dnovillo@google.com>
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
5
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
6 This file is part of GCC.
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
7
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
8 GCC is free software; you can redistribute it and/or modify it under
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
9 the terms of the GNU General Public License as published by the Free
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
10 Software Foundation; either version 3, or (at your option) any later
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
11 version.
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
12
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
13 GCC is distributed in the hope that it will be useful, but WITHOUT ANY
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
14 WARRANTY; without even the implied warranty of MERCHANTABILITY or
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
15 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
16 for more details.
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
17
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
18 You should have received a copy of the GNU General Public License
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
19 along with GCC; see the file COPYING3. If not see
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
20 <http://www.gnu.org/licenses/>. */
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
21
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
22 #include "config.h"
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
23 #include "system.h"
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
24 #include "coretypes.h"
111
kono
parents: 67
diff changeset
25 #include "dumpfile.h"
kono
parents: 67
diff changeset
26 #include "backend.h"
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
27 #include "tree.h"
111
kono
parents: 67
diff changeset
28 #include "gimple.h"
kono
parents: 67
diff changeset
29 #include "gimple-predict.h"
kono
parents: 67
diff changeset
30 #include "ssa.h"
kono
parents: 67
diff changeset
31 #include "cgraph.h"
63
b7f97abdc517 update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 55
diff changeset
32 #include "gimple-pretty-print.h"
111
kono
parents: 67
diff changeset
33 #include "internal-fn.h"
kono
parents: 67
diff changeset
34 #include "tree-eh.h"
kono
parents: 67
diff changeset
35 #include "gimple-iterator.h"
kono
parents: 67
diff changeset
36 #include "tree-cfg.h"
kono
parents: 67
diff changeset
37 #include "dumpfile.h" /* for dump_flags */
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
38 #include "value-prof.h"
111
kono
parents: 67
diff changeset
39 #include "trans-mem.h"
kono
parents: 67
diff changeset
40 #include "cfganal.h"
kono
parents: 67
diff changeset
41 #include "stringpool.h"
kono
parents: 67
diff changeset
42 #include "attribs.h"
kono
parents: 67
diff changeset
43 #include "asan.h"
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
44
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
45 #define INDENT(SPACE) \
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
46 do { int i; for (i = 0; i < SPACE; i++) pp_space (buffer); } while (0)
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
47
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
48 #define GIMPLE_NIY do_niy (buffer,gs)
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
49
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
50 /* Try to print on BUFFER a default message for the unrecognized
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
51 gimple statement GS. */
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
52
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
53 static void
111
kono
parents: 67
diff changeset
54 do_niy (pretty_printer *buffer, gimple *gs)
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
55 {
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
56 pp_printf (buffer, "<<< Unknown GIMPLE statement: %s >>>\n",
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
57 gimple_code_name[(int) gimple_code (gs)]);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
58 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
59
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
60
111
kono
parents: 67
diff changeset
61 /* Emit a newline and SPC indentation spaces to BUFFER. */
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
62
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
63 static void
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
64 newline_and_indent (pretty_printer *buffer, int spc)
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
65 {
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
66 pp_newline (buffer);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
67 INDENT (spc);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
68 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
69
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
70
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
71 /* Print the GIMPLE statement GS on stderr. */
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
72
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
73 DEBUG_FUNCTION void
111
kono
parents: 67
diff changeset
74 debug_gimple_stmt (gimple *gs)
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
75 {
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
76 print_gimple_stmt (stderr, gs, 0, TDF_VOPS|TDF_MEMSYMS);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
77 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
78
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
79
111
kono
parents: 67
diff changeset
80 /* Return formatted string of a VALUE probability
kono
parents: 67
diff changeset
81 (biased by REG_BR_PROB_BASE). Returned string is allocated
kono
parents: 67
diff changeset
82 by xstrdup_for_dump. */
kono
parents: 67
diff changeset
83
kono
parents: 67
diff changeset
84 static const char *
kono
parents: 67
diff changeset
85 dump_profile (int frequency, profile_count &count)
kono
parents: 67
diff changeset
86 {
kono
parents: 67
diff changeset
87 float minimum = 0.01f;
kono
parents: 67
diff changeset
88
kono
parents: 67
diff changeset
89 gcc_assert (0 <= frequency && frequency <= REG_BR_PROB_BASE);
kono
parents: 67
diff changeset
90 float fvalue = frequency * 100.0f / REG_BR_PROB_BASE;
kono
parents: 67
diff changeset
91 if (fvalue < minimum && frequency > 0)
kono
parents: 67
diff changeset
92 return "[0.01%]";
kono
parents: 67
diff changeset
93
kono
parents: 67
diff changeset
94 char *buf;
kono
parents: 67
diff changeset
95 if (count.initialized_p ())
kono
parents: 67
diff changeset
96 buf = xasprintf ("[%.2f%%] [count: %" PRId64 "]", fvalue,
kono
parents: 67
diff changeset
97 count.to_gcov_type ());
kono
parents: 67
diff changeset
98 else
kono
parents: 67
diff changeset
99 buf = xasprintf ("[%.2f%%] [count: INV]", fvalue);
kono
parents: 67
diff changeset
100
kono
parents: 67
diff changeset
101 const char *ret = xstrdup_for_dump (buf);
kono
parents: 67
diff changeset
102 free (buf);
kono
parents: 67
diff changeset
103
kono
parents: 67
diff changeset
104 return ret;
kono
parents: 67
diff changeset
105 }
kono
parents: 67
diff changeset
106
kono
parents: 67
diff changeset
107 /* Return formatted string of a VALUE probability
kono
parents: 67
diff changeset
108 (biased by REG_BR_PROB_BASE). Returned string is allocated
kono
parents: 67
diff changeset
109 by xstrdup_for_dump. */
kono
parents: 67
diff changeset
110
kono
parents: 67
diff changeset
111 static const char *
kono
parents: 67
diff changeset
112 dump_probability (profile_probability probability)
kono
parents: 67
diff changeset
113 {
kono
parents: 67
diff changeset
114 float minimum = 0.01f;
kono
parents: 67
diff changeset
115 float fvalue = -1;
kono
parents: 67
diff changeset
116
kono
parents: 67
diff changeset
117 if (probability.initialized_p ())
kono
parents: 67
diff changeset
118 {
kono
parents: 67
diff changeset
119 fvalue = probability.to_reg_br_prob_base () * 100.0f / REG_BR_PROB_BASE;
kono
parents: 67
diff changeset
120 if (fvalue < minimum && probability.to_reg_br_prob_base ())
kono
parents: 67
diff changeset
121 fvalue = minimum;
kono
parents: 67
diff changeset
122 }
kono
parents: 67
diff changeset
123
kono
parents: 67
diff changeset
124 char *buf;
kono
parents: 67
diff changeset
125 if (probability.initialized_p ())
kono
parents: 67
diff changeset
126 buf = xasprintf ("[%.2f%%]", fvalue);
kono
parents: 67
diff changeset
127 else
kono
parents: 67
diff changeset
128 buf = xasprintf ("[INV]");
kono
parents: 67
diff changeset
129
kono
parents: 67
diff changeset
130 const char *ret = xstrdup_for_dump (buf);
kono
parents: 67
diff changeset
131 free (buf);
kono
parents: 67
diff changeset
132
kono
parents: 67
diff changeset
133 return ret;
kono
parents: 67
diff changeset
134 }
kono
parents: 67
diff changeset
135
kono
parents: 67
diff changeset
136 /* Dump E probability to BUFFER. */
kono
parents: 67
diff changeset
137
kono
parents: 67
diff changeset
138 static void
kono
parents: 67
diff changeset
139 dump_edge_probability (pretty_printer *buffer, edge e)
kono
parents: 67
diff changeset
140 {
kono
parents: 67
diff changeset
141 pp_scalar (buffer, " %s", dump_probability (e->probability));
kono
parents: 67
diff changeset
142 }
kono
parents: 67
diff changeset
143
kono
parents: 67
diff changeset
144 /* Print GIMPLE statement G to FILE using SPC indentation spaces and
kono
parents: 67
diff changeset
145 FLAGS as in pp_gimple_stmt_1. */
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
146
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
147 void
111
kono
parents: 67
diff changeset
148 print_gimple_stmt (FILE *file, gimple *g, int spc, dump_flags_t flags)
kono
parents: 67
diff changeset
149 {
kono
parents: 67
diff changeset
150 pretty_printer buffer;
kono
parents: 67
diff changeset
151 pp_needs_newline (&buffer) = true;
kono
parents: 67
diff changeset
152 buffer.buffer->stream = file;
kono
parents: 67
diff changeset
153 pp_gimple_stmt_1 (&buffer, g, spc, flags);
kono
parents: 67
diff changeset
154 pp_newline_and_flush (&buffer);
kono
parents: 67
diff changeset
155 }
kono
parents: 67
diff changeset
156
kono
parents: 67
diff changeset
157 DEBUG_FUNCTION void
kono
parents: 67
diff changeset
158 debug (gimple &ref)
kono
parents: 67
diff changeset
159 {
kono
parents: 67
diff changeset
160 print_gimple_stmt (stderr, &ref, 0, 0);
kono
parents: 67
diff changeset
161 }
kono
parents: 67
diff changeset
162
kono
parents: 67
diff changeset
163 DEBUG_FUNCTION void
kono
parents: 67
diff changeset
164 debug (gimple *ptr)
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
165 {
111
kono
parents: 67
diff changeset
166 if (ptr)
kono
parents: 67
diff changeset
167 debug (*ptr);
kono
parents: 67
diff changeset
168 else
kono
parents: 67
diff changeset
169 fprintf (stderr, "<nil>\n");
kono
parents: 67
diff changeset
170 }
kono
parents: 67
diff changeset
171
kono
parents: 67
diff changeset
172
kono
parents: 67
diff changeset
173 /* Print GIMPLE statement G to FILE using SPC indentation spaces and
kono
parents: 67
diff changeset
174 FLAGS as in pp_gimple_stmt_1. Print only the right-hand side
kono
parents: 67
diff changeset
175 of the statement. */
kono
parents: 67
diff changeset
176
kono
parents: 67
diff changeset
177 void
kono
parents: 67
diff changeset
178 print_gimple_expr (FILE *file, gimple *g, int spc, dump_flags_t flags)
kono
parents: 67
diff changeset
179 {
kono
parents: 67
diff changeset
180 flags |= TDF_RHS_ONLY;
kono
parents: 67
diff changeset
181 pretty_printer buffer;
kono
parents: 67
diff changeset
182 pp_needs_newline (&buffer) = true;
kono
parents: 67
diff changeset
183 buffer.buffer->stream = file;
kono
parents: 67
diff changeset
184 pp_gimple_stmt_1 (&buffer, g, spc, flags);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
185 pp_flush (&buffer);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
186 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
187
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
188
111
kono
parents: 67
diff changeset
189 /* Print the GIMPLE sequence SEQ on BUFFER using SPC indentation
kono
parents: 67
diff changeset
190 spaces and FLAGS as in pp_gimple_stmt_1.
kono
parents: 67
diff changeset
191 The caller is responsible for calling pp_flush on BUFFER to finalize
kono
parents: 67
diff changeset
192 the pretty printer. */
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
193
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
194 static void
111
kono
parents: 67
diff changeset
195 dump_gimple_seq (pretty_printer *buffer, gimple_seq seq, int spc,
kono
parents: 67
diff changeset
196 dump_flags_t flags)
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
197 {
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
198 gimple_stmt_iterator i;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
199
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
200 for (i = gsi_start (seq); !gsi_end_p (i); gsi_next (&i))
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
201 {
111
kono
parents: 67
diff changeset
202 gimple *gs = gsi_stmt (i);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
203 INDENT (spc);
111
kono
parents: 67
diff changeset
204 pp_gimple_stmt_1 (buffer, gs, spc, flags);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
205 if (!gsi_one_before_end_p (i))
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
206 pp_newline (buffer);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
207 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
208 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
209
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
210
111
kono
parents: 67
diff changeset
211 /* Print GIMPLE sequence SEQ to FILE using SPC indentation spaces and
kono
parents: 67
diff changeset
212 FLAGS as in pp_gimple_stmt_1. */
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
213
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
214 void
111
kono
parents: 67
diff changeset
215 print_gimple_seq (FILE *file, gimple_seq seq, int spc, dump_flags_t flags)
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
216 {
111
kono
parents: 67
diff changeset
217 pretty_printer buffer;
kono
parents: 67
diff changeset
218 pp_needs_newline (&buffer) = true;
kono
parents: 67
diff changeset
219 buffer.buffer->stream = file;
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
220 dump_gimple_seq (&buffer, seq, spc, flags);
111
kono
parents: 67
diff changeset
221 pp_newline_and_flush (&buffer);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
222 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
223
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
224
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
225 /* Print the GIMPLE sequence SEQ on stderr. */
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
226
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
227 DEBUG_FUNCTION void
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
228 debug_gimple_seq (gimple_seq seq)
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
229 {
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
230 print_gimple_seq (stderr, seq, 0, TDF_VOPS|TDF_MEMSYMS);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
231 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
232
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
233
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
234 /* A simple helper to pretty-print some of the gimple tuples in the printf
111
kono
parents: 67
diff changeset
235 style. The format modifiers are preceded by '%' and are:
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
236 'G' - outputs a string corresponding to the code of the given gimple,
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
237 'S' - outputs a gimple_seq with indent of spc + 2,
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
238 'T' - outputs the tree t,
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
239 'd' - outputs an int as a decimal,
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
240 's' - outputs a string,
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
241 'n' - outputs a newline,
111
kono
parents: 67
diff changeset
242 'x' - outputs an int as hexadecimal,
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
243 '+' - increases indent by 2 then outputs a newline,
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
244 '-' - decreases indent by 2 then outputs a newline. */
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
245
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
246 static void
111
kono
parents: 67
diff changeset
247 dump_gimple_fmt (pretty_printer *buffer, int spc, dump_flags_t flags,
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
248 const char *fmt, ...)
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
249 {
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
250 va_list args;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
251 const char *c;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
252 const char *tmp;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
253
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
254 va_start (args, fmt);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
255 for (c = fmt; *c; c++)
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
256 {
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
257 if (*c == '%')
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
258 {
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
259 gimple_seq seq;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
260 tree t;
111
kono
parents: 67
diff changeset
261 gimple *g;
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
262 switch (*++c)
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
263 {
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
264 case 'G':
111
kono
parents: 67
diff changeset
265 g = va_arg (args, gimple *);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
266 tmp = gimple_code_name[gimple_code (g)];
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
267 pp_string (buffer, tmp);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
268 break;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
269
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
270 case 'S':
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
271 seq = va_arg (args, gimple_seq);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
272 pp_newline (buffer);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
273 dump_gimple_seq (buffer, seq, spc + 2, flags);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
274 newline_and_indent (buffer, spc);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
275 break;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
276
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
277 case 'T':
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
278 t = va_arg (args, tree);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
279 if (t == NULL_TREE)
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
280 pp_string (buffer, "NULL");
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
281 else
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
282 dump_generic_node (buffer, t, spc, flags, false);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
283 break;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
284
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
285 case 'd':
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
286 pp_decimal_int (buffer, va_arg (args, int));
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
287 break;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
288
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
289 case 's':
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
290 pp_string (buffer, va_arg (args, char *));
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
291 break;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
292
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
293 case 'n':
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
294 newline_and_indent (buffer, spc);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
295 break;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
296
111
kono
parents: 67
diff changeset
297 case 'x':
kono
parents: 67
diff changeset
298 pp_scalar (buffer, "%x", va_arg (args, int));
kono
parents: 67
diff changeset
299 break;
kono
parents: 67
diff changeset
300
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
301 case '+':
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
302 spc += 2;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
303 newline_and_indent (buffer, spc);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
304 break;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
305
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
306 case '-':
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
307 spc -= 2;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
308 newline_and_indent (buffer, spc);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
309 break;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
310
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
311 default:
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
312 gcc_unreachable ();
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
313 }
55
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
314 }
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
315 else
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
316 pp_character (buffer, *c);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
317 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
318 va_end (args);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
319 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
320
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
321
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
322 /* Helper for dump_gimple_assign. Print the unary RHS of the
111
kono
parents: 67
diff changeset
323 assignment GS. BUFFER, SPC and FLAGS are as in pp_gimple_stmt_1. */
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
324
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
325 static void
111
kono
parents: 67
diff changeset
326 dump_unary_rhs (pretty_printer *buffer, gassign *gs, int spc,
kono
parents: 67
diff changeset
327 dump_flags_t flags)
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
328 {
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
329 enum tree_code rhs_code = gimple_assign_rhs_code (gs);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
330 tree lhs = gimple_assign_lhs (gs);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
331 tree rhs = gimple_assign_rhs1 (gs);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
332
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
333 switch (rhs_code)
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
334 {
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
335 case VIEW_CONVERT_EXPR:
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
336 case ASSERT_EXPR:
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
337 dump_generic_node (buffer, rhs, spc, flags, false);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
338 break;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
339
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
340 case FIXED_CONVERT_EXPR:
55
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
341 case ADDR_SPACE_CONVERT_EXPR:
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
342 case FIX_TRUNC_EXPR:
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
343 case FLOAT_EXPR:
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
344 CASE_CONVERT:
111
kono
parents: 67
diff changeset
345 pp_left_paren (buffer);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
346 dump_generic_node (buffer, TREE_TYPE (lhs), spc, flags, false);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
347 pp_string (buffer, ") ");
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
348 if (op_prio (rhs) < op_code_prio (rhs_code))
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
349 {
111
kono
parents: 67
diff changeset
350 pp_left_paren (buffer);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
351 dump_generic_node (buffer, rhs, spc, flags, false);
111
kono
parents: 67
diff changeset
352 pp_right_paren (buffer);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
353 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
354 else
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
355 dump_generic_node (buffer, rhs, spc, flags, false);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
356 break;
55
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
357
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
358 case PAREN_EXPR:
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
359 pp_string (buffer, "((");
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
360 dump_generic_node (buffer, rhs, spc, flags, false);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
361 pp_string (buffer, "))");
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
362 break;
55
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
363
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
364 case ABS_EXPR:
111
kono
parents: 67
diff changeset
365 if (flags & TDF_GIMPLE)
kono
parents: 67
diff changeset
366 {
kono
parents: 67
diff changeset
367 pp_string (buffer, "__ABS ");
kono
parents: 67
diff changeset
368 dump_generic_node (buffer, rhs, spc, flags, false);
kono
parents: 67
diff changeset
369 }
kono
parents: 67
diff changeset
370 else
kono
parents: 67
diff changeset
371 {
kono
parents: 67
diff changeset
372 pp_string (buffer, "ABS_EXPR <");
kono
parents: 67
diff changeset
373 dump_generic_node (buffer, rhs, spc, flags, false);
kono
parents: 67
diff changeset
374 pp_greater (buffer);
kono
parents: 67
diff changeset
375 }
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
376 break;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
377
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
378 default:
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
379 if (TREE_CODE_CLASS (rhs_code) == tcc_declaration
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
380 || TREE_CODE_CLASS (rhs_code) == tcc_constant
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
381 || TREE_CODE_CLASS (rhs_code) == tcc_reference
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
382 || rhs_code == SSA_NAME
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
383 || rhs_code == ADDR_EXPR
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
384 || rhs_code == CONSTRUCTOR)
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
385 {
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
386 dump_generic_node (buffer, rhs, spc, flags, false);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
387 break;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
388 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
389 else if (rhs_code == BIT_NOT_EXPR)
111
kono
parents: 67
diff changeset
390 pp_complement (buffer);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
391 else if (rhs_code == TRUTH_NOT_EXPR)
111
kono
parents: 67
diff changeset
392 pp_exclamation (buffer);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
393 else if (rhs_code == NEGATE_EXPR)
111
kono
parents: 67
diff changeset
394 pp_minus (buffer);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
395 else
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
396 {
111
kono
parents: 67
diff changeset
397 pp_left_bracket (buffer);
kono
parents: 67
diff changeset
398 pp_string (buffer, get_tree_code_name (rhs_code));
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
399 pp_string (buffer, "] ");
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
400 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
401
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
402 if (op_prio (rhs) < op_code_prio (rhs_code))
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
403 {
111
kono
parents: 67
diff changeset
404 pp_left_paren (buffer);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
405 dump_generic_node (buffer, rhs, spc, flags, false);
111
kono
parents: 67
diff changeset
406 pp_right_paren (buffer);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
407 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
408 else
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
409 dump_generic_node (buffer, rhs, spc, flags, false);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
410 break;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
411 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
412 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
413
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
414
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
415 /* Helper for dump_gimple_assign. Print the binary RHS of the
111
kono
parents: 67
diff changeset
416 assignment GS. BUFFER, SPC and FLAGS are as in pp_gimple_stmt_1. */
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
417
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
418 static void
111
kono
parents: 67
diff changeset
419 dump_binary_rhs (pretty_printer *buffer, gassign *gs, int spc,
kono
parents: 67
diff changeset
420 dump_flags_t flags)
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
421 {
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
422 const char *p;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
423 enum tree_code code = gimple_assign_rhs_code (gs);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
424 switch (code)
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
425 {
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
426 case COMPLEX_EXPR:
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
427 case MIN_EXPR:
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
428 case MAX_EXPR:
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
429 case VEC_WIDEN_MULT_HI_EXPR:
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
430 case VEC_WIDEN_MULT_LO_EXPR:
111
kono
parents: 67
diff changeset
431 case VEC_WIDEN_MULT_EVEN_EXPR:
kono
parents: 67
diff changeset
432 case VEC_WIDEN_MULT_ODD_EXPR:
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
433 case VEC_PACK_TRUNC_EXPR:
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
434 case VEC_PACK_SAT_EXPR:
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
435 case VEC_PACK_FIX_TRUNC_EXPR:
111
kono
parents: 67
diff changeset
436 case VEC_WIDEN_LSHIFT_HI_EXPR:
kono
parents: 67
diff changeset
437 case VEC_WIDEN_LSHIFT_LO_EXPR:
kono
parents: 67
diff changeset
438 for (p = get_tree_code_name (code); *p; p++)
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
439 pp_character (buffer, TOUPPER (*p));
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
440 pp_string (buffer, " <");
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
441 dump_generic_node (buffer, gimple_assign_rhs1 (gs), spc, flags, false);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
442 pp_string (buffer, ", ");
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
443 dump_generic_node (buffer, gimple_assign_rhs2 (gs), spc, flags, false);
111
kono
parents: 67
diff changeset
444 pp_greater (buffer);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
445 break;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
446
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
447 default:
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
448 if (op_prio (gimple_assign_rhs1 (gs)) <= op_code_prio (code))
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
449 {
111
kono
parents: 67
diff changeset
450 pp_left_paren (buffer);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
451 dump_generic_node (buffer, gimple_assign_rhs1 (gs), spc, flags,
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
452 false);
111
kono
parents: 67
diff changeset
453 pp_right_paren (buffer);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
454 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
455 else
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
456 dump_generic_node (buffer, gimple_assign_rhs1 (gs), spc, flags, false);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
457 pp_space (buffer);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
458 pp_string (buffer, op_symbol_code (gimple_assign_rhs_code (gs)));
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
459 pp_space (buffer);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
460 if (op_prio (gimple_assign_rhs2 (gs)) <= op_code_prio (code))
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
461 {
111
kono
parents: 67
diff changeset
462 pp_left_paren (buffer);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
463 dump_generic_node (buffer, gimple_assign_rhs2 (gs), spc, flags,
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
464 false);
111
kono
parents: 67
diff changeset
465 pp_right_paren (buffer);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
466 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
467 else
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
468 dump_generic_node (buffer, gimple_assign_rhs2 (gs), spc, flags, false);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
469 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
470 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
471
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
472 /* Helper for dump_gimple_assign. Print the ternary RHS of the
111
kono
parents: 67
diff changeset
473 assignment GS. BUFFER, SPC and FLAGS are as in pp_gimple_stmt_1. */
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
474
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
475 static void
111
kono
parents: 67
diff changeset
476 dump_ternary_rhs (pretty_printer *buffer, gassign *gs, int spc,
kono
parents: 67
diff changeset
477 dump_flags_t flags)
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
478 {
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
479 const char *p;
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
480 enum tree_code code = gimple_assign_rhs_code (gs);
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
481 switch (code)
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
482 {
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
483 case WIDEN_MULT_PLUS_EXPR:
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
484 case WIDEN_MULT_MINUS_EXPR:
111
kono
parents: 67
diff changeset
485 for (p = get_tree_code_name (code); *p; p++)
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
486 pp_character (buffer, TOUPPER (*p));
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
487 pp_string (buffer, " <");
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
488 dump_generic_node (buffer, gimple_assign_rhs1 (gs), spc, flags, false);
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
489 pp_string (buffer, ", ");
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
490 dump_generic_node (buffer, gimple_assign_rhs2 (gs), spc, flags, false);
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
491 pp_string (buffer, ", ");
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
492 dump_generic_node (buffer, gimple_assign_rhs3 (gs), spc, flags, false);
111
kono
parents: 67
diff changeset
493 pp_greater (buffer);
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
494 break;
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
495
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
496 case FMA_EXPR:
111
kono
parents: 67
diff changeset
497 if (flags & TDF_GIMPLE)
kono
parents: 67
diff changeset
498 {
kono
parents: 67
diff changeset
499 pp_string (buffer, "__FMA (");
kono
parents: 67
diff changeset
500 dump_generic_node (buffer, gimple_assign_rhs1 (gs), spc, flags, false);
kono
parents: 67
diff changeset
501 pp_comma (buffer);
kono
parents: 67
diff changeset
502 dump_generic_node (buffer, gimple_assign_rhs2 (gs), spc, flags, false);
kono
parents: 67
diff changeset
503 pp_comma (buffer);
kono
parents: 67
diff changeset
504 dump_generic_node (buffer, gimple_assign_rhs3 (gs), spc, flags, false);
kono
parents: 67
diff changeset
505 pp_right_paren (buffer);
kono
parents: 67
diff changeset
506 }
kono
parents: 67
diff changeset
507 else
kono
parents: 67
diff changeset
508 {
kono
parents: 67
diff changeset
509 dump_generic_node (buffer, gimple_assign_rhs1 (gs), spc, flags, false);
kono
parents: 67
diff changeset
510 pp_string (buffer, " * ");
kono
parents: 67
diff changeset
511 dump_generic_node (buffer, gimple_assign_rhs2 (gs), spc, flags, false);
kono
parents: 67
diff changeset
512 pp_string (buffer, " + ");
kono
parents: 67
diff changeset
513 dump_generic_node (buffer, gimple_assign_rhs3 (gs), spc, flags, false);
kono
parents: 67
diff changeset
514 }
kono
parents: 67
diff changeset
515 break;
kono
parents: 67
diff changeset
516
kono
parents: 67
diff changeset
517 case DOT_PROD_EXPR:
kono
parents: 67
diff changeset
518 pp_string (buffer, "DOT_PROD_EXPR <");
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
519 dump_generic_node (buffer, gimple_assign_rhs1 (gs), spc, flags, false);
111
kono
parents: 67
diff changeset
520 pp_string (buffer, ", ");
kono
parents: 67
diff changeset
521 dump_generic_node (buffer, gimple_assign_rhs2 (gs), spc, flags, false);
kono
parents: 67
diff changeset
522 pp_string (buffer, ", ");
kono
parents: 67
diff changeset
523 dump_generic_node (buffer, gimple_assign_rhs3 (gs), spc, flags, false);
kono
parents: 67
diff changeset
524 pp_greater (buffer);
kono
parents: 67
diff changeset
525 break;
kono
parents: 67
diff changeset
526
kono
parents: 67
diff changeset
527 case SAD_EXPR:
kono
parents: 67
diff changeset
528 pp_string (buffer, "SAD_EXPR <");
kono
parents: 67
diff changeset
529 dump_generic_node (buffer, gimple_assign_rhs1 (gs), spc, flags, false);
kono
parents: 67
diff changeset
530 pp_string (buffer, ", ");
kono
parents: 67
diff changeset
531 dump_generic_node (buffer, gimple_assign_rhs2 (gs), spc, flags, false);
kono
parents: 67
diff changeset
532 pp_string (buffer, ", ");
kono
parents: 67
diff changeset
533 dump_generic_node (buffer, gimple_assign_rhs3 (gs), spc, flags, false);
kono
parents: 67
diff changeset
534 pp_greater (buffer);
kono
parents: 67
diff changeset
535 break;
kono
parents: 67
diff changeset
536
kono
parents: 67
diff changeset
537 case VEC_PERM_EXPR:
kono
parents: 67
diff changeset
538 pp_string (buffer, "VEC_PERM_EXPR <");
kono
parents: 67
diff changeset
539 dump_generic_node (buffer, gimple_assign_rhs1 (gs), spc, flags, false);
kono
parents: 67
diff changeset
540 pp_string (buffer, ", ");
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
541 dump_generic_node (buffer, gimple_assign_rhs2 (gs), spc, flags, false);
111
kono
parents: 67
diff changeset
542 pp_string (buffer, ", ");
kono
parents: 67
diff changeset
543 dump_generic_node (buffer, gimple_assign_rhs3 (gs), spc, flags, false);
kono
parents: 67
diff changeset
544 pp_greater (buffer);
kono
parents: 67
diff changeset
545 break;
kono
parents: 67
diff changeset
546
kono
parents: 67
diff changeset
547 case REALIGN_LOAD_EXPR:
kono
parents: 67
diff changeset
548 pp_string (buffer, "REALIGN_LOAD <");
kono
parents: 67
diff changeset
549 dump_generic_node (buffer, gimple_assign_rhs1 (gs), spc, flags, false);
kono
parents: 67
diff changeset
550 pp_string (buffer, ", ");
kono
parents: 67
diff changeset
551 dump_generic_node (buffer, gimple_assign_rhs2 (gs), spc, flags, false);
kono
parents: 67
diff changeset
552 pp_string (buffer, ", ");
kono
parents: 67
diff changeset
553 dump_generic_node (buffer, gimple_assign_rhs3 (gs), spc, flags, false);
kono
parents: 67
diff changeset
554 pp_greater (buffer);
kono
parents: 67
diff changeset
555 break;
kono
parents: 67
diff changeset
556
kono
parents: 67
diff changeset
557 case COND_EXPR:
kono
parents: 67
diff changeset
558 dump_generic_node (buffer, gimple_assign_rhs1 (gs), spc, flags, false);
kono
parents: 67
diff changeset
559 pp_string (buffer, " ? ");
kono
parents: 67
diff changeset
560 dump_generic_node (buffer, gimple_assign_rhs2 (gs), spc, flags, false);
kono
parents: 67
diff changeset
561 pp_string (buffer, " : ");
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
562 dump_generic_node (buffer, gimple_assign_rhs3 (gs), spc, flags, false);
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
563 break;
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
564
111
kono
parents: 67
diff changeset
565 case VEC_COND_EXPR:
kono
parents: 67
diff changeset
566 pp_string (buffer, "VEC_COND_EXPR <");
kono
parents: 67
diff changeset
567 dump_generic_node (buffer, gimple_assign_rhs1 (gs), spc, flags, false);
kono
parents: 67
diff changeset
568 pp_string (buffer, ", ");
kono
parents: 67
diff changeset
569 dump_generic_node (buffer, gimple_assign_rhs2 (gs), spc, flags, false);
kono
parents: 67
diff changeset
570 pp_string (buffer, ", ");
kono
parents: 67
diff changeset
571 dump_generic_node (buffer, gimple_assign_rhs3 (gs), spc, flags, false);
kono
parents: 67
diff changeset
572 pp_greater (buffer);
kono
parents: 67
diff changeset
573 break;
kono
parents: 67
diff changeset
574
kono
parents: 67
diff changeset
575 case BIT_INSERT_EXPR:
kono
parents: 67
diff changeset
576 pp_string (buffer, "BIT_INSERT_EXPR <");
kono
parents: 67
diff changeset
577 dump_generic_node (buffer, gimple_assign_rhs1 (gs), spc, flags, false);
kono
parents: 67
diff changeset
578 pp_string (buffer, ", ");
kono
parents: 67
diff changeset
579 dump_generic_node (buffer, gimple_assign_rhs2 (gs), spc, flags, false);
kono
parents: 67
diff changeset
580 pp_string (buffer, ", ");
kono
parents: 67
diff changeset
581 dump_generic_node (buffer, gimple_assign_rhs3 (gs), spc, flags, false);
kono
parents: 67
diff changeset
582 pp_string (buffer, " (");
kono
parents: 67
diff changeset
583 if (INTEGRAL_TYPE_P (TREE_TYPE (gimple_assign_rhs2 (gs))))
kono
parents: 67
diff changeset
584 pp_decimal_int (buffer,
kono
parents: 67
diff changeset
585 TYPE_PRECISION (TREE_TYPE (gimple_assign_rhs2 (gs))));
kono
parents: 67
diff changeset
586 else
kono
parents: 67
diff changeset
587 dump_generic_node (buffer,
kono
parents: 67
diff changeset
588 TYPE_SIZE (TREE_TYPE (gimple_assign_rhs2 (gs))),
kono
parents: 67
diff changeset
589 spc, flags, false);
kono
parents: 67
diff changeset
590 pp_string (buffer, " bits)>");
kono
parents: 67
diff changeset
591 break;
kono
parents: 67
diff changeset
592
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
593 default:
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
594 gcc_unreachable ();
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
595 }
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
596 }
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
597
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
598
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
599 /* Dump the gimple assignment GS. BUFFER, SPC and FLAGS are as in
111
kono
parents: 67
diff changeset
600 pp_gimple_stmt_1. */
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
601
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
602 static void
111
kono
parents: 67
diff changeset
603 dump_gimple_assign (pretty_printer *buffer, gassign *gs, int spc,
kono
parents: 67
diff changeset
604 dump_flags_t flags)
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
605 {
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
606 if (flags & TDF_RAW)
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
607 {
111
kono
parents: 67
diff changeset
608 tree arg1 = NULL;
kono
parents: 67
diff changeset
609 tree arg2 = NULL;
kono
parents: 67
diff changeset
610 tree arg3 = NULL;
kono
parents: 67
diff changeset
611 switch (gimple_num_ops (gs))
kono
parents: 67
diff changeset
612 {
kono
parents: 67
diff changeset
613 case 4:
kono
parents: 67
diff changeset
614 arg3 = gimple_assign_rhs3 (gs);
kono
parents: 67
diff changeset
615 /* FALLTHRU */
kono
parents: 67
diff changeset
616 case 3:
kono
parents: 67
diff changeset
617 arg2 = gimple_assign_rhs2 (gs);
kono
parents: 67
diff changeset
618 /* FALLTHRU */
kono
parents: 67
diff changeset
619 case 2:
kono
parents: 67
diff changeset
620 arg1 = gimple_assign_rhs1 (gs);
kono
parents: 67
diff changeset
621 break;
kono
parents: 67
diff changeset
622 default:
kono
parents: 67
diff changeset
623 gcc_unreachable ();
kono
parents: 67
diff changeset
624 }
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
625
111
kono
parents: 67
diff changeset
626 dump_gimple_fmt (buffer, spc, flags, "%G <%s, %T, %T, %T, %T>", gs,
kono
parents: 67
diff changeset
627 get_tree_code_name (gimple_assign_rhs_code (gs)),
kono
parents: 67
diff changeset
628 gimple_assign_lhs (gs), arg1, arg2, arg3);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
629 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
630 else
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
631 {
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
632 if (!(flags & TDF_RHS_ONLY))
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
633 {
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
634 dump_generic_node (buffer, gimple_assign_lhs (gs), spc, flags, false);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
635 pp_space (buffer);
111
kono
parents: 67
diff changeset
636 pp_equal (buffer);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
637
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
638 if (gimple_assign_nontemporal_move_p (gs))
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
639 pp_string (buffer, "{nt}");
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
640
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
641 if (gimple_has_volatile_ops (gs))
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
642 pp_string (buffer, "{v}");
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
643
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
644 pp_space (buffer);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
645 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
646
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
647 if (gimple_num_ops (gs) == 2)
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
648 dump_unary_rhs (buffer, gs, spc, flags);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
649 else if (gimple_num_ops (gs) == 3)
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
650 dump_binary_rhs (buffer, gs, spc, flags);
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
651 else if (gimple_num_ops (gs) == 4)
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
652 dump_ternary_rhs (buffer, gs, spc, flags);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
653 else
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
654 gcc_unreachable ();
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
655 if (!(flags & TDF_RHS_ONLY))
111
kono
parents: 67
diff changeset
656 pp_semicolon (buffer);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
657 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
658 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
659
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
660
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
661 /* Dump the return statement GS. BUFFER, SPC and FLAGS are as in
111
kono
parents: 67
diff changeset
662 pp_gimple_stmt_1. */
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
663
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
664 static void
111
kono
parents: 67
diff changeset
665 dump_gimple_return (pretty_printer *buffer, greturn *gs, int spc,
kono
parents: 67
diff changeset
666 dump_flags_t flags)
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
667 {
111
kono
parents: 67
diff changeset
668 tree t, t2;
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
669
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
670 t = gimple_return_retval (gs);
111
kono
parents: 67
diff changeset
671 t2 = gimple_return_retbnd (gs);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
672 if (flags & TDF_RAW)
111
kono
parents: 67
diff changeset
673 dump_gimple_fmt (buffer, spc, flags, "%G <%T %T>", gs, t, t2);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
674 else
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
675 {
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
676 pp_string (buffer, "return");
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
677 if (t)
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
678 {
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
679 pp_space (buffer);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
680 dump_generic_node (buffer, t, spc, flags, false);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
681 }
111
kono
parents: 67
diff changeset
682 if (t2)
kono
parents: 67
diff changeset
683 {
kono
parents: 67
diff changeset
684 pp_string (buffer, ", ");
kono
parents: 67
diff changeset
685 dump_generic_node (buffer, t2, spc, flags, false);
kono
parents: 67
diff changeset
686 }
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
687 pp_semicolon (buffer);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
688 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
689 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
690
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
691
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
692 /* Dump the call arguments for a gimple call. BUFFER, FLAGS are as in
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
693 dump_gimple_call. */
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
694
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
695 static void
111
kono
parents: 67
diff changeset
696 dump_gimple_call_args (pretty_printer *buffer, gcall *gs, dump_flags_t flags)
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
697 {
111
kono
parents: 67
diff changeset
698 size_t i = 0;
kono
parents: 67
diff changeset
699
kono
parents: 67
diff changeset
700 /* Pretty print first arg to certain internal fns. */
kono
parents: 67
diff changeset
701 if (gimple_call_internal_p (gs))
kono
parents: 67
diff changeset
702 {
kono
parents: 67
diff changeset
703 const char *const *enums = NULL;
kono
parents: 67
diff changeset
704 unsigned limit = 0;
kono
parents: 67
diff changeset
705
kono
parents: 67
diff changeset
706 switch (gimple_call_internal_fn (gs))
kono
parents: 67
diff changeset
707 {
kono
parents: 67
diff changeset
708 case IFN_UNIQUE:
kono
parents: 67
diff changeset
709 #define DEF(X) #X
kono
parents: 67
diff changeset
710 static const char *const unique_args[] = {IFN_UNIQUE_CODES};
kono
parents: 67
diff changeset
711 #undef DEF
kono
parents: 67
diff changeset
712 enums = unique_args;
kono
parents: 67
diff changeset
713
kono
parents: 67
diff changeset
714 limit = ARRAY_SIZE (unique_args);
kono
parents: 67
diff changeset
715 break;
kono
parents: 67
diff changeset
716
kono
parents: 67
diff changeset
717 case IFN_GOACC_LOOP:
kono
parents: 67
diff changeset
718 #define DEF(X) #X
kono
parents: 67
diff changeset
719 static const char *const loop_args[] = {IFN_GOACC_LOOP_CODES};
kono
parents: 67
diff changeset
720 #undef DEF
kono
parents: 67
diff changeset
721 enums = loop_args;
kono
parents: 67
diff changeset
722 limit = ARRAY_SIZE (loop_args);
kono
parents: 67
diff changeset
723 break;
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
724
111
kono
parents: 67
diff changeset
725 case IFN_GOACC_REDUCTION:
kono
parents: 67
diff changeset
726 #define DEF(X) #X
kono
parents: 67
diff changeset
727 static const char *const reduction_args[]
kono
parents: 67
diff changeset
728 = {IFN_GOACC_REDUCTION_CODES};
kono
parents: 67
diff changeset
729 #undef DEF
kono
parents: 67
diff changeset
730 enums = reduction_args;
kono
parents: 67
diff changeset
731 limit = ARRAY_SIZE (reduction_args);
kono
parents: 67
diff changeset
732 break;
kono
parents: 67
diff changeset
733
kono
parents: 67
diff changeset
734 case IFN_ASAN_MARK:
kono
parents: 67
diff changeset
735 #define DEF(X) #X
kono
parents: 67
diff changeset
736 static const char *const asan_mark_args[] = {IFN_ASAN_MARK_FLAGS};
kono
parents: 67
diff changeset
737 #undef DEF
kono
parents: 67
diff changeset
738 enums = asan_mark_args;
kono
parents: 67
diff changeset
739 limit = ARRAY_SIZE (asan_mark_args);
kono
parents: 67
diff changeset
740 break;
kono
parents: 67
diff changeset
741
kono
parents: 67
diff changeset
742 default:
kono
parents: 67
diff changeset
743 break;
kono
parents: 67
diff changeset
744 }
kono
parents: 67
diff changeset
745 if (limit)
kono
parents: 67
diff changeset
746 {
kono
parents: 67
diff changeset
747 tree arg0 = gimple_call_arg (gs, 0);
kono
parents: 67
diff changeset
748 HOST_WIDE_INT v;
kono
parents: 67
diff changeset
749
kono
parents: 67
diff changeset
750 if (TREE_CODE (arg0) == INTEGER_CST
kono
parents: 67
diff changeset
751 && tree_fits_shwi_p (arg0)
kono
parents: 67
diff changeset
752 && (v = tree_to_shwi (arg0)) >= 0 && v < limit)
kono
parents: 67
diff changeset
753 {
kono
parents: 67
diff changeset
754 i++;
kono
parents: 67
diff changeset
755 pp_string (buffer, enums[v]);
kono
parents: 67
diff changeset
756 }
kono
parents: 67
diff changeset
757 }
kono
parents: 67
diff changeset
758 }
kono
parents: 67
diff changeset
759
kono
parents: 67
diff changeset
760 for (; i < gimple_call_num_args (gs); i++)
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
761 {
111
kono
parents: 67
diff changeset
762 if (i)
kono
parents: 67
diff changeset
763 pp_string (buffer, ", ");
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
764 dump_generic_node (buffer, gimple_call_arg (gs, i), 0, flags, false);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
765 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
766
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
767 if (gimple_call_va_arg_pack_p (gs))
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
768 {
111
kono
parents: 67
diff changeset
769 if (i)
kono
parents: 67
diff changeset
770 pp_string (buffer, ", ");
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
771
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
772 pp_string (buffer, "__builtin_va_arg_pack ()");
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
773 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
774 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
775
63
b7f97abdc517 update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 55
diff changeset
776 /* Dump the points-to solution *PT to BUFFER. */
b7f97abdc517 update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 55
diff changeset
777
b7f97abdc517 update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 55
diff changeset
778 static void
b7f97abdc517 update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 55
diff changeset
779 pp_points_to_solution (pretty_printer *buffer, struct pt_solution *pt)
b7f97abdc517 update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 55
diff changeset
780 {
b7f97abdc517 update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 55
diff changeset
781 if (pt->anything)
b7f97abdc517 update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 55
diff changeset
782 {
b7f97abdc517 update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 55
diff changeset
783 pp_string (buffer, "anything ");
b7f97abdc517 update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 55
diff changeset
784 return;
b7f97abdc517 update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 55
diff changeset
785 }
b7f97abdc517 update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 55
diff changeset
786 if (pt->nonlocal)
b7f97abdc517 update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 55
diff changeset
787 pp_string (buffer, "nonlocal ");
b7f97abdc517 update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 55
diff changeset
788 if (pt->escaped)
b7f97abdc517 update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 55
diff changeset
789 pp_string (buffer, "escaped ");
b7f97abdc517 update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 55
diff changeset
790 if (pt->ipa_escaped)
b7f97abdc517 update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 55
diff changeset
791 pp_string (buffer, "unit-escaped ");
b7f97abdc517 update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 55
diff changeset
792 if (pt->null)
b7f97abdc517 update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 55
diff changeset
793 pp_string (buffer, "null ");
b7f97abdc517 update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 55
diff changeset
794 if (pt->vars
b7f97abdc517 update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 55
diff changeset
795 && !bitmap_empty_p (pt->vars))
b7f97abdc517 update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 55
diff changeset
796 {
b7f97abdc517 update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 55
diff changeset
797 bitmap_iterator bi;
b7f97abdc517 update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 55
diff changeset
798 unsigned i;
b7f97abdc517 update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 55
diff changeset
799 pp_string (buffer, "{ ");
b7f97abdc517 update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 55
diff changeset
800 EXECUTE_IF_SET_IN_BITMAP (pt->vars, 0, i, bi)
b7f97abdc517 update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 55
diff changeset
801 {
111
kono
parents: 67
diff changeset
802 pp_string (buffer, "D.");
kono
parents: 67
diff changeset
803 pp_decimal_int (buffer, i);
kono
parents: 67
diff changeset
804 pp_space (buffer);
kono
parents: 67
diff changeset
805 }
kono
parents: 67
diff changeset
806 pp_right_brace (buffer);
kono
parents: 67
diff changeset
807 if (pt->vars_contains_nonlocal
kono
parents: 67
diff changeset
808 || pt->vars_contains_escaped
kono
parents: 67
diff changeset
809 || pt->vars_contains_escaped_heap
kono
parents: 67
diff changeset
810 || pt->vars_contains_restrict)
kono
parents: 67
diff changeset
811 {
kono
parents: 67
diff changeset
812 const char *comma = "";
kono
parents: 67
diff changeset
813 pp_string (buffer, " (");
kono
parents: 67
diff changeset
814 if (pt->vars_contains_nonlocal)
63
b7f97abdc517 update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 55
diff changeset
815 {
111
kono
parents: 67
diff changeset
816 pp_string (buffer, "nonlocal");
kono
parents: 67
diff changeset
817 comma = ", ";
63
b7f97abdc517 update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 55
diff changeset
818 }
111
kono
parents: 67
diff changeset
819 if (pt->vars_contains_escaped)
63
b7f97abdc517 update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 55
diff changeset
820 {
111
kono
parents: 67
diff changeset
821 pp_string (buffer, comma);
kono
parents: 67
diff changeset
822 pp_string (buffer, "escaped");
kono
parents: 67
diff changeset
823 comma = ", ";
kono
parents: 67
diff changeset
824 }
kono
parents: 67
diff changeset
825 if (pt->vars_contains_escaped_heap)
kono
parents: 67
diff changeset
826 {
kono
parents: 67
diff changeset
827 pp_string (buffer, comma);
kono
parents: 67
diff changeset
828 pp_string (buffer, "escaped heap");
kono
parents: 67
diff changeset
829 comma = ", ";
63
b7f97abdc517 update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 55
diff changeset
830 }
111
kono
parents: 67
diff changeset
831 if (pt->vars_contains_restrict)
kono
parents: 67
diff changeset
832 {
kono
parents: 67
diff changeset
833 pp_string (buffer, comma);
kono
parents: 67
diff changeset
834 pp_string (buffer, "restrict");
kono
parents: 67
diff changeset
835 comma = ", ";
kono
parents: 67
diff changeset
836 }
kono
parents: 67
diff changeset
837 if (pt->vars_contains_interposable)
kono
parents: 67
diff changeset
838 {
kono
parents: 67
diff changeset
839 pp_string (buffer, comma);
kono
parents: 67
diff changeset
840 pp_string (buffer, "interposable");
kono
parents: 67
diff changeset
841 }
kono
parents: 67
diff changeset
842 pp_string (buffer, ")");
63
b7f97abdc517 update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 55
diff changeset
843 }
111
kono
parents: 67
diff changeset
844
63
b7f97abdc517 update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 55
diff changeset
845 }
b7f97abdc517 update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 55
diff changeset
846 }
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
847
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
848 /* Dump the call statement GS. BUFFER, SPC and FLAGS are as in
111
kono
parents: 67
diff changeset
849 pp_gimple_stmt_1. */
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
850
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
851 static void
111
kono
parents: 67
diff changeset
852 dump_gimple_call (pretty_printer *buffer, gcall *gs, int spc,
kono
parents: 67
diff changeset
853 dump_flags_t flags)
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
854 {
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
855 tree lhs = gimple_call_lhs (gs);
111
kono
parents: 67
diff changeset
856 tree fn = gimple_call_fn (gs);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
857
63
b7f97abdc517 update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 55
diff changeset
858 if (flags & TDF_ALIAS)
b7f97abdc517 update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 55
diff changeset
859 {
b7f97abdc517 update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 55
diff changeset
860 struct pt_solution *pt;
b7f97abdc517 update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 55
diff changeset
861 pt = gimple_call_use_set (gs);
b7f97abdc517 update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 55
diff changeset
862 if (!pt_solution_empty_p (pt))
b7f97abdc517 update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 55
diff changeset
863 {
b7f97abdc517 update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 55
diff changeset
864 pp_string (buffer, "# USE = ");
b7f97abdc517 update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 55
diff changeset
865 pp_points_to_solution (buffer, pt);
b7f97abdc517 update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 55
diff changeset
866 newline_and_indent (buffer, spc);
b7f97abdc517 update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 55
diff changeset
867 }
b7f97abdc517 update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 55
diff changeset
868 pt = gimple_call_clobber_set (gs);
b7f97abdc517 update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 55
diff changeset
869 if (!pt_solution_empty_p (pt))
b7f97abdc517 update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 55
diff changeset
870 {
b7f97abdc517 update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 55
diff changeset
871 pp_string (buffer, "# CLB = ");
b7f97abdc517 update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 55
diff changeset
872 pp_points_to_solution (buffer, pt);
b7f97abdc517 update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 55
diff changeset
873 newline_and_indent (buffer, spc);
b7f97abdc517 update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 55
diff changeset
874 }
b7f97abdc517 update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 55
diff changeset
875 }
b7f97abdc517 update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 55
diff changeset
876
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
877 if (flags & TDF_RAW)
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
878 {
111
kono
parents: 67
diff changeset
879 if (gimple_call_internal_p (gs))
kono
parents: 67
diff changeset
880 dump_gimple_fmt (buffer, spc, flags, "%G <%s, %T", gs,
kono
parents: 67
diff changeset
881 internal_fn_name (gimple_call_internal_fn (gs)), lhs);
kono
parents: 67
diff changeset
882 else
kono
parents: 67
diff changeset
883 dump_gimple_fmt (buffer, spc, flags, "%G <%T, %T", gs, fn, lhs);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
884 if (gimple_call_num_args (gs) > 0)
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
885 {
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
886 pp_string (buffer, ", ");
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
887 dump_gimple_call_args (buffer, gs, flags);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
888 }
111
kono
parents: 67
diff changeset
889 pp_greater (buffer);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
890 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
891 else
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
892 {
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
893 if (lhs && !(flags & TDF_RHS_ONLY))
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
894 {
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
895 dump_generic_node (buffer, lhs, spc, flags, false);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
896 pp_string (buffer, " =");
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
897
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
898 if (gimple_has_volatile_ops (gs))
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
899 pp_string (buffer, "{v}");
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
900
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
901 pp_space (buffer);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
902 }
111
kono
parents: 67
diff changeset
903 if (gimple_call_internal_p (gs))
kono
parents: 67
diff changeset
904 pp_string (buffer, internal_fn_name (gimple_call_internal_fn (gs)));
kono
parents: 67
diff changeset
905 else
kono
parents: 67
diff changeset
906 print_call_name (buffer, fn, flags);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
907 pp_string (buffer, " (");
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
908 dump_gimple_call_args (buffer, gs, flags);
111
kono
parents: 67
diff changeset
909 pp_right_paren (buffer);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
910 if (!(flags & TDF_RHS_ONLY))
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
911 pp_semicolon (buffer);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
912 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
913
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
914 if (gimple_call_chain (gs))
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
915 {
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
916 pp_string (buffer, " [static-chain: ");
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
917 dump_generic_node (buffer, gimple_call_chain (gs), spc, flags, false);
111
kono
parents: 67
diff changeset
918 pp_right_bracket (buffer);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
919 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
920
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
921 if (gimple_call_return_slot_opt_p (gs))
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
922 pp_string (buffer, " [return slot optimization]");
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
923 if (gimple_call_tail_p (gs))
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
924 pp_string (buffer, " [tail call]");
111
kono
parents: 67
diff changeset
925 if (gimple_call_must_tail_p (gs))
kono
parents: 67
diff changeset
926 pp_string (buffer, " [must tail call]");
kono
parents: 67
diff changeset
927
kono
parents: 67
diff changeset
928 if (fn == NULL)
kono
parents: 67
diff changeset
929 return;
kono
parents: 67
diff changeset
930
kono
parents: 67
diff changeset
931 /* Dump the arguments of _ITM_beginTransaction sanely. */
kono
parents: 67
diff changeset
932 if (TREE_CODE (fn) == ADDR_EXPR)
kono
parents: 67
diff changeset
933 fn = TREE_OPERAND (fn, 0);
kono
parents: 67
diff changeset
934 if (TREE_CODE (fn) == FUNCTION_DECL && decl_is_tm_clone (fn))
kono
parents: 67
diff changeset
935 pp_string (buffer, " [tm-clone]");
kono
parents: 67
diff changeset
936 if (TREE_CODE (fn) == FUNCTION_DECL
kono
parents: 67
diff changeset
937 && DECL_BUILT_IN_CLASS (fn) == BUILT_IN_NORMAL
kono
parents: 67
diff changeset
938 && DECL_FUNCTION_CODE (fn) == BUILT_IN_TM_START
kono
parents: 67
diff changeset
939 && gimple_call_num_args (gs) > 0)
kono
parents: 67
diff changeset
940 {
kono
parents: 67
diff changeset
941 tree t = gimple_call_arg (gs, 0);
kono
parents: 67
diff changeset
942 unsigned HOST_WIDE_INT props;
kono
parents: 67
diff changeset
943 gcc_assert (TREE_CODE (t) == INTEGER_CST);
kono
parents: 67
diff changeset
944
kono
parents: 67
diff changeset
945 pp_string (buffer, " [ ");
kono
parents: 67
diff changeset
946
kono
parents: 67
diff changeset
947 /* Get the transaction code properties. */
kono
parents: 67
diff changeset
948 props = TREE_INT_CST_LOW (t);
kono
parents: 67
diff changeset
949
kono
parents: 67
diff changeset
950 if (props & PR_INSTRUMENTEDCODE)
kono
parents: 67
diff changeset
951 pp_string (buffer, "instrumentedCode ");
kono
parents: 67
diff changeset
952 if (props & PR_UNINSTRUMENTEDCODE)
kono
parents: 67
diff changeset
953 pp_string (buffer, "uninstrumentedCode ");
kono
parents: 67
diff changeset
954 if (props & PR_HASNOXMMUPDATE)
kono
parents: 67
diff changeset
955 pp_string (buffer, "hasNoXMMUpdate ");
kono
parents: 67
diff changeset
956 if (props & PR_HASNOABORT)
kono
parents: 67
diff changeset
957 pp_string (buffer, "hasNoAbort ");
kono
parents: 67
diff changeset
958 if (props & PR_HASNOIRREVOCABLE)
kono
parents: 67
diff changeset
959 pp_string (buffer, "hasNoIrrevocable ");
kono
parents: 67
diff changeset
960 if (props & PR_DOESGOIRREVOCABLE)
kono
parents: 67
diff changeset
961 pp_string (buffer, "doesGoIrrevocable ");
kono
parents: 67
diff changeset
962 if (props & PR_HASNOSIMPLEREADS)
kono
parents: 67
diff changeset
963 pp_string (buffer, "hasNoSimpleReads ");
kono
parents: 67
diff changeset
964 if (props & PR_AWBARRIERSOMITTED)
kono
parents: 67
diff changeset
965 pp_string (buffer, "awBarriersOmitted ");
kono
parents: 67
diff changeset
966 if (props & PR_RARBARRIERSOMITTED)
kono
parents: 67
diff changeset
967 pp_string (buffer, "RaRBarriersOmitted ");
kono
parents: 67
diff changeset
968 if (props & PR_UNDOLOGCODE)
kono
parents: 67
diff changeset
969 pp_string (buffer, "undoLogCode ");
kono
parents: 67
diff changeset
970 if (props & PR_PREFERUNINSTRUMENTED)
kono
parents: 67
diff changeset
971 pp_string (buffer, "preferUninstrumented ");
kono
parents: 67
diff changeset
972 if (props & PR_EXCEPTIONBLOCK)
kono
parents: 67
diff changeset
973 pp_string (buffer, "exceptionBlock ");
kono
parents: 67
diff changeset
974 if (props & PR_HASELSE)
kono
parents: 67
diff changeset
975 pp_string (buffer, "hasElse ");
kono
parents: 67
diff changeset
976 if (props & PR_READONLY)
kono
parents: 67
diff changeset
977 pp_string (buffer, "readOnly ");
kono
parents: 67
diff changeset
978
kono
parents: 67
diff changeset
979 pp_right_bracket (buffer);
kono
parents: 67
diff changeset
980 }
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
981 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
982
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
983
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
984 /* Dump the switch statement GS. BUFFER, SPC and FLAGS are as in
111
kono
parents: 67
diff changeset
985 pp_gimple_stmt_1. */
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
986
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
987 static void
111
kono
parents: 67
diff changeset
988 dump_gimple_switch (pretty_printer *buffer, gswitch *gs, int spc,
kono
parents: 67
diff changeset
989 dump_flags_t flags)
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
990 {
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
991 unsigned int i;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
992
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
993 GIMPLE_CHECK (gs, GIMPLE_SWITCH);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
994 if (flags & TDF_RAW)
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
995 dump_gimple_fmt (buffer, spc, flags, "%G <%T, ", gs,
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
996 gimple_switch_index (gs));
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
997 else
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
998 {
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
999 pp_string (buffer, "switch (");
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1000 dump_generic_node (buffer, gimple_switch_index (gs), spc, flags, true);
111
kono
parents: 67
diff changeset
1001 if (flags & TDF_GIMPLE)
kono
parents: 67
diff changeset
1002 pp_string (buffer, ") {");
kono
parents: 67
diff changeset
1003 else
kono
parents: 67
diff changeset
1004 pp_string (buffer, ") <");
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1005 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1006
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1007 for (i = 0; i < gimple_switch_num_labels (gs); i++)
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1008 {
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1009 tree case_label = gimple_switch_label (gs, i);
111
kono
parents: 67
diff changeset
1010 gcc_checking_assert (case_label != NULL_TREE);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1011 dump_generic_node (buffer, case_label, spc, flags, false);
111
kono
parents: 67
diff changeset
1012 pp_space (buffer);
kono
parents: 67
diff changeset
1013 tree label = CASE_LABEL (case_label);
kono
parents: 67
diff changeset
1014 dump_generic_node (buffer, label, spc, flags, false);
kono
parents: 67
diff changeset
1015
kono
parents: 67
diff changeset
1016 if (cfun && cfun->cfg)
kono
parents: 67
diff changeset
1017 {
kono
parents: 67
diff changeset
1018 basic_block dest = label_to_block (label);
kono
parents: 67
diff changeset
1019 if (dest)
kono
parents: 67
diff changeset
1020 {
kono
parents: 67
diff changeset
1021 edge label_edge = find_edge (gimple_bb (gs), dest);
kono
parents: 67
diff changeset
1022 if (label_edge && !(flags & TDF_GIMPLE))
kono
parents: 67
diff changeset
1023 dump_edge_probability (buffer, label_edge);
kono
parents: 67
diff changeset
1024 }
kono
parents: 67
diff changeset
1025 }
kono
parents: 67
diff changeset
1026
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1027 if (i < gimple_switch_num_labels (gs) - 1)
111
kono
parents: 67
diff changeset
1028 {
kono
parents: 67
diff changeset
1029 if (flags & TDF_GIMPLE)
kono
parents: 67
diff changeset
1030 pp_string (buffer, "; ");
kono
parents: 67
diff changeset
1031 else
kono
parents: 67
diff changeset
1032 pp_string (buffer, ", ");
kono
parents: 67
diff changeset
1033 }
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1034 }
111
kono
parents: 67
diff changeset
1035 if (flags & TDF_GIMPLE)
kono
parents: 67
diff changeset
1036 pp_string (buffer, "; }");
kono
parents: 67
diff changeset
1037 else
kono
parents: 67
diff changeset
1038 pp_greater (buffer);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1039 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1040
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1041
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1042 /* Dump the gimple conditional GS. BUFFER, SPC and FLAGS are as in
111
kono
parents: 67
diff changeset
1043 pp_gimple_stmt_1. */
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1044
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1045 static void
111
kono
parents: 67
diff changeset
1046 dump_gimple_cond (pretty_printer *buffer, gcond *gs, int spc,
kono
parents: 67
diff changeset
1047 dump_flags_t flags)
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1048 {
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1049 if (flags & TDF_RAW)
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1050 dump_gimple_fmt (buffer, spc, flags, "%G <%s, %T, %T, %T, %T>", gs,
111
kono
parents: 67
diff changeset
1051 get_tree_code_name (gimple_cond_code (gs)),
kono
parents: 67
diff changeset
1052 gimple_cond_lhs (gs), gimple_cond_rhs (gs),
kono
parents: 67
diff changeset
1053 gimple_cond_true_label (gs), gimple_cond_false_label (gs));
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1054 else
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1055 {
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1056 if (!(flags & TDF_RHS_ONLY))
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1057 pp_string (buffer, "if (");
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1058 dump_generic_node (buffer, gimple_cond_lhs (gs), spc, flags, false);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1059 pp_space (buffer);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1060 pp_string (buffer, op_symbol_code (gimple_cond_code (gs)));
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1061 pp_space (buffer);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1062 dump_generic_node (buffer, gimple_cond_rhs (gs), spc, flags, false);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1063 if (!(flags & TDF_RHS_ONLY))
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1064 {
111
kono
parents: 67
diff changeset
1065 edge_iterator ei;
kono
parents: 67
diff changeset
1066 edge e, true_edge = NULL, false_edge = NULL;
kono
parents: 67
diff changeset
1067 basic_block bb = gimple_bb (gs);
kono
parents: 67
diff changeset
1068
kono
parents: 67
diff changeset
1069 if (bb)
kono
parents: 67
diff changeset
1070 {
kono
parents: 67
diff changeset
1071 FOR_EACH_EDGE (e, ei, bb->succs)
kono
parents: 67
diff changeset
1072 {
kono
parents: 67
diff changeset
1073 if (e->flags & EDGE_TRUE_VALUE)
kono
parents: 67
diff changeset
1074 true_edge = e;
kono
parents: 67
diff changeset
1075 else if (e->flags & EDGE_FALSE_VALUE)
kono
parents: 67
diff changeset
1076 false_edge = e;
kono
parents: 67
diff changeset
1077 }
kono
parents: 67
diff changeset
1078 }
kono
parents: 67
diff changeset
1079
kono
parents: 67
diff changeset
1080 bool has_edge_info = true_edge != NULL && false_edge != NULL;
kono
parents: 67
diff changeset
1081
kono
parents: 67
diff changeset
1082 pp_right_paren (buffer);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1083
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1084 if (gimple_cond_true_label (gs))
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1085 {
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1086 pp_string (buffer, " goto ");
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1087 dump_generic_node (buffer, gimple_cond_true_label (gs),
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1088 spc, flags, false);
111
kono
parents: 67
diff changeset
1089 if (has_edge_info && !(flags & TDF_GIMPLE))
kono
parents: 67
diff changeset
1090 dump_edge_probability (buffer, true_edge);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1091 pp_semicolon (buffer);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1092 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1093 if (gimple_cond_false_label (gs))
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1094 {
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1095 pp_string (buffer, " else goto ");
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1096 dump_generic_node (buffer, gimple_cond_false_label (gs),
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1097 spc, flags, false);
111
kono
parents: 67
diff changeset
1098 if (has_edge_info && !(flags & TDF_GIMPLE))
kono
parents: 67
diff changeset
1099 dump_edge_probability (buffer, false_edge);
kono
parents: 67
diff changeset
1100
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1101 pp_semicolon (buffer);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1102 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1103 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1104 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1105 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1106
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1107
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1108 /* Dump a GIMPLE_LABEL tuple on the pretty_printer BUFFER, SPC
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1109 spaces of indent. FLAGS specifies details to show in the dump (see
111
kono
parents: 67
diff changeset
1110 TDF_* in dumpfils.h). */
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1111
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1112 static void
111
kono
parents: 67
diff changeset
1113 dump_gimple_label (pretty_printer *buffer, glabel *gs, int spc,
kono
parents: 67
diff changeset
1114 dump_flags_t flags)
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1115 {
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1116 tree label = gimple_label_label (gs);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1117 if (flags & TDF_RAW)
111
kono
parents: 67
diff changeset
1118 dump_gimple_fmt (buffer, spc, flags, "%G <%T>", gs, label);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1119 else
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1120 {
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1121 dump_generic_node (buffer, label, spc, flags, false);
111
kono
parents: 67
diff changeset
1122 pp_colon (buffer);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1123 }
111
kono
parents: 67
diff changeset
1124 if (flags & TDF_GIMPLE)
kono
parents: 67
diff changeset
1125 return;
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1126 if (DECL_NONLOCAL (label))
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1127 pp_string (buffer, " [non-local]");
55
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
1128 if ((flags & TDF_EH) && EH_LANDING_PAD_NR (label))
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
1129 pp_printf (buffer, " [LP %d]", EH_LANDING_PAD_NR (label));
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1130 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1131
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1132 /* Dump a GIMPLE_GOTO tuple on the pretty_printer BUFFER, SPC
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1133 spaces of indent. FLAGS specifies details to show in the dump (see
111
kono
parents: 67
diff changeset
1134 TDF_* in dumpfile.h). */
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1135
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1136 static void
111
kono
parents: 67
diff changeset
1137 dump_gimple_goto (pretty_printer *buffer, ggoto *gs, int spc,
kono
parents: 67
diff changeset
1138 dump_flags_t flags)
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1139 {
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1140 tree label = gimple_goto_dest (gs);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1141 if (flags & TDF_RAW)
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1142 dump_gimple_fmt (buffer, spc, flags, "%G <%T>", gs, label);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1143 else
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1144 dump_gimple_fmt (buffer, spc, flags, "goto %T;", label);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1145 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1146
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1147
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1148 /* Dump a GIMPLE_BIND tuple on the pretty_printer BUFFER, SPC
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1149 spaces of indent. FLAGS specifies details to show in the dump (see
111
kono
parents: 67
diff changeset
1150 TDF_* in dumpfile.h). */
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1151
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1152 static void
111
kono
parents: 67
diff changeset
1153 dump_gimple_bind (pretty_printer *buffer, gbind *gs, int spc,
kono
parents: 67
diff changeset
1154 dump_flags_t flags)
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1155 {
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1156 if (flags & TDF_RAW)
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1157 dump_gimple_fmt (buffer, spc, flags, "%G <", gs);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1158 else
111
kono
parents: 67
diff changeset
1159 pp_left_brace (buffer);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1160 if (!(flags & TDF_SLIM))
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1161 {
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1162 tree var;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1163
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
1164 for (var = gimple_bind_vars (gs); var; var = DECL_CHAIN (var))
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1165 {
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1166 newline_and_indent (buffer, 2);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1167 print_declaration (buffer, var, spc, flags);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1168 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1169 if (gimple_bind_vars (gs))
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1170 pp_newline (buffer);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1171 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1172 pp_newline (buffer);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1173 dump_gimple_seq (buffer, gimple_bind_body (gs), spc + 2, flags);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1174 newline_and_indent (buffer, spc);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1175 if (flags & TDF_RAW)
111
kono
parents: 67
diff changeset
1176 pp_greater (buffer);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1177 else
111
kono
parents: 67
diff changeset
1178 pp_right_brace (buffer);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1179 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1180
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1181
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1182 /* Dump a GIMPLE_TRY tuple on the pretty_printer BUFFER, SPC spaces of
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1183 indent. FLAGS specifies details to show in the dump (see TDF_* in
111
kono
parents: 67
diff changeset
1184 dumpfile.h). */
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1185
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1186 static void
111
kono
parents: 67
diff changeset
1187 dump_gimple_try (pretty_printer *buffer, gtry *gs, int spc,
kono
parents: 67
diff changeset
1188 dump_flags_t flags)
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1189 {
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1190 if (flags & TDF_RAW)
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1191 {
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1192 const char *type;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1193 if (gimple_try_kind (gs) == GIMPLE_TRY_CATCH)
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1194 type = "GIMPLE_TRY_CATCH";
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1195 else if (gimple_try_kind (gs) == GIMPLE_TRY_FINALLY)
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1196 type = "GIMPLE_TRY_FINALLY";
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1197 else
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1198 type = "UNKNOWN GIMPLE_TRY";
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1199 dump_gimple_fmt (buffer, spc, flags,
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1200 "%G <%s,%+EVAL <%S>%nCLEANUP <%S>%->", gs, type,
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1201 gimple_try_eval (gs), gimple_try_cleanup (gs));
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1202 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1203 else
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1204 {
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1205 pp_string (buffer, "try");
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1206 newline_and_indent (buffer, spc + 2);
111
kono
parents: 67
diff changeset
1207 pp_left_brace (buffer);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1208 pp_newline (buffer);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1209
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1210 dump_gimple_seq (buffer, gimple_try_eval (gs), spc + 4, flags);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1211 newline_and_indent (buffer, spc + 2);
111
kono
parents: 67
diff changeset
1212 pp_right_brace (buffer);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1213
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1214 if (gimple_try_kind (gs) == GIMPLE_TRY_CATCH)
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1215 {
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1216 newline_and_indent (buffer, spc);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1217 pp_string (buffer, "catch");
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1218 newline_and_indent (buffer, spc + 2);
111
kono
parents: 67
diff changeset
1219 pp_left_brace (buffer);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1220 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1221 else if (gimple_try_kind (gs) == GIMPLE_TRY_FINALLY)
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1222 {
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1223 newline_and_indent (buffer, spc);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1224 pp_string (buffer, "finally");
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1225 newline_and_indent (buffer, spc + 2);
111
kono
parents: 67
diff changeset
1226 pp_left_brace (buffer);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1227 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1228 else
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1229 pp_string (buffer, " <UNKNOWN GIMPLE_TRY> {");
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1230
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1231 pp_newline (buffer);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1232 dump_gimple_seq (buffer, gimple_try_cleanup (gs), spc + 4, flags);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1233 newline_and_indent (buffer, spc + 2);
111
kono
parents: 67
diff changeset
1234 pp_right_brace (buffer);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1235 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1236 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1237
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1238
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1239 /* Dump a GIMPLE_CATCH tuple on the pretty_printer BUFFER, SPC spaces of
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1240 indent. FLAGS specifies details to show in the dump (see TDF_* in
111
kono
parents: 67
diff changeset
1241 dumpfile.h). */
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1242
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1243 static void
111
kono
parents: 67
diff changeset
1244 dump_gimple_catch (pretty_printer *buffer, gcatch *gs, int spc,
kono
parents: 67
diff changeset
1245 dump_flags_t flags)
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1246 {
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1247 if (flags & TDF_RAW)
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1248 dump_gimple_fmt (buffer, spc, flags, "%G <%T, %+CATCH <%S>%->", gs,
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1249 gimple_catch_types (gs), gimple_catch_handler (gs));
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1250 else
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1251 dump_gimple_fmt (buffer, spc, flags, "catch (%T)%+{%S}",
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1252 gimple_catch_types (gs), gimple_catch_handler (gs));
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1253 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1254
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1255
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1256 /* Dump a GIMPLE_EH_FILTER tuple on the pretty_printer BUFFER, SPC spaces of
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1257 indent. FLAGS specifies details to show in the dump (see TDF_* in
111
kono
parents: 67
diff changeset
1258 dumpfile.h). */
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1259
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1260 static void
111
kono
parents: 67
diff changeset
1261 dump_gimple_eh_filter (pretty_printer *buffer, geh_filter *gs, int spc,
kono
parents: 67
diff changeset
1262 dump_flags_t flags)
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1263 {
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1264 if (flags & TDF_RAW)
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1265 dump_gimple_fmt (buffer, spc, flags, "%G <%T, %+FAILURE <%S>%->", gs,
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1266 gimple_eh_filter_types (gs),
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1267 gimple_eh_filter_failure (gs));
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1268 else
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1269 dump_gimple_fmt (buffer, spc, flags, "<<<eh_filter (%T)>>>%+{%+%S%-}",
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1270 gimple_eh_filter_types (gs),
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1271 gimple_eh_filter_failure (gs));
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1272 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1273
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1274
55
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
1275 /* Dump a GIMPLE_EH_MUST_NOT_THROW tuple. */
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
1276
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
1277 static void
111
kono
parents: 67
diff changeset
1278 dump_gimple_eh_must_not_throw (pretty_printer *buffer,
kono
parents: 67
diff changeset
1279 geh_mnt *gs, int spc, dump_flags_t flags)
55
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
1280 {
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
1281 if (flags & TDF_RAW)
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
1282 dump_gimple_fmt (buffer, spc, flags, "%G <%T>", gs,
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
1283 gimple_eh_must_not_throw_fndecl (gs));
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
1284 else
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
1285 dump_gimple_fmt (buffer, spc, flags, "<<<eh_must_not_throw (%T)>>>",
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
1286 gimple_eh_must_not_throw_fndecl (gs));
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
1287 }
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
1288
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
1289
111
kono
parents: 67
diff changeset
1290 /* Dump a GIMPLE_EH_ELSE tuple on the pretty_printer BUFFER, SPC spaces of
kono
parents: 67
diff changeset
1291 indent. FLAGS specifies details to show in the dump (see TDF_* in
kono
parents: 67
diff changeset
1292 dumpfile.h). */
kono
parents: 67
diff changeset
1293
kono
parents: 67
diff changeset
1294 static void
kono
parents: 67
diff changeset
1295 dump_gimple_eh_else (pretty_printer *buffer, geh_else *gs, int spc,
kono
parents: 67
diff changeset
1296 dump_flags_t flags)
kono
parents: 67
diff changeset
1297 {
kono
parents: 67
diff changeset
1298 if (flags & TDF_RAW)
kono
parents: 67
diff changeset
1299 dump_gimple_fmt (buffer, spc, flags,
kono
parents: 67
diff changeset
1300 "%G <%+N_BODY <%S>%nE_BODY <%S>%->", gs,
kono
parents: 67
diff changeset
1301 gimple_eh_else_n_body (gs), gimple_eh_else_e_body (gs));
kono
parents: 67
diff changeset
1302 else
kono
parents: 67
diff changeset
1303 dump_gimple_fmt (buffer, spc, flags,
kono
parents: 67
diff changeset
1304 "<<<if_normal_exit>>>%+{%S}%-<<<else_eh_exit>>>%+{%S}",
kono
parents: 67
diff changeset
1305 gimple_eh_else_n_body (gs), gimple_eh_else_e_body (gs));
kono
parents: 67
diff changeset
1306 }
kono
parents: 67
diff changeset
1307
kono
parents: 67
diff changeset
1308
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1309 /* Dump a GIMPLE_RESX tuple on the pretty_printer BUFFER, SPC spaces of
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1310 indent. FLAGS specifies details to show in the dump (see TDF_* in
111
kono
parents: 67
diff changeset
1311 dumpfile.h). */
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1312
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1313 static void
111
kono
parents: 67
diff changeset
1314 dump_gimple_resx (pretty_printer *buffer, gresx *gs, int spc,
kono
parents: 67
diff changeset
1315 dump_flags_t flags)
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1316 {
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1317 if (flags & TDF_RAW)
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1318 dump_gimple_fmt (buffer, spc, flags, "%G <%d>", gs,
55
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
1319 gimple_resx_region (gs));
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1320 else
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1321 dump_gimple_fmt (buffer, spc, flags, "resx %d", gimple_resx_region (gs));
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1322 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1323
55
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
1324 /* Dump a GIMPLE_EH_DISPATCH tuple on the pretty_printer BUFFER. */
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
1325
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
1326 static void
111
kono
parents: 67
diff changeset
1327 dump_gimple_eh_dispatch (pretty_printer *buffer, geh_dispatch *gs, int spc,
kono
parents: 67
diff changeset
1328 dump_flags_t flags)
55
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
1329 {
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
1330 if (flags & TDF_RAW)
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
1331 dump_gimple_fmt (buffer, spc, flags, "%G <%d>", gs,
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
1332 gimple_eh_dispatch_region (gs));
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
1333 else
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
1334 dump_gimple_fmt (buffer, spc, flags, "eh_dispatch %d",
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
1335 gimple_eh_dispatch_region (gs));
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
1336 }
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
1337
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
1338 /* Dump a GIMPLE_DEBUG tuple on the pretty_printer BUFFER, SPC spaces
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
1339 of indent. FLAGS specifies details to show in the dump (see TDF_*
111
kono
parents: 67
diff changeset
1340 in dumpfile.h). */
55
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
1341
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
1342 static void
111
kono
parents: 67
diff changeset
1343 dump_gimple_debug (pretty_printer *buffer, gdebug *gs, int spc,
kono
parents: 67
diff changeset
1344 dump_flags_t flags)
55
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
1345 {
111
kono
parents: 67
diff changeset
1346 switch (gs->subcode)
55
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
1347 {
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
1348 case GIMPLE_DEBUG_BIND:
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
1349 if (flags & TDF_RAW)
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
1350 dump_gimple_fmt (buffer, spc, flags, "%G BIND <%T, %T>", gs,
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
1351 gimple_debug_bind_get_var (gs),
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
1352 gimple_debug_bind_get_value (gs));
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
1353 else
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
1354 dump_gimple_fmt (buffer, spc, flags, "# DEBUG %T => %T",
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
1355 gimple_debug_bind_get_var (gs),
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
1356 gimple_debug_bind_get_value (gs));
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
1357 break;
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
1358
111
kono
parents: 67
diff changeset
1359 case GIMPLE_DEBUG_SOURCE_BIND:
kono
parents: 67
diff changeset
1360 if (flags & TDF_RAW)
kono
parents: 67
diff changeset
1361 dump_gimple_fmt (buffer, spc, flags, "%G SRCBIND <%T, %T>", gs,
kono
parents: 67
diff changeset
1362 gimple_debug_source_bind_get_var (gs),
kono
parents: 67
diff changeset
1363 gimple_debug_source_bind_get_value (gs));
kono
parents: 67
diff changeset
1364 else
kono
parents: 67
diff changeset
1365 dump_gimple_fmt (buffer, spc, flags, "# DEBUG %T s=> %T",
kono
parents: 67
diff changeset
1366 gimple_debug_source_bind_get_var (gs),
kono
parents: 67
diff changeset
1367 gimple_debug_source_bind_get_value (gs));
kono
parents: 67
diff changeset
1368 break;
kono
parents: 67
diff changeset
1369
55
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
1370 default:
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
1371 gcc_unreachable ();
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
1372 }
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
1373 }
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
1374
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1375 /* Dump a GIMPLE_OMP_FOR tuple on the pretty_printer BUFFER. */
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1376 static void
111
kono
parents: 67
diff changeset
1377 dump_gimple_omp_for (pretty_printer *buffer, gomp_for *gs, int spc,
kono
parents: 67
diff changeset
1378 dump_flags_t flags)
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1379 {
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1380 size_t i;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1381
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1382 if (flags & TDF_RAW)
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1383 {
111
kono
parents: 67
diff changeset
1384 const char *kind;
kono
parents: 67
diff changeset
1385 switch (gimple_omp_for_kind (gs))
kono
parents: 67
diff changeset
1386 {
kono
parents: 67
diff changeset
1387 case GF_OMP_FOR_KIND_FOR:
kono
parents: 67
diff changeset
1388 kind = "";
kono
parents: 67
diff changeset
1389 break;
kono
parents: 67
diff changeset
1390 case GF_OMP_FOR_KIND_DISTRIBUTE:
kono
parents: 67
diff changeset
1391 kind = " distribute";
kono
parents: 67
diff changeset
1392 break;
kono
parents: 67
diff changeset
1393 case GF_OMP_FOR_KIND_TASKLOOP:
kono
parents: 67
diff changeset
1394 kind = " taskloop";
kono
parents: 67
diff changeset
1395 break;
kono
parents: 67
diff changeset
1396 case GF_OMP_FOR_KIND_CILKFOR:
kono
parents: 67
diff changeset
1397 kind = " _Cilk_for";
kono
parents: 67
diff changeset
1398 break;
kono
parents: 67
diff changeset
1399 case GF_OMP_FOR_KIND_OACC_LOOP:
kono
parents: 67
diff changeset
1400 kind = " oacc_loop";
kono
parents: 67
diff changeset
1401 break;
kono
parents: 67
diff changeset
1402 case GF_OMP_FOR_KIND_SIMD:
kono
parents: 67
diff changeset
1403 kind = " simd";
kono
parents: 67
diff changeset
1404 break;
kono
parents: 67
diff changeset
1405 case GF_OMP_FOR_KIND_CILKSIMD:
kono
parents: 67
diff changeset
1406 kind = " cilksimd";
kono
parents: 67
diff changeset
1407 break;
kono
parents: 67
diff changeset
1408 default:
kono
parents: 67
diff changeset
1409 gcc_unreachable ();
kono
parents: 67
diff changeset
1410 }
kono
parents: 67
diff changeset
1411 dump_gimple_fmt (buffer, spc, flags, "%G%s <%+BODY <%S>%nCLAUSES <", gs,
kono
parents: 67
diff changeset
1412 kind, gimple_omp_body (gs));
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1413 dump_omp_clauses (buffer, gimple_omp_for_clauses (gs), spc, flags);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1414 dump_gimple_fmt (buffer, spc, flags, " >,");
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1415 for (i = 0; i < gimple_omp_for_collapse (gs); i++)
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1416 dump_gimple_fmt (buffer, spc, flags,
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1417 "%+%T, %T, %T, %s, %T,%n",
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1418 gimple_omp_for_index (gs, i),
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1419 gimple_omp_for_initial (gs, i),
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1420 gimple_omp_for_final (gs, i),
111
kono
parents: 67
diff changeset
1421 get_tree_code_name (gimple_omp_for_cond (gs, i)),
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1422 gimple_omp_for_incr (gs, i));
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1423 dump_gimple_fmt (buffer, spc, flags, "PRE_BODY <%S>%->",
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1424 gimple_omp_for_pre_body (gs));
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1425 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1426 else
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1427 {
111
kono
parents: 67
diff changeset
1428 switch (gimple_omp_for_kind (gs))
kono
parents: 67
diff changeset
1429 {
kono
parents: 67
diff changeset
1430 case GF_OMP_FOR_KIND_FOR:
kono
parents: 67
diff changeset
1431 pp_string (buffer, "#pragma omp for");
kono
parents: 67
diff changeset
1432 break;
kono
parents: 67
diff changeset
1433 case GF_OMP_FOR_KIND_DISTRIBUTE:
kono
parents: 67
diff changeset
1434 pp_string (buffer, "#pragma omp distribute");
kono
parents: 67
diff changeset
1435 break;
kono
parents: 67
diff changeset
1436 case GF_OMP_FOR_KIND_TASKLOOP:
kono
parents: 67
diff changeset
1437 pp_string (buffer, "#pragma omp taskloop");
kono
parents: 67
diff changeset
1438 break;
kono
parents: 67
diff changeset
1439 case GF_OMP_FOR_KIND_CILKFOR:
kono
parents: 67
diff changeset
1440 break;
kono
parents: 67
diff changeset
1441 case GF_OMP_FOR_KIND_OACC_LOOP:
kono
parents: 67
diff changeset
1442 pp_string (buffer, "#pragma acc loop");
kono
parents: 67
diff changeset
1443 break;
kono
parents: 67
diff changeset
1444 case GF_OMP_FOR_KIND_SIMD:
kono
parents: 67
diff changeset
1445 pp_string (buffer, "#pragma omp simd");
kono
parents: 67
diff changeset
1446 break;
kono
parents: 67
diff changeset
1447 case GF_OMP_FOR_KIND_CILKSIMD:
kono
parents: 67
diff changeset
1448 pp_string (buffer, "#pragma simd");
kono
parents: 67
diff changeset
1449 break;
kono
parents: 67
diff changeset
1450 case GF_OMP_FOR_KIND_GRID_LOOP:
kono
parents: 67
diff changeset
1451 pp_string (buffer, "#pragma omp for grid_loop");
kono
parents: 67
diff changeset
1452 break;
kono
parents: 67
diff changeset
1453 default:
kono
parents: 67
diff changeset
1454 gcc_unreachable ();
kono
parents: 67
diff changeset
1455 }
kono
parents: 67
diff changeset
1456 if (gimple_omp_for_kind (gs) != GF_OMP_FOR_KIND_CILKFOR)
kono
parents: 67
diff changeset
1457 dump_omp_clauses (buffer, gimple_omp_for_clauses (gs), spc, flags);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1458 for (i = 0; i < gimple_omp_for_collapse (gs); i++)
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1459 {
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1460 if (i)
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1461 spc += 2;
111
kono
parents: 67
diff changeset
1462 if (gimple_omp_for_kind (gs) == GF_OMP_FOR_KIND_CILKFOR)
kono
parents: 67
diff changeset
1463 pp_string (buffer, "_Cilk_for (");
kono
parents: 67
diff changeset
1464 else
kono
parents: 67
diff changeset
1465 {
kono
parents: 67
diff changeset
1466 newline_and_indent (buffer, spc);
kono
parents: 67
diff changeset
1467 pp_string (buffer, "for (");
kono
parents: 67
diff changeset
1468 }
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1469 dump_generic_node (buffer, gimple_omp_for_index (gs, i), spc,
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1470 flags, false);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1471 pp_string (buffer, " = ");
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1472 dump_generic_node (buffer, gimple_omp_for_initial (gs, i), spc,
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1473 flags, false);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1474 pp_string (buffer, "; ");
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1475
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1476 dump_generic_node (buffer, gimple_omp_for_index (gs, i), spc,
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1477 flags, false);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1478 pp_space (buffer);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1479 switch (gimple_omp_for_cond (gs, i))
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1480 {
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1481 case LT_EXPR:
111
kono
parents: 67
diff changeset
1482 pp_less (buffer);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1483 break;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1484 case GT_EXPR:
111
kono
parents: 67
diff changeset
1485 pp_greater (buffer);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1486 break;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1487 case LE_EXPR:
111
kono
parents: 67
diff changeset
1488 pp_less_equal (buffer);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1489 break;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1490 case GE_EXPR:
111
kono
parents: 67
diff changeset
1491 pp_greater_equal (buffer);
kono
parents: 67
diff changeset
1492 break;
kono
parents: 67
diff changeset
1493 case NE_EXPR:
kono
parents: 67
diff changeset
1494 pp_string (buffer, "!=");
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1495 break;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1496 default:
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1497 gcc_unreachable ();
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1498 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1499 pp_space (buffer);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1500 dump_generic_node (buffer, gimple_omp_for_final (gs, i), spc,
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1501 flags, false);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1502 pp_string (buffer, "; ");
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1503
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1504 dump_generic_node (buffer, gimple_omp_for_index (gs, i), spc,
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1505 flags, false);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1506 pp_string (buffer, " = ");
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1507 dump_generic_node (buffer, gimple_omp_for_incr (gs, i), spc,
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1508 flags, false);
111
kono
parents: 67
diff changeset
1509 pp_right_paren (buffer);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1510 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1511
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1512 if (!gimple_seq_empty_p (gimple_omp_body (gs)))
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1513 {
111
kono
parents: 67
diff changeset
1514 if (gimple_omp_for_kind (gs) == GF_OMP_FOR_KIND_CILKFOR)
kono
parents: 67
diff changeset
1515 dump_omp_clauses (buffer, gimple_omp_for_clauses (gs), spc, flags);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1516 newline_and_indent (buffer, spc + 2);
111
kono
parents: 67
diff changeset
1517 pp_left_brace (buffer);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1518 pp_newline (buffer);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1519 dump_gimple_seq (buffer, gimple_omp_body (gs), spc + 4, flags);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1520 newline_and_indent (buffer, spc + 2);
111
kono
parents: 67
diff changeset
1521 pp_right_brace (buffer);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1522 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1523 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1524 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1525
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1526 /* Dump a GIMPLE_OMP_CONTINUE tuple on the pretty_printer BUFFER. */
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1527
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1528 static void
111
kono
parents: 67
diff changeset
1529 dump_gimple_omp_continue (pretty_printer *buffer, gomp_continue *gs,
kono
parents: 67
diff changeset
1530 int spc, dump_flags_t flags)
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1531 {
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1532 if (flags & TDF_RAW)
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1533 {
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1534 dump_gimple_fmt (buffer, spc, flags, "%G <%T, %T>", gs,
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1535 gimple_omp_continue_control_def (gs),
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1536 gimple_omp_continue_control_use (gs));
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1537 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1538 else
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1539 {
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1540 pp_string (buffer, "#pragma omp continue (");
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1541 dump_generic_node (buffer, gimple_omp_continue_control_def (gs),
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1542 spc, flags, false);
111
kono
parents: 67
diff changeset
1543 pp_comma (buffer);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1544 pp_space (buffer);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1545 dump_generic_node (buffer, gimple_omp_continue_control_use (gs),
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1546 spc, flags, false);
111
kono
parents: 67
diff changeset
1547 pp_right_paren (buffer);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1548 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1549 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1550
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1551 /* Dump a GIMPLE_OMP_SINGLE tuple on the pretty_printer BUFFER. */
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1552
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1553 static void
111
kono
parents: 67
diff changeset
1554 dump_gimple_omp_single (pretty_printer *buffer, gomp_single *gs,
kono
parents: 67
diff changeset
1555 int spc, dump_flags_t flags)
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1556 {
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1557 if (flags & TDF_RAW)
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1558 {
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1559 dump_gimple_fmt (buffer, spc, flags, "%G <%+BODY <%S>%nCLAUSES <", gs,
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1560 gimple_omp_body (gs));
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1561 dump_omp_clauses (buffer, gimple_omp_single_clauses (gs), spc, flags);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1562 dump_gimple_fmt (buffer, spc, flags, " >");
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1563 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1564 else
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1565 {
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1566 pp_string (buffer, "#pragma omp single");
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1567 dump_omp_clauses (buffer, gimple_omp_single_clauses (gs), spc, flags);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1568 if (!gimple_seq_empty_p (gimple_omp_body (gs)))
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1569 {
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1570 newline_and_indent (buffer, spc + 2);
111
kono
parents: 67
diff changeset
1571 pp_left_brace (buffer);
kono
parents: 67
diff changeset
1572 pp_newline (buffer);
kono
parents: 67
diff changeset
1573 dump_gimple_seq (buffer, gimple_omp_body (gs), spc + 4, flags);
kono
parents: 67
diff changeset
1574 newline_and_indent (buffer, spc + 2);
kono
parents: 67
diff changeset
1575 pp_right_brace (buffer);
kono
parents: 67
diff changeset
1576 }
kono
parents: 67
diff changeset
1577 }
kono
parents: 67
diff changeset
1578 }
kono
parents: 67
diff changeset
1579
kono
parents: 67
diff changeset
1580 /* Dump a GIMPLE_OMP_TARGET tuple on the pretty_printer BUFFER. */
kono
parents: 67
diff changeset
1581
kono
parents: 67
diff changeset
1582 static void
kono
parents: 67
diff changeset
1583 dump_gimple_omp_target (pretty_printer *buffer, gomp_target *gs,
kono
parents: 67
diff changeset
1584 int spc, dump_flags_t flags)
kono
parents: 67
diff changeset
1585 {
kono
parents: 67
diff changeset
1586 const char *kind;
kono
parents: 67
diff changeset
1587 switch (gimple_omp_target_kind (gs))
kono
parents: 67
diff changeset
1588 {
kono
parents: 67
diff changeset
1589 case GF_OMP_TARGET_KIND_REGION:
kono
parents: 67
diff changeset
1590 kind = "";
kono
parents: 67
diff changeset
1591 break;
kono
parents: 67
diff changeset
1592 case GF_OMP_TARGET_KIND_DATA:
kono
parents: 67
diff changeset
1593 kind = " data";
kono
parents: 67
diff changeset
1594 break;
kono
parents: 67
diff changeset
1595 case GF_OMP_TARGET_KIND_UPDATE:
kono
parents: 67
diff changeset
1596 kind = " update";
kono
parents: 67
diff changeset
1597 break;
kono
parents: 67
diff changeset
1598 case GF_OMP_TARGET_KIND_ENTER_DATA:
kono
parents: 67
diff changeset
1599 kind = " enter data";
kono
parents: 67
diff changeset
1600 break;
kono
parents: 67
diff changeset
1601 case GF_OMP_TARGET_KIND_EXIT_DATA:
kono
parents: 67
diff changeset
1602 kind = " exit data";
kono
parents: 67
diff changeset
1603 break;
kono
parents: 67
diff changeset
1604 case GF_OMP_TARGET_KIND_OACC_KERNELS:
kono
parents: 67
diff changeset
1605 kind = " oacc_kernels";
kono
parents: 67
diff changeset
1606 break;
kono
parents: 67
diff changeset
1607 case GF_OMP_TARGET_KIND_OACC_PARALLEL:
kono
parents: 67
diff changeset
1608 kind = " oacc_parallel";
kono
parents: 67
diff changeset
1609 break;
kono
parents: 67
diff changeset
1610 case GF_OMP_TARGET_KIND_OACC_DATA:
kono
parents: 67
diff changeset
1611 kind = " oacc_data";
kono
parents: 67
diff changeset
1612 break;
kono
parents: 67
diff changeset
1613 case GF_OMP_TARGET_KIND_OACC_UPDATE:
kono
parents: 67
diff changeset
1614 kind = " oacc_update";
kono
parents: 67
diff changeset
1615 break;
kono
parents: 67
diff changeset
1616 case GF_OMP_TARGET_KIND_OACC_ENTER_EXIT_DATA:
kono
parents: 67
diff changeset
1617 kind = " oacc_enter_exit_data";
kono
parents: 67
diff changeset
1618 break;
kono
parents: 67
diff changeset
1619 case GF_OMP_TARGET_KIND_OACC_DECLARE:
kono
parents: 67
diff changeset
1620 kind = " oacc_declare";
kono
parents: 67
diff changeset
1621 break;
kono
parents: 67
diff changeset
1622 case GF_OMP_TARGET_KIND_OACC_HOST_DATA:
kono
parents: 67
diff changeset
1623 kind = " oacc_host_data";
kono
parents: 67
diff changeset
1624 break;
kono
parents: 67
diff changeset
1625 default:
kono
parents: 67
diff changeset
1626 gcc_unreachable ();
kono
parents: 67
diff changeset
1627 }
kono
parents: 67
diff changeset
1628 if (flags & TDF_RAW)
kono
parents: 67
diff changeset
1629 {
kono
parents: 67
diff changeset
1630 dump_gimple_fmt (buffer, spc, flags, "%G%s <%+BODY <%S>%nCLAUSES <", gs,
kono
parents: 67
diff changeset
1631 kind, gimple_omp_body (gs));
kono
parents: 67
diff changeset
1632 dump_omp_clauses (buffer, gimple_omp_target_clauses (gs), spc, flags);
kono
parents: 67
diff changeset
1633 dump_gimple_fmt (buffer, spc, flags, " >, %T, %T%n>",
kono
parents: 67
diff changeset
1634 gimple_omp_target_child_fn (gs),
kono
parents: 67
diff changeset
1635 gimple_omp_target_data_arg (gs));
kono
parents: 67
diff changeset
1636 }
kono
parents: 67
diff changeset
1637 else
kono
parents: 67
diff changeset
1638 {
kono
parents: 67
diff changeset
1639 pp_string (buffer, "#pragma omp target");
kono
parents: 67
diff changeset
1640 pp_string (buffer, kind);
kono
parents: 67
diff changeset
1641 dump_omp_clauses (buffer, gimple_omp_target_clauses (gs), spc, flags);
kono
parents: 67
diff changeset
1642 if (gimple_omp_target_child_fn (gs))
kono
parents: 67
diff changeset
1643 {
kono
parents: 67
diff changeset
1644 pp_string (buffer, " [child fn: ");
kono
parents: 67
diff changeset
1645 dump_generic_node (buffer, gimple_omp_target_child_fn (gs),
kono
parents: 67
diff changeset
1646 spc, flags, false);
kono
parents: 67
diff changeset
1647 pp_string (buffer, " (");
kono
parents: 67
diff changeset
1648 if (gimple_omp_target_data_arg (gs))
kono
parents: 67
diff changeset
1649 dump_generic_node (buffer, gimple_omp_target_data_arg (gs),
kono
parents: 67
diff changeset
1650 spc, flags, false);
kono
parents: 67
diff changeset
1651 else
kono
parents: 67
diff changeset
1652 pp_string (buffer, "???");
kono
parents: 67
diff changeset
1653 pp_string (buffer, ")]");
kono
parents: 67
diff changeset
1654 }
kono
parents: 67
diff changeset
1655 gimple_seq body = gimple_omp_body (gs);
kono
parents: 67
diff changeset
1656 if (body && gimple_code (gimple_seq_first_stmt (body)) != GIMPLE_BIND)
kono
parents: 67
diff changeset
1657 {
kono
parents: 67
diff changeset
1658 newline_and_indent (buffer, spc + 2);
kono
parents: 67
diff changeset
1659 pp_left_brace (buffer);
kono
parents: 67
diff changeset
1660 pp_newline (buffer);
kono
parents: 67
diff changeset
1661 dump_gimple_seq (buffer, body, spc + 4, flags);
kono
parents: 67
diff changeset
1662 newline_and_indent (buffer, spc + 2);
kono
parents: 67
diff changeset
1663 pp_right_brace (buffer);
kono
parents: 67
diff changeset
1664 }
kono
parents: 67
diff changeset
1665 else if (body)
kono
parents: 67
diff changeset
1666 {
kono
parents: 67
diff changeset
1667 pp_newline (buffer);
kono
parents: 67
diff changeset
1668 dump_gimple_seq (buffer, body, spc + 2, flags);
kono
parents: 67
diff changeset
1669 }
kono
parents: 67
diff changeset
1670 }
kono
parents: 67
diff changeset
1671 }
kono
parents: 67
diff changeset
1672
kono
parents: 67
diff changeset
1673 /* Dump a GIMPLE_OMP_TEAMS tuple on the pretty_printer BUFFER. */
kono
parents: 67
diff changeset
1674
kono
parents: 67
diff changeset
1675 static void
kono
parents: 67
diff changeset
1676 dump_gimple_omp_teams (pretty_printer *buffer, gomp_teams *gs, int spc,
kono
parents: 67
diff changeset
1677 dump_flags_t flags)
kono
parents: 67
diff changeset
1678 {
kono
parents: 67
diff changeset
1679 if (flags & TDF_RAW)
kono
parents: 67
diff changeset
1680 {
kono
parents: 67
diff changeset
1681 dump_gimple_fmt (buffer, spc, flags, "%G <%+BODY <%S>%nCLAUSES <", gs,
kono
parents: 67
diff changeset
1682 gimple_omp_body (gs));
kono
parents: 67
diff changeset
1683 dump_omp_clauses (buffer, gimple_omp_teams_clauses (gs), spc, flags);
kono
parents: 67
diff changeset
1684 dump_gimple_fmt (buffer, spc, flags, " >");
kono
parents: 67
diff changeset
1685 }
kono
parents: 67
diff changeset
1686 else
kono
parents: 67
diff changeset
1687 {
kono
parents: 67
diff changeset
1688 pp_string (buffer, "#pragma omp teams");
kono
parents: 67
diff changeset
1689 dump_omp_clauses (buffer, gimple_omp_teams_clauses (gs), spc, flags);
kono
parents: 67
diff changeset
1690 if (!gimple_seq_empty_p (gimple_omp_body (gs)))
kono
parents: 67
diff changeset
1691 {
kono
parents: 67
diff changeset
1692 newline_and_indent (buffer, spc + 2);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1693 pp_character (buffer, '{');
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1694 pp_newline (buffer);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1695 dump_gimple_seq (buffer, gimple_omp_body (gs), spc + 4, flags);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1696 newline_and_indent (buffer, spc + 2);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1697 pp_character (buffer, '}');
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1698 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1699 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1700 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1701
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1702 /* Dump a GIMPLE_OMP_SECTIONS tuple on the pretty_printer BUFFER. */
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1703
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1704 static void
111
kono
parents: 67
diff changeset
1705 dump_gimple_omp_sections (pretty_printer *buffer, gomp_sections *gs,
kono
parents: 67
diff changeset
1706 int spc, dump_flags_t flags)
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1707 {
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1708 if (flags & TDF_RAW)
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1709 {
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1710 dump_gimple_fmt (buffer, spc, flags, "%G <%+BODY <%S>%nCLAUSES <", gs,
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1711 gimple_omp_body (gs));
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1712 dump_omp_clauses (buffer, gimple_omp_sections_clauses (gs), spc, flags);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1713 dump_gimple_fmt (buffer, spc, flags, " >");
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1714 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1715 else
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1716 {
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1717 pp_string (buffer, "#pragma omp sections");
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1718 if (gimple_omp_sections_control (gs))
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1719 {
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1720 pp_string (buffer, " <");
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1721 dump_generic_node (buffer, gimple_omp_sections_control (gs), spc,
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1722 flags, false);
111
kono
parents: 67
diff changeset
1723 pp_greater (buffer);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1724 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1725 dump_omp_clauses (buffer, gimple_omp_sections_clauses (gs), spc, flags);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1726 if (!gimple_seq_empty_p (gimple_omp_body (gs)))
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1727 {
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1728 newline_and_indent (buffer, spc + 2);
111
kono
parents: 67
diff changeset
1729 pp_left_brace (buffer);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1730 pp_newline (buffer);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1731 dump_gimple_seq (buffer, gimple_omp_body (gs), spc + 4, flags);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1732 newline_and_indent (buffer, spc + 2);
111
kono
parents: 67
diff changeset
1733 pp_right_brace (buffer);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1734 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1735 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1736 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1737
111
kono
parents: 67
diff changeset
1738 /* Dump a GIMPLE_OMP_{MASTER,TASKGROUP,ORDERED,SECTION} tuple on the
kono
parents: 67
diff changeset
1739 pretty_printer BUFFER. */
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1740
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1741 static void
111
kono
parents: 67
diff changeset
1742 dump_gimple_omp_block (pretty_printer *buffer, gimple *gs, int spc,
kono
parents: 67
diff changeset
1743 dump_flags_t flags)
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1744 {
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1745 if (flags & TDF_RAW)
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1746 dump_gimple_fmt (buffer, spc, flags, "%G <%+BODY <%S> >", gs,
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1747 gimple_omp_body (gs));
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1748 else
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1749 {
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1750 switch (gimple_code (gs))
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1751 {
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1752 case GIMPLE_OMP_MASTER:
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1753 pp_string (buffer, "#pragma omp master");
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1754 break;
111
kono
parents: 67
diff changeset
1755 case GIMPLE_OMP_TASKGROUP:
kono
parents: 67
diff changeset
1756 pp_string (buffer, "#pragma omp taskgroup");
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1757 break;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1758 case GIMPLE_OMP_SECTION:
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1759 pp_string (buffer, "#pragma omp section");
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1760 break;
111
kono
parents: 67
diff changeset
1761 case GIMPLE_OMP_GRID_BODY:
kono
parents: 67
diff changeset
1762 pp_string (buffer, "#pragma omp gridified body");
kono
parents: 67
diff changeset
1763 break;
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1764 default:
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1765 gcc_unreachable ();
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1766 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1767 if (!gimple_seq_empty_p (gimple_omp_body (gs)))
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1768 {
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1769 newline_and_indent (buffer, spc + 2);
111
kono
parents: 67
diff changeset
1770 pp_left_brace (buffer);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1771 pp_newline (buffer);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1772 dump_gimple_seq (buffer, gimple_omp_body (gs), spc + 4, flags);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1773 newline_and_indent (buffer, spc + 2);
111
kono
parents: 67
diff changeset
1774 pp_right_brace (buffer);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1775 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1776 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1777 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1778
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1779 /* Dump a GIMPLE_OMP_CRITICAL tuple on the pretty_printer BUFFER. */
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1780
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1781 static void
111
kono
parents: 67
diff changeset
1782 dump_gimple_omp_critical (pretty_printer *buffer, gomp_critical *gs,
kono
parents: 67
diff changeset
1783 int spc, dump_flags_t flags)
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1784 {
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1785 if (flags & TDF_RAW)
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1786 dump_gimple_fmt (buffer, spc, flags, "%G <%+BODY <%S> >", gs,
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1787 gimple_omp_body (gs));
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1788 else
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1789 {
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1790 pp_string (buffer, "#pragma omp critical");
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1791 if (gimple_omp_critical_name (gs))
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1792 {
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1793 pp_string (buffer, " (");
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1794 dump_generic_node (buffer, gimple_omp_critical_name (gs), spc,
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1795 flags, false);
111
kono
parents: 67
diff changeset
1796 pp_right_paren (buffer);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1797 }
111
kono
parents: 67
diff changeset
1798 dump_omp_clauses (buffer, gimple_omp_critical_clauses (gs), spc, flags);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1799 if (!gimple_seq_empty_p (gimple_omp_body (gs)))
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1800 {
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1801 newline_and_indent (buffer, spc + 2);
111
kono
parents: 67
diff changeset
1802 pp_left_brace (buffer);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1803 pp_newline (buffer);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1804 dump_gimple_seq (buffer, gimple_omp_body (gs), spc + 4, flags);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1805 newline_and_indent (buffer, spc + 2);
111
kono
parents: 67
diff changeset
1806 pp_right_brace (buffer);
kono
parents: 67
diff changeset
1807 }
kono
parents: 67
diff changeset
1808 }
kono
parents: 67
diff changeset
1809 }
kono
parents: 67
diff changeset
1810
kono
parents: 67
diff changeset
1811 /* Dump a GIMPLE_OMP_ORDERED tuple on the pretty_printer BUFFER. */
kono
parents: 67
diff changeset
1812
kono
parents: 67
diff changeset
1813 static void
kono
parents: 67
diff changeset
1814 dump_gimple_omp_ordered (pretty_printer *buffer, gomp_ordered *gs,
kono
parents: 67
diff changeset
1815 int spc, dump_flags_t flags)
kono
parents: 67
diff changeset
1816 {
kono
parents: 67
diff changeset
1817 if (flags & TDF_RAW)
kono
parents: 67
diff changeset
1818 dump_gimple_fmt (buffer, spc, flags, "%G <%+BODY <%S> >", gs,
kono
parents: 67
diff changeset
1819 gimple_omp_body (gs));
kono
parents: 67
diff changeset
1820 else
kono
parents: 67
diff changeset
1821 {
kono
parents: 67
diff changeset
1822 pp_string (buffer, "#pragma omp ordered");
kono
parents: 67
diff changeset
1823 dump_omp_clauses (buffer, gimple_omp_ordered_clauses (gs), spc, flags);
kono
parents: 67
diff changeset
1824 if (!gimple_seq_empty_p (gimple_omp_body (gs)))
kono
parents: 67
diff changeset
1825 {
kono
parents: 67
diff changeset
1826 newline_and_indent (buffer, spc + 2);
kono
parents: 67
diff changeset
1827 pp_left_brace (buffer);
kono
parents: 67
diff changeset
1828 pp_newline (buffer);
kono
parents: 67
diff changeset
1829 dump_gimple_seq (buffer, gimple_omp_body (gs), spc + 4, flags);
kono
parents: 67
diff changeset
1830 newline_and_indent (buffer, spc + 2);
kono
parents: 67
diff changeset
1831 pp_right_brace (buffer);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1832 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1833 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1834 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1835
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1836 /* Dump a GIMPLE_OMP_RETURN tuple on the pretty_printer BUFFER. */
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1837
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1838 static void
111
kono
parents: 67
diff changeset
1839 dump_gimple_omp_return (pretty_printer *buffer, gimple *gs, int spc,
kono
parents: 67
diff changeset
1840 dump_flags_t flags)
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1841 {
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1842 if (flags & TDF_RAW)
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1843 {
111
kono
parents: 67
diff changeset
1844 dump_gimple_fmt (buffer, spc, flags, "%G <nowait=%d", gs,
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1845 (int) gimple_omp_return_nowait_p (gs));
111
kono
parents: 67
diff changeset
1846 if (gimple_omp_return_lhs (gs))
kono
parents: 67
diff changeset
1847 dump_gimple_fmt (buffer, spc, flags, ", lhs=%T>",
kono
parents: 67
diff changeset
1848 gimple_omp_return_lhs (gs));
kono
parents: 67
diff changeset
1849 else
kono
parents: 67
diff changeset
1850 dump_gimple_fmt (buffer, spc, flags, ">");
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1851 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1852 else
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1853 {
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1854 pp_string (buffer, "#pragma omp return");
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1855 if (gimple_omp_return_nowait_p (gs))
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1856 pp_string (buffer, "(nowait)");
111
kono
parents: 67
diff changeset
1857 if (gimple_omp_return_lhs (gs))
kono
parents: 67
diff changeset
1858 {
kono
parents: 67
diff changeset
1859 pp_string (buffer, " (set ");
kono
parents: 67
diff changeset
1860 dump_generic_node (buffer, gimple_omp_return_lhs (gs),
kono
parents: 67
diff changeset
1861 spc, flags, false);
kono
parents: 67
diff changeset
1862 pp_character (buffer, ')');
kono
parents: 67
diff changeset
1863 }
kono
parents: 67
diff changeset
1864 }
kono
parents: 67
diff changeset
1865 }
kono
parents: 67
diff changeset
1866
kono
parents: 67
diff changeset
1867 /* Dump a GIMPLE_TRANSACTION tuple on the pretty_printer BUFFER. */
kono
parents: 67
diff changeset
1868
kono
parents: 67
diff changeset
1869 static void
kono
parents: 67
diff changeset
1870 dump_gimple_transaction (pretty_printer *buffer, gtransaction *gs,
kono
parents: 67
diff changeset
1871 int spc, dump_flags_t flags)
kono
parents: 67
diff changeset
1872 {
kono
parents: 67
diff changeset
1873 unsigned subcode = gimple_transaction_subcode (gs);
kono
parents: 67
diff changeset
1874
kono
parents: 67
diff changeset
1875 if (flags & TDF_RAW)
kono
parents: 67
diff changeset
1876 {
kono
parents: 67
diff changeset
1877 dump_gimple_fmt (buffer, spc, flags,
kono
parents: 67
diff changeset
1878 "%G [SUBCODE=%x,NORM=%T,UNINST=%T,OVER=%T] "
kono
parents: 67
diff changeset
1879 "<%+BODY <%S> >",
kono
parents: 67
diff changeset
1880 gs, subcode, gimple_transaction_label_norm (gs),
kono
parents: 67
diff changeset
1881 gimple_transaction_label_uninst (gs),
kono
parents: 67
diff changeset
1882 gimple_transaction_label_over (gs),
kono
parents: 67
diff changeset
1883 gimple_transaction_body (gs));
kono
parents: 67
diff changeset
1884 }
kono
parents: 67
diff changeset
1885 else
kono
parents: 67
diff changeset
1886 {
kono
parents: 67
diff changeset
1887 if (subcode & GTMA_IS_OUTER)
kono
parents: 67
diff changeset
1888 pp_string (buffer, "__transaction_atomic [[outer]]");
kono
parents: 67
diff changeset
1889 else if (subcode & GTMA_IS_RELAXED)
kono
parents: 67
diff changeset
1890 pp_string (buffer, "__transaction_relaxed");
kono
parents: 67
diff changeset
1891 else
kono
parents: 67
diff changeset
1892 pp_string (buffer, "__transaction_atomic");
kono
parents: 67
diff changeset
1893 subcode &= ~GTMA_DECLARATION_MASK;
kono
parents: 67
diff changeset
1894
kono
parents: 67
diff changeset
1895 if (gimple_transaction_body (gs))
kono
parents: 67
diff changeset
1896 {
kono
parents: 67
diff changeset
1897 newline_and_indent (buffer, spc + 2);
kono
parents: 67
diff changeset
1898 pp_left_brace (buffer);
kono
parents: 67
diff changeset
1899 pp_newline (buffer);
kono
parents: 67
diff changeset
1900 dump_gimple_seq (buffer, gimple_transaction_body (gs),
kono
parents: 67
diff changeset
1901 spc + 4, flags);
kono
parents: 67
diff changeset
1902 newline_and_indent (buffer, spc + 2);
kono
parents: 67
diff changeset
1903 pp_right_brace (buffer);
kono
parents: 67
diff changeset
1904 }
kono
parents: 67
diff changeset
1905 else
kono
parents: 67
diff changeset
1906 {
kono
parents: 67
diff changeset
1907 pp_string (buffer, " //");
kono
parents: 67
diff changeset
1908 if (gimple_transaction_label_norm (gs))
kono
parents: 67
diff changeset
1909 {
kono
parents: 67
diff changeset
1910 pp_string (buffer, " NORM=");
kono
parents: 67
diff changeset
1911 dump_generic_node (buffer, gimple_transaction_label_norm (gs),
kono
parents: 67
diff changeset
1912 spc, flags, false);
kono
parents: 67
diff changeset
1913 }
kono
parents: 67
diff changeset
1914 if (gimple_transaction_label_uninst (gs))
kono
parents: 67
diff changeset
1915 {
kono
parents: 67
diff changeset
1916 pp_string (buffer, " UNINST=");
kono
parents: 67
diff changeset
1917 dump_generic_node (buffer, gimple_transaction_label_uninst (gs),
kono
parents: 67
diff changeset
1918 spc, flags, false);
kono
parents: 67
diff changeset
1919 }
kono
parents: 67
diff changeset
1920 if (gimple_transaction_label_over (gs))
kono
parents: 67
diff changeset
1921 {
kono
parents: 67
diff changeset
1922 pp_string (buffer, " OVER=");
kono
parents: 67
diff changeset
1923 dump_generic_node (buffer, gimple_transaction_label_over (gs),
kono
parents: 67
diff changeset
1924 spc, flags, false);
kono
parents: 67
diff changeset
1925 }
kono
parents: 67
diff changeset
1926 if (subcode)
kono
parents: 67
diff changeset
1927 {
kono
parents: 67
diff changeset
1928 pp_string (buffer, " SUBCODE=[ ");
kono
parents: 67
diff changeset
1929 if (subcode & GTMA_HAVE_ABORT)
kono
parents: 67
diff changeset
1930 {
kono
parents: 67
diff changeset
1931 pp_string (buffer, "GTMA_HAVE_ABORT ");
kono
parents: 67
diff changeset
1932 subcode &= ~GTMA_HAVE_ABORT;
kono
parents: 67
diff changeset
1933 }
kono
parents: 67
diff changeset
1934 if (subcode & GTMA_HAVE_LOAD)
kono
parents: 67
diff changeset
1935 {
kono
parents: 67
diff changeset
1936 pp_string (buffer, "GTMA_HAVE_LOAD ");
kono
parents: 67
diff changeset
1937 subcode &= ~GTMA_HAVE_LOAD;
kono
parents: 67
diff changeset
1938 }
kono
parents: 67
diff changeset
1939 if (subcode & GTMA_HAVE_STORE)
kono
parents: 67
diff changeset
1940 {
kono
parents: 67
diff changeset
1941 pp_string (buffer, "GTMA_HAVE_STORE ");
kono
parents: 67
diff changeset
1942 subcode &= ~GTMA_HAVE_STORE;
kono
parents: 67
diff changeset
1943 }
kono
parents: 67
diff changeset
1944 if (subcode & GTMA_MAY_ENTER_IRREVOCABLE)
kono
parents: 67
diff changeset
1945 {
kono
parents: 67
diff changeset
1946 pp_string (buffer, "GTMA_MAY_ENTER_IRREVOCABLE ");
kono
parents: 67
diff changeset
1947 subcode &= ~GTMA_MAY_ENTER_IRREVOCABLE;
kono
parents: 67
diff changeset
1948 }
kono
parents: 67
diff changeset
1949 if (subcode & GTMA_DOES_GO_IRREVOCABLE)
kono
parents: 67
diff changeset
1950 {
kono
parents: 67
diff changeset
1951 pp_string (buffer, "GTMA_DOES_GO_IRREVOCABLE ");
kono
parents: 67
diff changeset
1952 subcode &= ~GTMA_DOES_GO_IRREVOCABLE;
kono
parents: 67
diff changeset
1953 }
kono
parents: 67
diff changeset
1954 if (subcode & GTMA_HAS_NO_INSTRUMENTATION)
kono
parents: 67
diff changeset
1955 {
kono
parents: 67
diff changeset
1956 pp_string (buffer, "GTMA_HAS_NO_INSTRUMENTATION ");
kono
parents: 67
diff changeset
1957 subcode &= ~GTMA_HAS_NO_INSTRUMENTATION;
kono
parents: 67
diff changeset
1958 }
kono
parents: 67
diff changeset
1959 if (subcode)
kono
parents: 67
diff changeset
1960 pp_printf (buffer, "0x%x ", subcode);
kono
parents: 67
diff changeset
1961 pp_right_bracket (buffer);
kono
parents: 67
diff changeset
1962 }
kono
parents: 67
diff changeset
1963 }
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1964 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1965 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1966
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1967 /* Dump a GIMPLE_ASM tuple on the pretty_printer BUFFER, SPC spaces of
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1968 indent. FLAGS specifies details to show in the dump (see TDF_* in
111
kono
parents: 67
diff changeset
1969 dumpfile.h). */
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1970
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1971 static void
111
kono
parents: 67
diff changeset
1972 dump_gimple_asm (pretty_printer *buffer, gasm *gs, int spc, dump_flags_t flags)
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1973 {
55
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
1974 unsigned int i, n, f, fields;
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1975
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1976 if (flags & TDF_RAW)
55
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
1977 {
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
1978 dump_gimple_fmt (buffer, spc, flags, "%G <%+STRING <%n%s%n>", gs,
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
1979 gimple_asm_string (gs));
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
1980
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
1981 n = gimple_asm_noutputs (gs);
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
1982 if (n)
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
1983 {
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
1984 newline_and_indent (buffer, spc + 2);
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
1985 pp_string (buffer, "OUTPUT: ");
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
1986 for (i = 0; i < n; i++)
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
1987 {
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
1988 dump_generic_node (buffer, gimple_asm_output_op (gs, i),
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
1989 spc, flags, false);
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
1990 if (i < n - 1)
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
1991 pp_string (buffer, ", ");
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
1992 }
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
1993 }
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
1994
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
1995 n = gimple_asm_ninputs (gs);
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
1996 if (n)
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
1997 {
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
1998 newline_and_indent (buffer, spc + 2);
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
1999 pp_string (buffer, "INPUT: ");
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2000 for (i = 0; i < n; i++)
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2001 {
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2002 dump_generic_node (buffer, gimple_asm_input_op (gs, i),
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2003 spc, flags, false);
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2004 if (i < n - 1)
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2005 pp_string (buffer, ", ");
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2006 }
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2007 }
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2008
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2009 n = gimple_asm_nclobbers (gs);
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2010 if (n)
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2011 {
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2012 newline_and_indent (buffer, spc + 2);
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2013 pp_string (buffer, "CLOBBER: ");
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2014 for (i = 0; i < n; i++)
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2015 {
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2016 dump_generic_node (buffer, gimple_asm_clobber_op (gs, i),
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2017 spc, flags, false);
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2018 if (i < n - 1)
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2019 pp_string (buffer, ", ");
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2020 }
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2021 }
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2022
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2023 n = gimple_asm_nlabels (gs);
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2024 if (n)
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2025 {
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2026 newline_and_indent (buffer, spc + 2);
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2027 pp_string (buffer, "LABEL: ");
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2028 for (i = 0; i < n; i++)
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2029 {
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2030 dump_generic_node (buffer, gimple_asm_label_op (gs, i),
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2031 spc, flags, false);
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2032 if (i < n - 1)
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2033 pp_string (buffer, ", ");
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2034 }
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2035 }
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2036
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2037 newline_and_indent (buffer, spc);
111
kono
parents: 67
diff changeset
2038 pp_greater (buffer);
55
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2039 }
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2040 else
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2041 {
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2042 pp_string (buffer, "__asm__");
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2043 if (gimple_asm_volatile_p (gs))
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2044 pp_string (buffer, " __volatile__");
55
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2045 if (gimple_asm_nlabels (gs))
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2046 pp_string (buffer, " goto");
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2047 pp_string (buffer, "(\"");
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2048 pp_string (buffer, gimple_asm_string (gs));
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2049 pp_string (buffer, "\"");
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2050
55
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2051 if (gimple_asm_nlabels (gs))
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2052 fields = 4;
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2053 else if (gimple_asm_nclobbers (gs))
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2054 fields = 3;
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2055 else if (gimple_asm_ninputs (gs))
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2056 fields = 2;
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2057 else if (gimple_asm_noutputs (gs))
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2058 fields = 1;
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2059 else
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2060 fields = 0;
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2061
55
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2062 for (f = 0; f < fields; ++f)
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2063 {
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2064 pp_string (buffer, " : ");
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2065
55
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2066 switch (f)
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2067 {
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2068 case 0:
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2069 n = gimple_asm_noutputs (gs);
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2070 for (i = 0; i < n; i++)
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2071 {
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2072 dump_generic_node (buffer, gimple_asm_output_op (gs, i),
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2073 spc, flags, false);
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2074 if (i < n - 1)
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2075 pp_string (buffer, ", ");
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2076 }
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2077 break;
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2078
55
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2079 case 1:
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2080 n = gimple_asm_ninputs (gs);
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2081 for (i = 0; i < n; i++)
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2082 {
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2083 dump_generic_node (buffer, gimple_asm_input_op (gs, i),
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2084 spc, flags, false);
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2085 if (i < n - 1)
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2086 pp_string (buffer, ", ");
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2087 }
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2088 break;
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2089
55
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2090 case 2:
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2091 n = gimple_asm_nclobbers (gs);
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2092 for (i = 0; i < n; i++)
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2093 {
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2094 dump_generic_node (buffer, gimple_asm_clobber_op (gs, i),
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2095 spc, flags, false);
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2096 if (i < n - 1)
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2097 pp_string (buffer, ", ");
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2098 }
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2099 break;
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2100
55
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2101 case 3:
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2102 n = gimple_asm_nlabels (gs);
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2103 for (i = 0; i < n; i++)
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2104 {
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2105 dump_generic_node (buffer, gimple_asm_label_op (gs, i),
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2106 spc, flags, false);
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2107 if (i < n - 1)
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2108 pp_string (buffer, ", ");
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2109 }
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2110 break;
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2111
55
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2112 default:
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2113 gcc_unreachable ();
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2114 }
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2115 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2116
55
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2117 pp_string (buffer, ");");
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2118 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2119 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2120
111
kono
parents: 67
diff changeset
2121 /* Dump ptr_info and range_info for NODE on pretty_printer BUFFER with
kono
parents: 67
diff changeset
2122 SPC spaces of indent. */
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2123
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2124 static void
111
kono
parents: 67
diff changeset
2125 dump_ssaname_info (pretty_printer *buffer, tree node, int spc)
kono
parents: 67
diff changeset
2126 {
kono
parents: 67
diff changeset
2127 if (TREE_CODE (node) != SSA_NAME)
kono
parents: 67
diff changeset
2128 return;
kono
parents: 67
diff changeset
2129
kono
parents: 67
diff changeset
2130 if (POINTER_TYPE_P (TREE_TYPE (node))
kono
parents: 67
diff changeset
2131 && SSA_NAME_PTR_INFO (node))
kono
parents: 67
diff changeset
2132 {
kono
parents: 67
diff changeset
2133 unsigned int align, misalign;
kono
parents: 67
diff changeset
2134 struct ptr_info_def *pi = SSA_NAME_PTR_INFO (node);
kono
parents: 67
diff changeset
2135 pp_string (buffer, "# PT = ");
kono
parents: 67
diff changeset
2136 pp_points_to_solution (buffer, &pi->pt);
kono
parents: 67
diff changeset
2137 newline_and_indent (buffer, spc);
kono
parents: 67
diff changeset
2138 if (get_ptr_info_alignment (pi, &align, &misalign))
kono
parents: 67
diff changeset
2139 {
kono
parents: 67
diff changeset
2140 pp_printf (buffer, "# ALIGN = %u, MISALIGN = %u", align, misalign);
kono
parents: 67
diff changeset
2141 newline_and_indent (buffer, spc);
kono
parents: 67
diff changeset
2142 }
kono
parents: 67
diff changeset
2143 }
kono
parents: 67
diff changeset
2144
kono
parents: 67
diff changeset
2145 if (!POINTER_TYPE_P (TREE_TYPE (node))
kono
parents: 67
diff changeset
2146 && SSA_NAME_RANGE_INFO (node))
kono
parents: 67
diff changeset
2147 {
kono
parents: 67
diff changeset
2148 wide_int min, max, nonzero_bits;
kono
parents: 67
diff changeset
2149 value_range_type range_type = get_range_info (node, &min, &max);
kono
parents: 67
diff changeset
2150
kono
parents: 67
diff changeset
2151 if (range_type == VR_VARYING)
kono
parents: 67
diff changeset
2152 pp_printf (buffer, "# RANGE VR_VARYING");
kono
parents: 67
diff changeset
2153 else if (range_type == VR_RANGE || range_type == VR_ANTI_RANGE)
kono
parents: 67
diff changeset
2154 {
kono
parents: 67
diff changeset
2155 pp_printf (buffer, "# RANGE ");
kono
parents: 67
diff changeset
2156 pp_printf (buffer, "%s[", range_type == VR_RANGE ? "" : "~");
kono
parents: 67
diff changeset
2157 pp_wide_int (buffer, min, TYPE_SIGN (TREE_TYPE (node)));
kono
parents: 67
diff changeset
2158 pp_printf (buffer, ", ");
kono
parents: 67
diff changeset
2159 pp_wide_int (buffer, max, TYPE_SIGN (TREE_TYPE (node)));
kono
parents: 67
diff changeset
2160 pp_printf (buffer, "]");
kono
parents: 67
diff changeset
2161 }
kono
parents: 67
diff changeset
2162 nonzero_bits = get_nonzero_bits (node);
kono
parents: 67
diff changeset
2163 if (nonzero_bits != -1)
kono
parents: 67
diff changeset
2164 {
kono
parents: 67
diff changeset
2165 pp_string (buffer, " NONZERO ");
kono
parents: 67
diff changeset
2166 pp_wide_int (buffer, nonzero_bits, UNSIGNED);
kono
parents: 67
diff changeset
2167 }
kono
parents: 67
diff changeset
2168 newline_and_indent (buffer, spc);
kono
parents: 67
diff changeset
2169 }
kono
parents: 67
diff changeset
2170 }
kono
parents: 67
diff changeset
2171
kono
parents: 67
diff changeset
2172 /* As dump_ssaname_info, but dump to FILE. */
kono
parents: 67
diff changeset
2173
kono
parents: 67
diff changeset
2174 void
kono
parents: 67
diff changeset
2175 dump_ssaname_info_to_file (FILE *file, tree node, int spc)
kono
parents: 67
diff changeset
2176 {
kono
parents: 67
diff changeset
2177 pretty_printer buffer;
kono
parents: 67
diff changeset
2178 pp_needs_newline (&buffer) = true;
kono
parents: 67
diff changeset
2179 buffer.buffer->stream = file;
kono
parents: 67
diff changeset
2180 dump_ssaname_info (&buffer, node, spc);
kono
parents: 67
diff changeset
2181 pp_flush (&buffer);
kono
parents: 67
diff changeset
2182 }
kono
parents: 67
diff changeset
2183
kono
parents: 67
diff changeset
2184 /* Dump a PHI node PHI. BUFFER, SPC and FLAGS are as in pp_gimple_stmt_1.
kono
parents: 67
diff changeset
2185 The caller is responsible for calling pp_flush on BUFFER to finalize
kono
parents: 67
diff changeset
2186 pretty printer. If COMMENT is true, print this after #. */
kono
parents: 67
diff changeset
2187
kono
parents: 67
diff changeset
2188 static void
kono
parents: 67
diff changeset
2189 dump_gimple_phi (pretty_printer *buffer, gphi *phi, int spc, bool comment,
kono
parents: 67
diff changeset
2190 dump_flags_t flags)
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2191 {
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2192 size_t i;
63
b7f97abdc517 update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 55
diff changeset
2193 tree lhs = gimple_phi_result (phi);
b7f97abdc517 update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 55
diff changeset
2194
111
kono
parents: 67
diff changeset
2195 if (flags & TDF_ALIAS)
kono
parents: 67
diff changeset
2196 dump_ssaname_info (buffer, lhs, spc);
kono
parents: 67
diff changeset
2197
kono
parents: 67
diff changeset
2198 if (comment)
kono
parents: 67
diff changeset
2199 pp_string (buffer, "# ");
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2200
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2201 if (flags & TDF_RAW)
111
kono
parents: 67
diff changeset
2202 dump_gimple_fmt (buffer, spc, flags, "%G <%T, ", phi,
kono
parents: 67
diff changeset
2203 gimple_phi_result (phi));
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2204 else
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2205 {
63
b7f97abdc517 update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 55
diff changeset
2206 dump_generic_node (buffer, lhs, spc, flags, false);
111
kono
parents: 67
diff changeset
2207 if (flags & TDF_GIMPLE)
kono
parents: 67
diff changeset
2208 pp_string (buffer, " = __PHI (");
kono
parents: 67
diff changeset
2209 else
kono
parents: 67
diff changeset
2210 pp_string (buffer, " = PHI <");
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2211 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2212 for (i = 0; i < gimple_phi_num_args (phi); i++)
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2213 {
55
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2214 if ((flags & TDF_LINENO) && gimple_phi_arg_has_location (phi, i))
111
kono
parents: 67
diff changeset
2215 dump_location (buffer, gimple_phi_arg_location (phi, i));
kono
parents: 67
diff changeset
2216 if (flags & TDF_GIMPLE)
kono
parents: 67
diff changeset
2217 {
kono
parents: 67
diff changeset
2218 basic_block src = gimple_phi_arg_edge (phi, i)->src;
kono
parents: 67
diff changeset
2219 gimple *stmt = first_stmt (src);
kono
parents: 67
diff changeset
2220 if (!stmt || gimple_code (stmt) != GIMPLE_LABEL)
55
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2221 {
111
kono
parents: 67
diff changeset
2222 pp_string (buffer, "bb_");
kono
parents: 67
diff changeset
2223 pp_decimal_int (buffer, src->index);
55
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2224 }
111
kono
parents: 67
diff changeset
2225 else
kono
parents: 67
diff changeset
2226 dump_generic_node (buffer, gimple_label_label (as_a <glabel *> (stmt)), 0, flags,
kono
parents: 67
diff changeset
2227 false);
kono
parents: 67
diff changeset
2228 pp_string (buffer, ": ");
55
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2229 }
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2230 dump_generic_node (buffer, gimple_phi_arg_def (phi, i), spc, flags,
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2231 false);
111
kono
parents: 67
diff changeset
2232 if (! (flags & TDF_GIMPLE))
kono
parents: 67
diff changeset
2233 {
kono
parents: 67
diff changeset
2234 pp_left_paren (buffer);
kono
parents: 67
diff changeset
2235 pp_decimal_int (buffer, gimple_phi_arg_edge (phi, i)->src->index);
kono
parents: 67
diff changeset
2236 pp_right_paren (buffer);
kono
parents: 67
diff changeset
2237 }
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2238 if (i < gimple_phi_num_args (phi) - 1)
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2239 pp_string (buffer, ", ");
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2240 }
111
kono
parents: 67
diff changeset
2241 if (flags & TDF_GIMPLE)
kono
parents: 67
diff changeset
2242 pp_string (buffer, ");");
kono
parents: 67
diff changeset
2243 else
kono
parents: 67
diff changeset
2244 pp_greater (buffer);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2245 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2246
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2247
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2248 /* Dump a GIMPLE_OMP_PARALLEL tuple on the pretty_printer BUFFER, SPC spaces
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2249 of indent. FLAGS specifies details to show in the dump (see TDF_* in
111
kono
parents: 67
diff changeset
2250 dumpfile.h). */
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2251
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2252 static void
111
kono
parents: 67
diff changeset
2253 dump_gimple_omp_parallel (pretty_printer *buffer, gomp_parallel *gs,
kono
parents: 67
diff changeset
2254 int spc, dump_flags_t flags)
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2255 {
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2256 if (flags & TDF_RAW)
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2257 {
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2258 dump_gimple_fmt (buffer, spc, flags, "%G <%+BODY <%S>%nCLAUSES <", gs,
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2259 gimple_omp_body (gs));
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2260 dump_omp_clauses (buffer, gimple_omp_parallel_clauses (gs), spc, flags);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2261 dump_gimple_fmt (buffer, spc, flags, " >, %T, %T%n>",
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2262 gimple_omp_parallel_child_fn (gs),
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2263 gimple_omp_parallel_data_arg (gs));
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2264 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2265 else
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2266 {
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2267 gimple_seq body;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2268 pp_string (buffer, "#pragma omp parallel");
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2269 dump_omp_clauses (buffer, gimple_omp_parallel_clauses (gs), spc, flags);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2270 if (gimple_omp_parallel_child_fn (gs))
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2271 {
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2272 pp_string (buffer, " [child fn: ");
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2273 dump_generic_node (buffer, gimple_omp_parallel_child_fn (gs),
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2274 spc, flags, false);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2275 pp_string (buffer, " (");
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2276 if (gimple_omp_parallel_data_arg (gs))
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2277 dump_generic_node (buffer, gimple_omp_parallel_data_arg (gs),
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2278 spc, flags, false);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2279 else
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2280 pp_string (buffer, "???");
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2281 pp_string (buffer, ")]");
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2282 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2283 body = gimple_omp_body (gs);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2284 if (body && gimple_code (gimple_seq_first_stmt (body)) != GIMPLE_BIND)
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2285 {
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2286 newline_and_indent (buffer, spc + 2);
111
kono
parents: 67
diff changeset
2287 pp_left_brace (buffer);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2288 pp_newline (buffer);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2289 dump_gimple_seq (buffer, body, spc + 4, flags);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2290 newline_and_indent (buffer, spc + 2);
111
kono
parents: 67
diff changeset
2291 pp_right_brace (buffer);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2292 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2293 else if (body)
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2294 {
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2295 pp_newline (buffer);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2296 dump_gimple_seq (buffer, body, spc + 2, flags);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2297 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2298 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2299 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2300
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2301
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2302 /* Dump a GIMPLE_OMP_TASK tuple on the pretty_printer BUFFER, SPC spaces
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2303 of indent. FLAGS specifies details to show in the dump (see TDF_* in
111
kono
parents: 67
diff changeset
2304 dumpfile.h). */
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2305
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2306 static void
111
kono
parents: 67
diff changeset
2307 dump_gimple_omp_task (pretty_printer *buffer, gomp_task *gs, int spc,
kono
parents: 67
diff changeset
2308 dump_flags_t flags)
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2309 {
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2310 if (flags & TDF_RAW)
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2311 {
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2312 dump_gimple_fmt (buffer, spc, flags, "%G <%+BODY <%S>%nCLAUSES <", gs,
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2313 gimple_omp_body (gs));
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2314 dump_omp_clauses (buffer, gimple_omp_task_clauses (gs), spc, flags);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2315 dump_gimple_fmt (buffer, spc, flags, " >, %T, %T, %T, %T, %T%n>",
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2316 gimple_omp_task_child_fn (gs),
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2317 gimple_omp_task_data_arg (gs),
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2318 gimple_omp_task_copy_fn (gs),
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2319 gimple_omp_task_arg_size (gs),
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2320 gimple_omp_task_arg_size (gs));
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2321 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2322 else
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2323 {
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2324 gimple_seq body;
111
kono
parents: 67
diff changeset
2325 if (gimple_omp_task_taskloop_p (gs))
kono
parents: 67
diff changeset
2326 pp_string (buffer, "#pragma omp taskloop");
kono
parents: 67
diff changeset
2327 else
kono
parents: 67
diff changeset
2328 pp_string (buffer, "#pragma omp task");
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2329 dump_omp_clauses (buffer, gimple_omp_task_clauses (gs), spc, flags);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2330 if (gimple_omp_task_child_fn (gs))
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2331 {
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2332 pp_string (buffer, " [child fn: ");
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2333 dump_generic_node (buffer, gimple_omp_task_child_fn (gs),
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2334 spc, flags, false);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2335 pp_string (buffer, " (");
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2336 if (gimple_omp_task_data_arg (gs))
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2337 dump_generic_node (buffer, gimple_omp_task_data_arg (gs),
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2338 spc, flags, false);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2339 else
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2340 pp_string (buffer, "???");
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2341 pp_string (buffer, ")]");
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2342 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2343 body = gimple_omp_body (gs);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2344 if (body && gimple_code (gimple_seq_first_stmt (body)) != GIMPLE_BIND)
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2345 {
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2346 newline_and_indent (buffer, spc + 2);
111
kono
parents: 67
diff changeset
2347 pp_left_brace (buffer);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2348 pp_newline (buffer);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2349 dump_gimple_seq (buffer, body, spc + 4, flags);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2350 newline_and_indent (buffer, spc + 2);
111
kono
parents: 67
diff changeset
2351 pp_right_brace (buffer);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2352 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2353 else if (body)
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2354 {
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2355 pp_newline (buffer);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2356 dump_gimple_seq (buffer, body, spc + 2, flags);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2357 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2358 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2359 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2360
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2361
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2362 /* Dump a GIMPLE_OMP_ATOMIC_LOAD tuple on the pretty_printer BUFFER, SPC
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2363 spaces of indent. FLAGS specifies details to show in the dump (see TDF_*
111
kono
parents: 67
diff changeset
2364 in dumpfile.h). */
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2365
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2366 static void
111
kono
parents: 67
diff changeset
2367 dump_gimple_omp_atomic_load (pretty_printer *buffer, gomp_atomic_load *gs,
kono
parents: 67
diff changeset
2368 int spc, dump_flags_t flags)
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2369 {
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2370 if (flags & TDF_RAW)
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2371 {
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2372 dump_gimple_fmt (buffer, spc, flags, "%G <%T, %T>", gs,
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2373 gimple_omp_atomic_load_lhs (gs),
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2374 gimple_omp_atomic_load_rhs (gs));
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2375 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2376 else
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2377 {
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2378 pp_string (buffer, "#pragma omp atomic_load");
111
kono
parents: 67
diff changeset
2379 if (gimple_omp_atomic_seq_cst_p (gs))
kono
parents: 67
diff changeset
2380 pp_string (buffer, " seq_cst");
kono
parents: 67
diff changeset
2381 if (gimple_omp_atomic_need_value_p (gs))
kono
parents: 67
diff changeset
2382 pp_string (buffer, " [needed]");
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2383 newline_and_indent (buffer, spc + 2);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2384 dump_generic_node (buffer, gimple_omp_atomic_load_lhs (gs),
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2385 spc, flags, false);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2386 pp_space (buffer);
111
kono
parents: 67
diff changeset
2387 pp_equal (buffer);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2388 pp_space (buffer);
111
kono
parents: 67
diff changeset
2389 pp_star (buffer);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2390 dump_generic_node (buffer, gimple_omp_atomic_load_rhs (gs),
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2391 spc, flags, false);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2392 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2393 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2394
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2395 /* Dump a GIMPLE_OMP_ATOMIC_STORE tuple on the pretty_printer BUFFER, SPC
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2396 spaces of indent. FLAGS specifies details to show in the dump (see TDF_*
111
kono
parents: 67
diff changeset
2397 in dumpfile.h). */
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2398
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2399 static void
111
kono
parents: 67
diff changeset
2400 dump_gimple_omp_atomic_store (pretty_printer *buffer,
kono
parents: 67
diff changeset
2401 gomp_atomic_store *gs, int spc,
kono
parents: 67
diff changeset
2402 dump_flags_t flags)
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2403 {
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2404 if (flags & TDF_RAW)
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2405 {
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2406 dump_gimple_fmt (buffer, spc, flags, "%G <%T>", gs,
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2407 gimple_omp_atomic_store_val (gs));
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2408 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2409 else
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2410 {
111
kono
parents: 67
diff changeset
2411 pp_string (buffer, "#pragma omp atomic_store ");
kono
parents: 67
diff changeset
2412 if (gimple_omp_atomic_seq_cst_p (gs))
kono
parents: 67
diff changeset
2413 pp_string (buffer, "seq_cst ");
kono
parents: 67
diff changeset
2414 if (gimple_omp_atomic_need_value_p (gs))
kono
parents: 67
diff changeset
2415 pp_string (buffer, "[needed] ");
kono
parents: 67
diff changeset
2416 pp_left_paren (buffer);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2417 dump_generic_node (buffer, gimple_omp_atomic_store_val (gs),
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2418 spc, flags, false);
111
kono
parents: 67
diff changeset
2419 pp_right_paren (buffer);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2420 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2421 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2422
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2423
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2424 /* Dump all the memory operands for statement GS. BUFFER, SPC and
111
kono
parents: 67
diff changeset
2425 FLAGS are as in pp_gimple_stmt_1. */
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2426
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2427 static void
111
kono
parents: 67
diff changeset
2428 dump_gimple_mem_ops (pretty_printer *buffer, gimple *gs, int spc,
kono
parents: 67
diff changeset
2429 dump_flags_t flags)
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2430 {
55
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2431 tree vdef = gimple_vdef (gs);
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2432 tree vuse = gimple_vuse (gs);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2433
55
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2434 if (vdef != NULL_TREE)
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2435 {
55
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2436 pp_string (buffer, "# ");
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2437 dump_generic_node (buffer, vdef, spc + 2, flags, false);
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2438 pp_string (buffer, " = VDEF <");
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2439 dump_generic_node (buffer, vuse, spc + 2, flags, false);
111
kono
parents: 67
diff changeset
2440 pp_greater (buffer);
55
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2441 newline_and_indent (buffer, spc);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2442 }
55
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2443 else if (vuse != NULL_TREE)
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2444 {
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2445 pp_string (buffer, "# VUSE <");
55
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2446 dump_generic_node (buffer, vuse, spc + 2, flags, false);
111
kono
parents: 67
diff changeset
2447 pp_greater (buffer);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2448 newline_and_indent (buffer, spc);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2449 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2450 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2451
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2452
111
kono
parents: 67
diff changeset
2453 /* Print the gimple statement GS on the pretty printer BUFFER, SPC
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2454 spaces of indent. FLAGS specifies details to show in the dump (see
111
kono
parents: 67
diff changeset
2455 TDF_* in dumpfile.h). The caller is responsible for calling
kono
parents: 67
diff changeset
2456 pp_flush on BUFFER to finalize the pretty printer. */
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2457
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2458 void
111
kono
parents: 67
diff changeset
2459 pp_gimple_stmt_1 (pretty_printer *buffer, gimple *gs, int spc,
kono
parents: 67
diff changeset
2460 dump_flags_t flags)
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2461 {
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2462 if (!gs)
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2463 return;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2464
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2465 if (flags & TDF_STMTADDR)
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2466 pp_printf (buffer, "<&%p> ", (void *) gs);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2467
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2468 if ((flags & TDF_LINENO) && gimple_has_location (gs))
111
kono
parents: 67
diff changeset
2469 dump_location (buffer, gimple_location (gs));
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2470
55
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2471 if (flags & TDF_EH)
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2472 {
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2473 int lp_nr = lookup_stmt_eh_lp (gs);
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2474 if (lp_nr > 0)
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2475 pp_printf (buffer, "[LP %d] ", lp_nr);
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2476 else if (lp_nr < 0)
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2477 pp_printf (buffer, "[MNT %d] ", -lp_nr);
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2478 }
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2479
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2480 if ((flags & (TDF_VOPS|TDF_MEMSYMS))
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2481 && gimple_has_mem_ops (gs))
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2482 dump_gimple_mem_ops (buffer, gs, spc, flags);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2483
111
kono
parents: 67
diff changeset
2484 if (gimple_has_lhs (gs)
kono
parents: 67
diff changeset
2485 && (flags & TDF_ALIAS))
kono
parents: 67
diff changeset
2486 dump_ssaname_info (buffer, gimple_get_lhs (gs), spc);
63
b7f97abdc517 update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 55
diff changeset
2487
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2488 switch (gimple_code (gs))
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2489 {
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2490 case GIMPLE_ASM:
111
kono
parents: 67
diff changeset
2491 dump_gimple_asm (buffer, as_a <gasm *> (gs), spc, flags);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2492 break;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2493
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2494 case GIMPLE_ASSIGN:
111
kono
parents: 67
diff changeset
2495 dump_gimple_assign (buffer, as_a <gassign *> (gs), spc, flags);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2496 break;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2497
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2498 case GIMPLE_BIND:
111
kono
parents: 67
diff changeset
2499 dump_gimple_bind (buffer, as_a <gbind *> (gs), spc, flags);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2500 break;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2501
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2502 case GIMPLE_CALL:
111
kono
parents: 67
diff changeset
2503 dump_gimple_call (buffer, as_a <gcall *> (gs), spc, flags);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2504 break;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2505
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2506 case GIMPLE_COND:
111
kono
parents: 67
diff changeset
2507 dump_gimple_cond (buffer, as_a <gcond *> (gs), spc, flags);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2508 break;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2509
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2510 case GIMPLE_LABEL:
111
kono
parents: 67
diff changeset
2511 dump_gimple_label (buffer, as_a <glabel *> (gs), spc, flags);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2512 break;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2513
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2514 case GIMPLE_GOTO:
111
kono
parents: 67
diff changeset
2515 dump_gimple_goto (buffer, as_a <ggoto *> (gs), spc, flags);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2516 break;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2517
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2518 case GIMPLE_NOP:
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2519 pp_string (buffer, "GIMPLE_NOP");
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2520 break;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2521
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2522 case GIMPLE_RETURN:
111
kono
parents: 67
diff changeset
2523 dump_gimple_return (buffer, as_a <greturn *> (gs), spc, flags);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2524 break;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2525
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2526 case GIMPLE_SWITCH:
111
kono
parents: 67
diff changeset
2527 dump_gimple_switch (buffer, as_a <gswitch *> (gs), spc, flags);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2528 break;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2529
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2530 case GIMPLE_TRY:
111
kono
parents: 67
diff changeset
2531 dump_gimple_try (buffer, as_a <gtry *> (gs), spc, flags);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2532 break;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2533
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2534 case GIMPLE_PHI:
111
kono
parents: 67
diff changeset
2535 dump_gimple_phi (buffer, as_a <gphi *> (gs), spc, false, flags);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2536 break;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2537
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2538 case GIMPLE_OMP_PARALLEL:
111
kono
parents: 67
diff changeset
2539 dump_gimple_omp_parallel (buffer, as_a <gomp_parallel *> (gs), spc,
kono
parents: 67
diff changeset
2540 flags);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2541 break;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2542
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2543 case GIMPLE_OMP_TASK:
111
kono
parents: 67
diff changeset
2544 dump_gimple_omp_task (buffer, as_a <gomp_task *> (gs), spc, flags);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2545 break;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2546
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2547 case GIMPLE_OMP_ATOMIC_LOAD:
111
kono
parents: 67
diff changeset
2548 dump_gimple_omp_atomic_load (buffer, as_a <gomp_atomic_load *> (gs),
kono
parents: 67
diff changeset
2549 spc, flags);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2550 break;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2551
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2552 case GIMPLE_OMP_ATOMIC_STORE:
111
kono
parents: 67
diff changeset
2553 dump_gimple_omp_atomic_store (buffer,
kono
parents: 67
diff changeset
2554 as_a <gomp_atomic_store *> (gs),
kono
parents: 67
diff changeset
2555 spc, flags);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2556 break;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2557
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2558 case GIMPLE_OMP_FOR:
111
kono
parents: 67
diff changeset
2559 dump_gimple_omp_for (buffer, as_a <gomp_for *> (gs), spc, flags);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2560 break;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2561
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2562 case GIMPLE_OMP_CONTINUE:
111
kono
parents: 67
diff changeset
2563 dump_gimple_omp_continue (buffer, as_a <gomp_continue *> (gs), spc,
kono
parents: 67
diff changeset
2564 flags);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2565 break;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2566
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2567 case GIMPLE_OMP_SINGLE:
111
kono
parents: 67
diff changeset
2568 dump_gimple_omp_single (buffer, as_a <gomp_single *> (gs), spc,
kono
parents: 67
diff changeset
2569 flags);
kono
parents: 67
diff changeset
2570 break;
kono
parents: 67
diff changeset
2571
kono
parents: 67
diff changeset
2572 case GIMPLE_OMP_TARGET:
kono
parents: 67
diff changeset
2573 dump_gimple_omp_target (buffer, as_a <gomp_target *> (gs), spc,
kono
parents: 67
diff changeset
2574 flags);
kono
parents: 67
diff changeset
2575 break;
kono
parents: 67
diff changeset
2576
kono
parents: 67
diff changeset
2577 case GIMPLE_OMP_TEAMS:
kono
parents: 67
diff changeset
2578 dump_gimple_omp_teams (buffer, as_a <gomp_teams *> (gs), spc,
kono
parents: 67
diff changeset
2579 flags);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2580 break;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2581
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2582 case GIMPLE_OMP_RETURN:
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2583 dump_gimple_omp_return (buffer, gs, spc, flags);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2584 break;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2585
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2586 case GIMPLE_OMP_SECTIONS:
111
kono
parents: 67
diff changeset
2587 dump_gimple_omp_sections (buffer, as_a <gomp_sections *> (gs),
kono
parents: 67
diff changeset
2588 spc, flags);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2589 break;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2590
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2591 case GIMPLE_OMP_SECTIONS_SWITCH:
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2592 pp_string (buffer, "GIMPLE_SECTIONS_SWITCH");
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2593 break;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2594
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2595 case GIMPLE_OMP_MASTER:
111
kono
parents: 67
diff changeset
2596 case GIMPLE_OMP_TASKGROUP:
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2597 case GIMPLE_OMP_SECTION:
111
kono
parents: 67
diff changeset
2598 case GIMPLE_OMP_GRID_BODY:
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2599 dump_gimple_omp_block (buffer, gs, spc, flags);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2600 break;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2601
111
kono
parents: 67
diff changeset
2602 case GIMPLE_OMP_ORDERED:
kono
parents: 67
diff changeset
2603 dump_gimple_omp_ordered (buffer, as_a <gomp_ordered *> (gs), spc,
kono
parents: 67
diff changeset
2604 flags);
kono
parents: 67
diff changeset
2605 break;
kono
parents: 67
diff changeset
2606
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2607 case GIMPLE_OMP_CRITICAL:
111
kono
parents: 67
diff changeset
2608 dump_gimple_omp_critical (buffer, as_a <gomp_critical *> (gs), spc,
kono
parents: 67
diff changeset
2609 flags);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2610 break;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2611
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2612 case GIMPLE_CATCH:
111
kono
parents: 67
diff changeset
2613 dump_gimple_catch (buffer, as_a <gcatch *> (gs), spc, flags);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2614 break;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2615
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2616 case GIMPLE_EH_FILTER:
111
kono
parents: 67
diff changeset
2617 dump_gimple_eh_filter (buffer, as_a <geh_filter *> (gs), spc, flags);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2618 break;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2619
55
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2620 case GIMPLE_EH_MUST_NOT_THROW:
111
kono
parents: 67
diff changeset
2621 dump_gimple_eh_must_not_throw (buffer,
kono
parents: 67
diff changeset
2622 as_a <geh_mnt *> (gs),
kono
parents: 67
diff changeset
2623 spc, flags);
kono
parents: 67
diff changeset
2624 break;
kono
parents: 67
diff changeset
2625
kono
parents: 67
diff changeset
2626 case GIMPLE_EH_ELSE:
kono
parents: 67
diff changeset
2627 dump_gimple_eh_else (buffer, as_a <geh_else *> (gs), spc, flags);
55
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2628 break;
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2629
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2630 case GIMPLE_RESX:
111
kono
parents: 67
diff changeset
2631 dump_gimple_resx (buffer, as_a <gresx *> (gs), spc, flags);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2632 break;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2633
55
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2634 case GIMPLE_EH_DISPATCH:
111
kono
parents: 67
diff changeset
2635 dump_gimple_eh_dispatch (buffer, as_a <geh_dispatch *> (gs), spc,
kono
parents: 67
diff changeset
2636 flags);
55
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2637 break;
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2638
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2639 case GIMPLE_DEBUG:
111
kono
parents: 67
diff changeset
2640 dump_gimple_debug (buffer, as_a <gdebug *> (gs), spc, flags);
55
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2641 break;
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2642
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2643 case GIMPLE_PREDICT:
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2644 pp_string (buffer, "// predicted ");
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2645 if (gimple_predict_outcome (gs))
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2646 pp_string (buffer, "likely by ");
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2647 else
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2648 pp_string (buffer, "unlikely by ");
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2649 pp_string (buffer, predictor_name (gimple_predict_predictor (gs)));
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2650 pp_string (buffer, " predictor.");
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2651 break;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2652
111
kono
parents: 67
diff changeset
2653 case GIMPLE_TRANSACTION:
kono
parents: 67
diff changeset
2654 dump_gimple_transaction (buffer, as_a <gtransaction *> (gs), spc,
kono
parents: 67
diff changeset
2655 flags);
kono
parents: 67
diff changeset
2656 break;
kono
parents: 67
diff changeset
2657
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2658 default:
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2659 GIMPLE_NIY;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2660 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2661 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2662
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2663
111
kono
parents: 67
diff changeset
2664 /* Dumps header of basic block BB to OUTF indented by INDENT
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2665 spaces and details described by flags. */
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2666
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2667 static void
111
kono
parents: 67
diff changeset
2668 dump_gimple_bb_header (FILE *outf, basic_block bb, int indent,
kono
parents: 67
diff changeset
2669 dump_flags_t flags)
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2670 {
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2671 if (flags & TDF_BLOCKS)
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2672 {
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2673 if (flags & TDF_LINENO)
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2674 {
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2675 gimple_stmt_iterator gsi;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2676
111
kono
parents: 67
diff changeset
2677 fputs (";; ", outf);
kono
parents: 67
diff changeset
2678
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2679 for (gsi = gsi_start_bb (bb); !gsi_end_p (gsi); gsi_next (&gsi))
55
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2680 if (!is_gimple_debug (gsi_stmt (gsi))
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2681 && get_lineno (gsi_stmt (gsi)) != UNKNOWN_LOCATION)
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2682 {
111
kono
parents: 67
diff changeset
2683 fprintf (outf, "%*sstarting at line %d",
kono
parents: 67
diff changeset
2684 indent, "", get_lineno (gsi_stmt (gsi)));
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2685 break;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2686 }
111
kono
parents: 67
diff changeset
2687 if (bb->discriminator)
kono
parents: 67
diff changeset
2688 fprintf (outf, ", discriminator %i", bb->discriminator);
kono
parents: 67
diff changeset
2689 fputc ('\n', outf);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2690 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2691 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2692 else
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2693 {
111
kono
parents: 67
diff changeset
2694 if (flags & TDF_GIMPLE)
kono
parents: 67
diff changeset
2695 fprintf (outf, "%*sbb_%d:\n", indent, "", bb->index);
kono
parents: 67
diff changeset
2696 else
kono
parents: 67
diff changeset
2697 fprintf (outf, "%*s<bb %d> %s:\n",
kono
parents: 67
diff changeset
2698 indent, "", bb->index, dump_profile (bb->frequency,
kono
parents: 67
diff changeset
2699 bb->count));
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2700 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2701 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2702
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2703
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2704 /* Dumps end of basic block BB to buffer BUFFER indented by INDENT
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2705 spaces. */
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2706
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2707 static void
111
kono
parents: 67
diff changeset
2708 dump_gimple_bb_footer (FILE *outf ATTRIBUTE_UNUSED,
kono
parents: 67
diff changeset
2709 basic_block bb ATTRIBUTE_UNUSED,
kono
parents: 67
diff changeset
2710 int indent ATTRIBUTE_UNUSED,
kono
parents: 67
diff changeset
2711 dump_flags_t flags ATTRIBUTE_UNUSED)
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2712 {
111
kono
parents: 67
diff changeset
2713 /* There is currently no GIMPLE-specific basic block info to dump. */
kono
parents: 67
diff changeset
2714 return;
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2715 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2716
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2717
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2718 /* Dump PHI nodes of basic block BB to BUFFER with details described
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2719 by FLAGS and indented by INDENT spaces. */
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2720
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2721 static void
111
kono
parents: 67
diff changeset
2722 dump_phi_nodes (pretty_printer *buffer, basic_block bb, int indent,
kono
parents: 67
diff changeset
2723 dump_flags_t flags)
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2724 {
111
kono
parents: 67
diff changeset
2725 gphi_iterator i;
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2726
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2727 for (i = gsi_start_phis (bb); !gsi_end_p (i); gsi_next (&i))
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2728 {
111
kono
parents: 67
diff changeset
2729 gphi *phi = i.phi ();
kono
parents: 67
diff changeset
2730 if (!virtual_operand_p (gimple_phi_result (phi)) || (flags & TDF_VOPS))
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2731 {
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2732 INDENT (indent);
111
kono
parents: 67
diff changeset
2733 dump_gimple_phi (buffer, phi, indent,
kono
parents: 67
diff changeset
2734 (flags & TDF_GIMPLE) ? false : true, flags);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2735 pp_newline (buffer);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2736 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2737 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2738 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2739
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2740
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2741 /* Dump jump to basic block BB that is represented implicitly in the cfg
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2742 to BUFFER. */
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2743
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2744 static void
111
kono
parents: 67
diff changeset
2745 pp_cfg_jump (pretty_printer *buffer, edge e, dump_flags_t flags)
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2746 {
111
kono
parents: 67
diff changeset
2747 if (flags & TDF_GIMPLE)
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2748 {
111
kono
parents: 67
diff changeset
2749 pp_string (buffer, "goto bb_");
kono
parents: 67
diff changeset
2750 pp_decimal_int (buffer, e->dest->index);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2751 pp_semicolon (buffer);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2752 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2753 else
111
kono
parents: 67
diff changeset
2754 {
kono
parents: 67
diff changeset
2755 pp_string (buffer, "goto <bb ");
kono
parents: 67
diff changeset
2756 pp_decimal_int (buffer, e->dest->index);
kono
parents: 67
diff changeset
2757 pp_greater (buffer);
kono
parents: 67
diff changeset
2758 pp_semicolon (buffer);
kono
parents: 67
diff changeset
2759
kono
parents: 67
diff changeset
2760 dump_edge_probability (buffer, e);
kono
parents: 67
diff changeset
2761 }
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2762 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2763
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2764
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2765 /* Dump edges represented implicitly in basic block BB to BUFFER, indented
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2766 by INDENT spaces, with details given by FLAGS. */
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2767
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2768 static void
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2769 dump_implicit_edges (pretty_printer *buffer, basic_block bb, int indent,
111
kono
parents: 67
diff changeset
2770 dump_flags_t flags)
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2771 {
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2772 edge e;
111
kono
parents: 67
diff changeset
2773 gimple *stmt;
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2774
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2775 stmt = last_stmt (bb);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2776
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2777 if (stmt && gimple_code (stmt) == GIMPLE_COND)
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2778 {
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2779 edge true_edge, false_edge;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2780
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2781 /* When we are emitting the code or changing CFG, it is possible that
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2782 the edges are not yet created. When we are using debug_bb in such
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2783 a situation, we do not want it to crash. */
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2784 if (EDGE_COUNT (bb->succs) != 2)
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2785 return;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2786 extract_true_false_edges_from_block (bb, &true_edge, &false_edge);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2787
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2788 INDENT (indent + 2);
111
kono
parents: 67
diff changeset
2789 pp_cfg_jump (buffer, true_edge, flags);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2790 newline_and_indent (buffer, indent);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2791 pp_string (buffer, "else");
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2792 newline_and_indent (buffer, indent + 2);
111
kono
parents: 67
diff changeset
2793 pp_cfg_jump (buffer, false_edge, flags);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2794 pp_newline (buffer);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2795 return;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2796 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2797
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2798 /* If there is a fallthru edge, we may need to add an artificial
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2799 goto to the dump. */
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2800 e = find_fallthru_edge (bb->succs);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2801
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2802 if (e && e->dest != bb->next_bb)
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2803 {
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2804 INDENT (indent);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2805
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2806 if ((flags & TDF_LINENO)
111
kono
parents: 67
diff changeset
2807 && e->goto_locus != UNKNOWN_LOCATION)
kono
parents: 67
diff changeset
2808 dump_location (buffer, e->goto_locus);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2809
111
kono
parents: 67
diff changeset
2810 pp_cfg_jump (buffer, e, flags);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2811 pp_newline (buffer);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2812 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2813 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2814
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2815
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2816 /* Dumps basic block BB to buffer BUFFER with details described by FLAGS and
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2817 indented by INDENT spaces. */
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2818
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2819 static void
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2820 gimple_dump_bb_buff (pretty_printer *buffer, basic_block bb, int indent,
111
kono
parents: 67
diff changeset
2821 dump_flags_t flags)
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2822 {
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2823 gimple_stmt_iterator gsi;
111
kono
parents: 67
diff changeset
2824 gimple *stmt;
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2825 int label_indent = indent - 2;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2826
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2827 if (label_indent < 0)
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2828 label_indent = 0;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2829
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2830 dump_phi_nodes (buffer, bb, indent, flags);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2831
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2832 for (gsi = gsi_start_bb (bb); !gsi_end_p (gsi); gsi_next (&gsi))
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2833 {
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2834 int curr_indent;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2835
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2836 stmt = gsi_stmt (gsi);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2837
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2838 curr_indent = gimple_code (stmt) == GIMPLE_LABEL ? label_indent : indent;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2839
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2840 INDENT (curr_indent);
111
kono
parents: 67
diff changeset
2841 pp_gimple_stmt_1 (buffer, stmt, curr_indent, flags);
kono
parents: 67
diff changeset
2842 pp_newline_and_flush (buffer);
kono
parents: 67
diff changeset
2843 gcc_checking_assert (DECL_STRUCT_FUNCTION (current_function_decl));
kono
parents: 67
diff changeset
2844 dump_histograms_for_stmt (DECL_STRUCT_FUNCTION (current_function_decl),
kono
parents: 67
diff changeset
2845 pp_buffer (buffer)->stream, stmt);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2846 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2847
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2848 dump_implicit_edges (buffer, bb, indent, flags);
111
kono
parents: 67
diff changeset
2849 pp_flush (buffer);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2850 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2851
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2852
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2853 /* Dumps basic block BB to FILE with details described by FLAGS and
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2854 indented by INDENT spaces. */
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2855
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2856 void
111
kono
parents: 67
diff changeset
2857 gimple_dump_bb (FILE *file, basic_block bb, int indent, dump_flags_t flags)
kono
parents: 67
diff changeset
2858 {
kono
parents: 67
diff changeset
2859 dump_gimple_bb_header (file, bb, indent, flags);
kono
parents: 67
diff changeset
2860 if (bb->index >= NUM_FIXED_BLOCKS)
kono
parents: 67
diff changeset
2861 {
kono
parents: 67
diff changeset
2862 pretty_printer buffer;
kono
parents: 67
diff changeset
2863 pp_needs_newline (&buffer) = true;
kono
parents: 67
diff changeset
2864 buffer.buffer->stream = file;
kono
parents: 67
diff changeset
2865 gimple_dump_bb_buff (&buffer, bb, indent, flags);
kono
parents: 67
diff changeset
2866 }
kono
parents: 67
diff changeset
2867 dump_gimple_bb_footer (file, bb, indent, flags);
kono
parents: 67
diff changeset
2868 }
kono
parents: 67
diff changeset
2869
kono
parents: 67
diff changeset
2870 /* Dumps basic block BB to pretty-printer PP with default dump flags and
kono
parents: 67
diff changeset
2871 no indentation, for use as a label of a DOT graph record-node.
kono
parents: 67
diff changeset
2872 ??? Should just use gimple_dump_bb_buff here, except that value profiling
kono
parents: 67
diff changeset
2873 histogram dumping doesn't know about pretty-printers. */
kono
parents: 67
diff changeset
2874
kono
parents: 67
diff changeset
2875 void
kono
parents: 67
diff changeset
2876 gimple_dump_bb_for_graph (pretty_printer *pp, basic_block bb)
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2877 {
111
kono
parents: 67
diff changeset
2878 pp_printf (pp, "<bb %d>:\n", bb->index);
kono
parents: 67
diff changeset
2879 pp_write_text_as_dot_label_to_stream (pp, /*for_record=*/true);
kono
parents: 67
diff changeset
2880
kono
parents: 67
diff changeset
2881 for (gphi_iterator gsi = gsi_start_phis (bb); !gsi_end_p (gsi);
kono
parents: 67
diff changeset
2882 gsi_next (&gsi))
kono
parents: 67
diff changeset
2883 {
kono
parents: 67
diff changeset
2884 gphi *phi = gsi.phi ();
kono
parents: 67
diff changeset
2885 if (!virtual_operand_p (gimple_phi_result (phi))
kono
parents: 67
diff changeset
2886 || (dump_flags & TDF_VOPS))
kono
parents: 67
diff changeset
2887 {
kono
parents: 67
diff changeset
2888 pp_bar (pp);
kono
parents: 67
diff changeset
2889 pp_write_text_to_stream (pp);
kono
parents: 67
diff changeset
2890 pp_string (pp, "# ");
kono
parents: 67
diff changeset
2891 pp_gimple_stmt_1 (pp, phi, 0, dump_flags);
kono
parents: 67
diff changeset
2892 pp_newline (pp);
kono
parents: 67
diff changeset
2893 pp_write_text_as_dot_label_to_stream (pp, /*for_record=*/true);
kono
parents: 67
diff changeset
2894 }
kono
parents: 67
diff changeset
2895 }
kono
parents: 67
diff changeset
2896
kono
parents: 67
diff changeset
2897 for (gimple_stmt_iterator gsi = gsi_start_bb (bb); !gsi_end_p (gsi);
kono
parents: 67
diff changeset
2898 gsi_next (&gsi))
kono
parents: 67
diff changeset
2899 {
kono
parents: 67
diff changeset
2900 gimple *stmt = gsi_stmt (gsi);
kono
parents: 67
diff changeset
2901 pp_bar (pp);
kono
parents: 67
diff changeset
2902 pp_write_text_to_stream (pp);
kono
parents: 67
diff changeset
2903 pp_gimple_stmt_1 (pp, stmt, 0, dump_flags);
kono
parents: 67
diff changeset
2904 pp_newline (pp);
kono
parents: 67
diff changeset
2905 pp_write_text_as_dot_label_to_stream (pp, /*for_record=*/true);
kono
parents: 67
diff changeset
2906 }
kono
parents: 67
diff changeset
2907 dump_implicit_edges (pp, bb, 0, dump_flags);
kono
parents: 67
diff changeset
2908 pp_write_text_as_dot_label_to_stream (pp, /*for_record=*/true);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2909 }
111
kono
parents: 67
diff changeset
2910
kono
parents: 67
diff changeset
2911
kono
parents: 67
diff changeset
2912 /* Handle the %G format for TEXT. Same as %K in handle_K_format in
kono
parents: 67
diff changeset
2913 tree-pretty-print.c but with a Gimple call statement as an argument. */
kono
parents: 67
diff changeset
2914
kono
parents: 67
diff changeset
2915 void
kono
parents: 67
diff changeset
2916 percent_G_format (text_info *text)
kono
parents: 67
diff changeset
2917 {
kono
parents: 67
diff changeset
2918 gcall *stmt = va_arg (*text->args_ptr, gcall*);
kono
parents: 67
diff changeset
2919
kono
parents: 67
diff changeset
2920 /* Build a call expression from the Gimple call statement and
kono
parents: 67
diff changeset
2921 pass it to the K formatter that knows how to format it. */
kono
parents: 67
diff changeset
2922 tree exp = build_vl_exp (CALL_EXPR, gimple_call_num_args (stmt) + 3);
kono
parents: 67
diff changeset
2923 CALL_EXPR_FN (exp) = gimple_call_fn (stmt);
kono
parents: 67
diff changeset
2924 TREE_TYPE (exp) = gimple_call_return_type (stmt);
kono
parents: 67
diff changeset
2925 CALL_EXPR_STATIC_CHAIN (exp) = gimple_call_chain (stmt);
kono
parents: 67
diff changeset
2926 SET_EXPR_LOCATION (exp, gimple_location (stmt));
kono
parents: 67
diff changeset
2927
kono
parents: 67
diff changeset
2928 percent_K_format (text, exp);
kono
parents: 67
diff changeset
2929 }