]> gcc.gnu.org Git - gcc.git/blame - gcc/genopinit.c
Makefile.in (STAGESTUFF): Split into ...
[gcc.git] / gcc / genopinit.c
CommitLineData
af9e4a0c 1/* Generate code to initialize optabs from machine description.
b5e01d4b 2 Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
d9221e01 3 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
af9e4a0c 4
1322177d 5This file is part of GCC.
af9e4a0c 6
1322177d
LB
7GCC is free software; you can redistribute it and/or modify it under
8the terms of the GNU General Public License as published by the Free
9Software Foundation; either version 2, or (at your option) any later
10version.
af9e4a0c 11
1322177d
LB
12GCC is distributed in the hope that it will be useful, but WITHOUT ANY
13WARRANTY; without even the implied warranty of MERCHANTABILITY or
14FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
15for more details.
af9e4a0c
RK
16
17You should have received a copy of the GNU General Public License
1322177d
LB
18along with GCC; see the file COPYING. If not, write to the Free
19Software Foundation, 59 Temple Place - Suite 330, Boston, MA
2002111-1307, USA. */
af9e4a0c
RK
21
22
4977bab6 23#include "bconfig.h"
0b93b64e 24#include "system.h"
4977bab6
ZW
25#include "coretypes.h"
26#include "tm.h"
af9e4a0c 27#include "rtl.h"
f8b6598e 28#include "errors.h"
c88c0d42 29#include "gensupport.h"
ccd043a9 30
af9e4a0c 31
af9e4a0c
RK
32/* Many parts of GCC use arrays that are indexed by machine mode and
33 contain the insn codes for pattern in the MD file that perform a given
34 operation on operands of that mode.
35
36 These patterns are present in the MD file with names that contain
37 the mode(s) used and the name of the operation. This program
38 writes a function `init_all_optabs' that initializes the optabs with
39 all the insn codes of the relevant patterns present in the MD file.
40
41 This array contains a list of optabs that need to be initialized. Within
42 each string, the name of the pattern to be matched against is delimited
1b3459d2 43 with $( and $). In the string, $a and $b are used to match a short mode
af9e4a0c
RK
44 name (the part of the mode name not including `mode' and converted to
45 lower-case). When writing out the initializer, the entire string is
1b3459d2 46 used. $A and $B are replaced with the full name of the mode; $a and $b
af9e4a0c
RK
47 are replaced with the short form of the name, as above.
48
1b3459d2
ZW
49 If $N is present in the pattern, it means the two modes must be consecutive
50 widths in the same mode class (e.g, QImode and HImode). $I means that
91ce572a
CC
51 only full integer modes should be considered for the next mode, and $F
52 means that only float modes should be considered.
53 $P means that both full and partial integer modes should be considered.
54
55 $V means to emit 'v' if the first mode is a MODE_FLOAT mode.
af9e4a0c
RK
56
57 For some optabs, we store the operation by RTL codes. These are only
1b3459d2 58 used for comparisons. In that case, $c and $C are the lower-case and
af9e4a0c
RK
59 upper-case forms of the comparison, respectively. */
60
83182544 61static const char * const optabs[] =
85363ca0
ZW
62{ "sext_optab->handlers[$B][$A].insn_code = CODE_FOR_$(extend$a$b2$)",
63 "zext_optab->handlers[$B][$A].insn_code = CODE_FOR_$(zero_extend$a$b2$)",
64 "sfix_optab->handlers[$B][$A].insn_code = CODE_FOR_$(fix$F$a$I$b2$)",
65 "ufix_optab->handlers[$B][$A].insn_code = CODE_FOR_$(fixuns$F$a$b2$)",
66 "sfixtrunc_optab->handlers[$B][$A].insn_code = CODE_FOR_$(fix_trunc$F$a$I$b2$)",
67 "ufixtrunc_optab->handlers[$B][$A].insn_code = CODE_FOR_$(fixuns_trunc$F$a$I$b2$)",
68 "sfloat_optab->handlers[$B][$A].insn_code = CODE_FOR_$(float$I$a$F$b2$)",
69 "ufloat_optab->handlers[$B][$A].insn_code = CODE_FOR_$(floatuns$I$a$F$b2$)",
70 "trunc_optab->handlers[$B][$A].insn_code = CODE_FOR_$(trunc$a$b2$)",
91ce572a 71 "add_optab->handlers[$A].insn_code = CODE_FOR_$(add$P$a3$)",
85363ca0
ZW
72 "addv_optab->handlers[$A].insn_code =\n\
73 add_optab->handlers[$A].insn_code = CODE_FOR_$(add$F$a3$)",
74 "addv_optab->handlers[$A].insn_code = CODE_FOR_$(addv$I$a3$)",
91ce572a 75 "sub_optab->handlers[$A].insn_code = CODE_FOR_$(sub$P$a3$)",
85363ca0
ZW
76 "subv_optab->handlers[$A].insn_code =\n\
77 sub_optab->handlers[$A].insn_code = CODE_FOR_$(sub$F$a3$)",
78 "subv_optab->handlers[$A].insn_code = CODE_FOR_$(subv$I$a3$)",
91ce572a 79 "smul_optab->handlers[$A].insn_code = CODE_FOR_$(mul$P$a3$)",
85363ca0
ZW
80 "smulv_optab->handlers[$A].insn_code =\n\
81 smul_optab->handlers[$A].insn_code = CODE_FOR_$(mul$F$a3$)",
82 "smulv_optab->handlers[$A].insn_code = CODE_FOR_$(mulv$I$a3$)",
1b3459d2
ZW
83 "umul_highpart_optab->handlers[$A].insn_code = CODE_FOR_$(umul$a3_highpart$)",
84 "smul_highpart_optab->handlers[$A].insn_code = CODE_FOR_$(smul$a3_highpart$)",
85 "smul_widen_optab->handlers[$B].insn_code = CODE_FOR_$(mul$a$b3$)$N",
86 "umul_widen_optab->handlers[$B].insn_code = CODE_FOR_$(umul$a$b3$)$N",
ef89d648 87 "sdiv_optab->handlers[$A].insn_code = CODE_FOR_$(div$a3$)",
85363ca0 88 "sdivv_optab->handlers[$A].insn_code = CODE_FOR_$(div$V$I$a3$)",
1b3459d2
ZW
89 "udiv_optab->handlers[$A].insn_code = CODE_FOR_$(udiv$I$a3$)",
90 "sdivmod_optab->handlers[$A].insn_code = CODE_FOR_$(divmod$a4$)",
91 "udivmod_optab->handlers[$A].insn_code = CODE_FOR_$(udivmod$a4$)",
92 "smod_optab->handlers[$A].insn_code = CODE_FOR_$(mod$a3$)",
93 "umod_optab->handlers[$A].insn_code = CODE_FOR_$(umod$a3$)",
5ae27cfa
UB
94 "fmod_optab->handlers[$A].insn_code = CODE_FOR_$(fmod$a3$)",
95 "drem_optab->handlers[$A].insn_code = CODE_FOR_$(drem$a3$)",
1b3459d2
ZW
96 "ftrunc_optab->handlers[$A].insn_code = CODE_FOR_$(ftrunc$F$a2$)",
97 "and_optab->handlers[$A].insn_code = CODE_FOR_$(and$a3$)",
98 "ior_optab->handlers[$A].insn_code = CODE_FOR_$(ior$a3$)",
99 "xor_optab->handlers[$A].insn_code = CODE_FOR_$(xor$a3$)",
100 "ashl_optab->handlers[$A].insn_code = CODE_FOR_$(ashl$a3$)",
101 "ashr_optab->handlers[$A].insn_code = CODE_FOR_$(ashr$a3$)",
102 "lshr_optab->handlers[$A].insn_code = CODE_FOR_$(lshr$a3$)",
103 "rotl_optab->handlers[$A].insn_code = CODE_FOR_$(rotl$a3$)",
104 "rotr_optab->handlers[$A].insn_code = CODE_FOR_$(rotr$a3$)",
105 "smin_optab->handlers[$A].insn_code = CODE_FOR_$(smin$I$a3$)",
106 "smin_optab->handlers[$A].insn_code = CODE_FOR_$(min$F$a3$)",
107 "smax_optab->handlers[$A].insn_code = CODE_FOR_$(smax$I$a3$)",
108 "smax_optab->handlers[$A].insn_code = CODE_FOR_$(max$F$a3$)",
109 "umin_optab->handlers[$A].insn_code = CODE_FOR_$(umin$I$a3$)",
110 "umax_optab->handlers[$A].insn_code = CODE_FOR_$(umax$I$a3$)",
b5e01d4b
RS
111 "pow_optab->handlers[$A].insn_code = CODE_FOR_$(pow$a3$)",
112 "atan2_optab->handlers[$A].insn_code = CODE_FOR_$(atan2$a3$)",
91ce572a 113 "neg_optab->handlers[$A].insn_code = CODE_FOR_$(neg$P$a2$)",
85363ca0
ZW
114 "negv_optab->handlers[$A].insn_code =\n\
115 neg_optab->handlers[$A].insn_code = CODE_FOR_$(neg$F$a2$)",
116 "negv_optab->handlers[$A].insn_code = CODE_FOR_$(negv$I$a2$)",
91ce572a 117 "abs_optab->handlers[$A].insn_code = CODE_FOR_$(abs$P$a2$)",
85363ca0
ZW
118 "absv_optab->handlers[$A].insn_code =\n\
119 abs_optab->handlers[$A].insn_code = CODE_FOR_$(abs$F$a2$)",
120 "absv_optab->handlers[$A].insn_code = CODE_FOR_$(absv$I$a2$)",
1b3459d2 121 "sqrt_optab->handlers[$A].insn_code = CODE_FOR_$(sqrt$a2$)",
4977bab6
ZW
122 "floor_optab->handlers[$A].insn_code = CODE_FOR_$(floor$a2$)",
123 "ceil_optab->handlers[$A].insn_code = CODE_FOR_$(ceil$a2$)",
124 "round_optab->handlers[$A].insn_code = CODE_FOR_$(round$a2$)",
edeacc14 125 "btrunc_optab->handlers[$A].insn_code = CODE_FOR_$(btrunc$a2$)",
4977bab6 126 "nearbyint_optab->handlers[$A].insn_code = CODE_FOR_$(nearbyint$a2$)",
edeacc14 127 "rint_optab->handlers[$A].insn_code = CODE_FOR_$(rint$a2$)",
6c7cf1f0 128 "sincos_optab->handlers[$A].insn_code = CODE_FOR_$(sincos$a3$)",
1b3459d2 129 "sin_optab->handlers[$A].insn_code = CODE_FOR_$(sin$a2$)",
c56122d8 130 "asin_optab->handlers[$A].insn_code = CODE_FOR_$(asin$a2$)",
1b3459d2 131 "cos_optab->handlers[$A].insn_code = CODE_FOR_$(cos$a2$)",
c56122d8 132 "acos_optab->handlers[$A].insn_code = CODE_FOR_$(acos$a2$)",
e7b489c8 133 "exp_optab->handlers[$A].insn_code = CODE_FOR_$(exp$a2$)",
a251102e
UB
134 "exp10_optab->handlers[$A].insn_code = CODE_FOR_$(exp10$a2$)",
135 "exp2_optab->handlers[$A].insn_code = CODE_FOR_$(exp2$a2$)",
7a8e07c7 136 "expm1_optab->handlers[$A].insn_code = CODE_FOR_$(expm1$a2$)",
88b28a31
UB
137 "logb_optab->handlers[$A].insn_code = CODE_FOR_$(logb$a2$)",
138 "ilogb_optab->handlers[$A].insn_code = CODE_FOR_$(ilogb$a2$)",
e7b489c8 139 "log_optab->handlers[$A].insn_code = CODE_FOR_$(log$a2$)",
3b8e0c91
UB
140 "log10_optab->handlers[$A].insn_code = CODE_FOR_$(log10$a2$)",
141 "log2_optab->handlers[$A].insn_code = CODE_FOR_$(log2$a2$)",
c2fcfa4f 142 "log1p_optab->handlers[$A].insn_code = CODE_FOR_$(log1p$a2$)",
82d397c7
RS
143 "tan_optab->handlers[$A].insn_code = CODE_FOR_$(tan$a2$)",
144 "atan_optab->handlers[$A].insn_code = CODE_FOR_$(atan$a2$)",
1b3459d2
ZW
145 "strlen_optab->handlers[$A].insn_code = CODE_FOR_$(strlen$a$)",
146 "one_cmpl_optab->handlers[$A].insn_code = CODE_FOR_$(one_cmpl$a2$)",
147 "ffs_optab->handlers[$A].insn_code = CODE_FOR_$(ffs$a2$)",
2928cd7a
RH
148 "clz_optab->handlers[$A].insn_code = CODE_FOR_$(clz$a2$)",
149 "ctz_optab->handlers[$A].insn_code = CODE_FOR_$(ctz$a2$)",
150 "popcount_optab->handlers[$A].insn_code = CODE_FOR_$(popcount$a2$)",
151 "parity_optab->handlers[$A].insn_code = CODE_FOR_$(parity$a2$)",
1b3459d2
ZW
152 "mov_optab->handlers[$A].insn_code = CODE_FOR_$(mov$a$)",
153 "movstrict_optab->handlers[$A].insn_code = CODE_FOR_$(movstrict$a$)",
154 "cmp_optab->handlers[$A].insn_code = CODE_FOR_$(cmp$a$)",
155 "tst_optab->handlers[$A].insn_code = CODE_FOR_$(tst$a$)",
068f5dea 156 "addcc_optab->handlers[$A].insn_code = CODE_FOR_$(add$acc$)",
1b3459d2
ZW
157 "bcc_gen_fctn[$C] = gen_$(b$c$)",
158 "setcc_gen_code[$C] = CODE_FOR_$(s$c$)",
159 "movcc_gen_code[$A] = CODE_FOR_$(mov$acc$)",
160 "cbranch_optab->handlers[$A].insn_code = CODE_FOR_$(cbranch$a4$)",
161 "cmov_optab->handlers[$A].insn_code = CODE_FOR_$(cmov$a6$)",
162 "cstore_optab->handlers[$A].insn_code = CODE_FOR_$(cstore$a4$)",
371b8fc0 163 "push_optab->handlers[$A].insn_code = CODE_FOR_$(push$a1$)",
1b3459d2
ZW
164 "reload_in_optab[$A] = CODE_FOR_$(reload_in$a$)",
165 "reload_out_optab[$A] = CODE_FOR_$(reload_out$a$)",
70128ad9
AO
166 "movmem_optab[$A] = CODE_FOR_$(movmem$a$)",
167 "clrmem_optab[$A] = CODE_FOR_$(clrmem$a$)",
118355a0 168 "cmpstr_optab[$A] = CODE_FOR_$(cmpstr$a$)",
997404de
JH
169 "cmpmem_optab[$A] = CODE_FOR_$(cmpmem$a$)",
170 "vec_set_optab->handlers[$A].insn_code = CODE_FOR_$(vec_set$a$)",
171 "vec_extract_optab->handlers[$A].insn_code = CODE_FOR_$(vec_extract$a$)",
7ccf35ed
DN
172 "vec_init_optab->handlers[$A].insn_code = CODE_FOR_$(vec_init$a$)",
173 "vec_realign_store_optab->handlers[$A].insn_code = CODE_FOR_$(vec_realign_store_$a$)",
174 "vec_realign_load_optab->handlers[$A].insn_code = CODE_FOR_$(vec_realign_load_$a$)" };
af9e4a0c 175
3d7aafde 176static void gen_insn (rtx);
56c0e996 177
af9e4a0c 178static void
3d7aafde 179gen_insn (rtx insn)
af9e4a0c 180{
3cce094d 181 const char *name = XSTR (insn, 0);
a544cfd2 182 int m1 = 0, m2 = 0, op = 0;
5ae9a7e9 183 size_t pindex;
af9e4a0c 184 int i;
85fda1eb 185 const char *np, *pp, *p, *q;
af9e4a0c
RK
186
187 /* Don't mention instructions whose names are the null string.
188 They are in the machine description just to be recognized. */
189 if (*name == 0)
190 return;
191
192 /* See if NAME matches one of the patterns we have for the optabs we know
193 about. */
194
b6a1cbae 195 for (pindex = 0; pindex < ARRAY_SIZE (optabs); pindex++)
af9e4a0c 196 {
91ce572a 197 int force_float = 0, force_int = 0, force_partial_int = 0;
af9e4a0c
RK
198 int force_consec = 0;
199 int matches = 1;
200
1b3459d2 201 for (pp = optabs[pindex]; pp[0] != '$' || pp[1] != '('; pp++)
af9e4a0c
RK
202 ;
203
1b3459d2 204 for (pp += 2, np = name; matches && ! (pp[0] == '$' && pp[1] == ')');
af9e4a0c
RK
205 pp++)
206 {
1b3459d2 207 if (*pp != '$')
af9e4a0c
RK
208 {
209 if (*pp != *np++)
210 break;
211 }
212 else
213 switch (*++pp)
214 {
215 case 'N':
216 force_consec = 1;
217 break;
218 case 'I':
219 force_int = 1;
220 break;
91ce572a
CC
221 case 'P':
222 force_partial_int = 1;
223 break;
af9e4a0c
RK
224 case 'F':
225 force_float = 1;
226 break;
91ce572a
CC
227 case 'V':
228 break;
af9e4a0c
RK
229 case 'c':
230 for (op = 0; op < NUM_RTX_CODE; op++)
231 {
5f06c983 232 for (p = GET_RTX_NAME(op), q = np; *p; p++, q++)
af9e4a0c
RK
233 if (*p != *q)
234 break;
235
236 /* We have to be concerned about matching "gt" and
237 missing "gtu", e.g., so verify we have reached the
4639555c 238 end of thing we are to match. */
ec8e098d
PB
239 if (*p == 0 && *q == 0
240 && (GET_RTX_CLASS (op) == RTX_COMPARE
241 || GET_RTX_CLASS (op) == RTX_COMM_COMPARE))
af9e4a0c
RK
242 break;
243 }
244
245 if (op == NUM_RTX_CODE)
246 matches = 0;
247 else
5f06c983 248 np += strlen (GET_RTX_NAME(op));
af9e4a0c
RK
249 break;
250 case 'a':
251 case 'b':
4639555c
ILT
252 /* This loop will stop at the first prefix match, so
253 look through the modes in reverse order, in case
94134f42 254 there are extra CC modes and CC is a prefix of the
4639555c 255 CC modes (as it should be). */
85363ca0 256 for (i = (MAX_MACHINE_MODE) - 1; i >= 0; i--)
af9e4a0c 257 {
a4ec8d12 258 for (p = GET_MODE_NAME(i), q = np; *p; p++, q++)
92a438d1 259 if (TOLOWER (*p) != *q)
af9e4a0c
RK
260 break;
261
262 if (*p == 0
7d9e680f
DB
263 && (! force_int || mode_class[i] == MODE_INT
264 || mode_class[i] == MODE_VECTOR_INT)
91ce572a
CC
265 && (! force_partial_int
266 || mode_class[i] == MODE_INT
7d9e680f
DB
267 || mode_class[i] == MODE_PARTIAL_INT
268 || mode_class[i] == MODE_VECTOR_INT)
269 && (! force_float || mode_class[i] == MODE_FLOAT
6041dc3c 270 || mode_class[i] == MODE_COMPLEX_FLOAT
7d9e680f 271 || mode_class[i] == MODE_VECTOR_FLOAT))
af9e4a0c
RK
272 break;
273 }
274
4639555c 275 if (i < 0)
af9e4a0c
RK
276 matches = 0;
277 else if (*pp == 'a')
a4ec8d12 278 m1 = i, np += strlen (GET_MODE_NAME(i));
af9e4a0c 279 else
a4ec8d12 280 m2 = i, np += strlen (GET_MODE_NAME(i));
af9e4a0c 281
91ce572a 282 force_int = force_partial_int = force_float = 0;
af9e4a0c
RK
283 break;
284
285 default:
b2d59f6f 286 gcc_unreachable ();
af9e4a0c
RK
287 }
288 }
289
1b3459d2 290 if (matches && pp[0] == '$' && pp[1] == ')'
af9e4a0c 291 && *np == 0
88a5e9da 292 && (! force_consec || (int) GET_MODE_WIDER_MODE(m1) == m2))
af9e4a0c
RK
293 break;
294 }
295
b6a1cbae 296 if (pindex == ARRAY_SIZE (optabs))
af9e4a0c
RK
297 return;
298
299 /* We found a match. If this pattern is only conditionally present,
300 write out the "if" and two extra blanks. */
301
302 if (*XSTR (insn, 2) != 0)
303 printf (" if (HAVE_%s)\n ", name);
304
305 printf (" ");
306
307 /* Now write out the initialization, making all required substitutions. */
308 for (pp = optabs[pindex]; *pp; pp++)
309 {
1b3459d2
ZW
310 if (*pp != '$')
311 putchar (*pp);
af9e4a0c
RK
312 else
313 switch (*++pp)
314 {
315 case '(': case ')':
316 case 'I': case 'F': case 'N':
317 break;
91ce572a
CC
318 case 'V':
319 if (GET_MODE_CLASS (m1) == MODE_FLOAT)
320 printf ("v");
321 break;
af9e4a0c 322 case 'a':
a4ec8d12 323 for (np = GET_MODE_NAME(m1); *np; np++)
92a438d1 324 putchar (TOLOWER (*np));
af9e4a0c
RK
325 break;
326 case 'b':
a4ec8d12 327 for (np = GET_MODE_NAME(m2); *np; np++)
92a438d1 328 putchar (TOLOWER (*np));
af9e4a0c
RK
329 break;
330 case 'A':
85363ca0 331 printf ("%smode", GET_MODE_NAME(m1));
af9e4a0c
RK
332 break;
333 case 'B':
85363ca0 334 printf ("%smode", GET_MODE_NAME(m2));
af9e4a0c
RK
335 break;
336 case 'c':
5f06c983 337 printf ("%s", GET_RTX_NAME(op));
af9e4a0c
RK
338 break;
339 case 'C':
5f06c983 340 for (np = GET_RTX_NAME(op); *np; np++)
92a438d1 341 putchar (TOUPPER (*np));
af9e4a0c
RK
342 break;
343 }
344 }
345
346 printf (";\n");
347}
af9e4a0c 348
3d7aafde 349extern int main (int, char **);
c1b59dce 350
af9e4a0c 351int
3d7aafde 352main (int argc, char **argv)
af9e4a0c
RK
353{
354 rtx desc;
af9e4a0c 355
f8b6598e 356 progname = "genopinit";
af9e4a0c 357
04d8aa70 358 if (init_md_reader_args (argc, argv) != SUCCESS_EXIT_CODE)
c88c0d42 359 return (FATAL_EXIT_CODE);
af9e4a0c 360
af9e4a0c
RK
361 printf ("/* Generated automatically by the program `genopinit'\n\
362from the machine description file `md'. */\n\n");
363
364 printf ("#include \"config.h\"\n");
729da3f5 365 printf ("#include \"system.h\"\n");
4977bab6
ZW
366 printf ("#include \"coretypes.h\"\n");
367 printf ("#include \"tm.h\"\n");
af9e4a0c
RK
368 printf ("#include \"rtl.h\"\n");
369 printf ("#include \"flags.h\"\n");
af9e4a0c
RK
370 printf ("#include \"insn-config.h\"\n");
371 printf ("#include \"recog.h\"\n");
372 printf ("#include \"expr.h\"\n");
e78d8e51 373 printf ("#include \"optabs.h\"\n");
af9e4a0c
RK
374 printf ("#include \"reload.h\"\n\n");
375
6906ba40 376 printf ("void\ninit_all_optabs (void)\n{\n");
af9e4a0c 377
dcc3fcf2
KH
378 puts ("\
379#ifdef FIXUNS_TRUNC_LIKE_FIX_TRUNC\n\
380 int i, j;\n\
381#endif\n");
382
af9e4a0c
RK
383 /* Read the machine description. */
384
385 while (1)
386 {
c88c0d42
CP
387 int line_no, insn_code_number = 0;
388
389 desc = read_md_rtx (&line_no, &insn_code_number);
390 if (desc == NULL)
af9e4a0c 391 break;
af9e4a0c 392
af9e4a0c
RK
393 if (GET_CODE (desc) == DEFINE_INSN || GET_CODE (desc) == DEFINE_EXPAND)
394 gen_insn (desc);
395 }
396
85363ca0
ZW
397 puts ("\
398\n\
399#ifdef FIXUNS_TRUNC_LIKE_FIX_TRUNC\n\
400 /* This flag says the same insns that convert to a signed fixnum\n\
401 also convert validly to an unsigned one. */\n\
402 for (i = 0; i < NUM_MACHINE_MODES; i++)\n\
403 for (j = 0; j < NUM_MACHINE_MODES; j++)\n\
404 ufixtrunc_optab->handlers[i][j].insn_code\n\
405 = sfixtrunc_optab->handlers[i][j].insn_code;\n\
406#endif\n\
407}");
af9e4a0c
RK
408
409 fflush (stdout);
c1b59dce 410 return (ferror (stdout) != 0 ? FATAL_EXIT_CODE : SUCCESS_EXIT_CODE);
af9e4a0c 411}
a995e389
RH
412
413/* Define this so we can link with print-rtl.o to get debug_rtx function. */
414const char *
3d7aafde 415get_insn_name (int code ATTRIBUTE_UNUSED)
a995e389
RH
416{
417 return NULL;
418}
This page took 1.874445 seconds and 5 git commands to generate.