2002-05-02 David S. Miller <davem@redhat.com>
[official-gcc.git] / gcc / builtins.def
blob7bfe7c2a1585f1d8a56db92449b755e7aee83647
1 /* This file contains the definitions and documentation for the
2 builtins used in the GNU compiler.
3 Copyright (C) 2000, 2001 Free Software Foundation, Inc.
5 This file is part of GCC.
7 GCC is free software; you can redistribute it and/or modify it under
8 the terms of the GNU General Public License as published by the Free
9 Software Foundation; either version 2, or (at your option) any later
10 version.
12 GCC is distributed in the hope that it will be useful, but WITHOUT ANY
13 WARRANTY; without even the implied warranty of MERCHANTABILITY or
14 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
15 for more details.
17 You should have received a copy of the GNU General Public License
18 along with GCC; see the file COPYING. If not, write to the Free
19 Software Foundation, 59 Temple Place - Suite 330, Boston, MA
20 02111-1307, USA. */
22 /* Before including this file, you should define a macro:
24 DEF_BUILTIN (ENUM, NAME, CLASS, TYPE, LIBTYPE, BOTH_P,
25 FALLBACK_P, NONANSI_P)
27 This macro will be called once for each builtin function. The
28 ENUM will be of type `enum built_in_function', and will indicate
29 which builtin function is being processed. The NAME of the builtin
30 function (which will always start with `__builtin_') is a string
31 literal. The CLASS is of type `enum built_in_class' and indicates
32 what kind of builtin is being processed.
34 Some builtins are actually two separate functions. For example,
35 for `strcmp' there are two builtin functions; `__builtin_strcmp'
36 and `strcmp' itself. Both behave identically. Other builtins
37 define only the `__builtin' variant. If BOTH_P is TRUE, then this
38 builtin has both variants; otherwise, it is has only the first
39 variant.
41 TYPE indicates the type of the function. The symbols correspond to
42 enumerals from builtin-types.def. If BOTH_P is true, then LIBTYPE
43 is the type of the non-`__builtin_' variant. Otherwise, LIBTYPE
44 should be ignored.
46 If FALLBACK_P is true then, if for some reason, the compiler cannot
47 expand the builtin function directly, it will call the
48 corresponding library function (which does not have the
49 `__builtin_' prefix.
51 If NONANSI_P is true, then the non-`__builtin_' variant is not an
52 ANSI/ISO library function, and so we should pretend it does not
53 exist when compiling in ANSI conformant mode. */
55 /* A GCC builtin (like __builtin_saveregs) is provided by the
56 compiler, but does not correspond to a function in the standard
57 library. */
58 #undef DEF_GCC_BUILTIN
59 #define DEF_GCC_BUILTIN(ENUM, NAME, TYPE) \
60 DEF_BUILTIN (ENUM, NAME, BUILT_IN_NORMAL, TYPE, BT_LAST, \
61 false, false, false)
64 /* A fallback builtin is a builtin (like __builtin_puts) that falls
65 back to the corresopnding library function if necessary -- but
66 for which we should not introduce the non-`__builtin' variant of
67 the name. */
68 #undef DEF_FALLBACK_BUILTIN
69 #define DEF_FALLBACK_BUILTIN(ENUM, NAME, TYPE) \
70 DEF_BUILTIN (ENUM, NAME, BUILT_IN_NORMAL, TYPE, TYPE, \
71 false, true, false)
73 /* Like DEF_FALLBACK_BUILTIN, except that the function is not one that
74 is specified by ANSI/ISO C. So, when we're being fully conformant
75 we ignore the version of these builtins that does not begin with
76 __builtin. */
77 #undef DEF_EXT_FALLBACK_BUILTIN
78 #define DEF_EXT_FALLBACK_BUILTIN(ENUM, NAME, TYPE) \
79 DEF_BUILTIN (ENUM, NAME, BUILT_IN_NORMAL, TYPE, TYPE, \
80 false, true, true)
82 /* A library builtin (like __builtin_strchr) is a builtin equivalent
83 of an ANSI/ISO standard library function. In addition to the
84 `__builtin' version, we will create an ordinary version (e.g,
85 `strchr') as well. If we cannot compute the answer using the
86 builtin function, we will fall back to the standard library
87 version. */
88 #undef DEF_LIB_BUILTIN
89 #define DEF_LIB_BUILTIN(ENUM, NAME, TYPE) \
90 DEF_BUILTIN (ENUM, NAME, BUILT_IN_NORMAL, TYPE, TYPE, \
91 true, true, false)
93 /* Like DEF_LIB_BUILTIN, except that a call to the builtin should
94 never fall back to the library version. */
95 #undef DEF_LIB_ALWAYS_BUILTIN
96 #define DEF_LIB_ALWAYS_BUILTIN(ENUM, NAME, TYPE) \
97 DEF_BUILTIN (ENUM, NAME, BUILT_IN_NORMAL, TYPE, TYPE, \
98 true, false, true)
100 /* Like DEF_LIB_BUILTIN, except that the function is not one that is
101 specified by ANSI/ISO C. So, when we're being fully conformant we
102 ignore the version of these builtins that does not begin with
103 __builtin. */
104 #undef DEF_EXT_LIB_BUILTIN
105 #define DEF_EXT_LIB_BUILTIN(ENUM, NAME, TYPE) \
106 DEF_BUILTIN (ENUM, NAME, BUILT_IN_NORMAL, TYPE, TYPE, \
107 true, true, true)
109 /* Like DEF_LIB_BUILTIN, except that the function is only a part of
110 the standard in C99 or above. */
111 #undef DEF_C99_BUILTIN
112 #define DEF_C99_BUILTIN(ENUM, NAME, TYPE) \
113 DEF_BUILTIN (ENUM, NAME, BUILT_IN_NORMAL, TYPE, TYPE, \
114 true, !flag_isoc99, true)
116 /* Like DEF_LIB_BUILTIN, except that the function is expanded in the
117 front-end. */
118 #undef DEF_FRONT_END_LIB_BUILTIN
119 #define DEF_FRONT_END_LIB_BUILTIN(ENUM, NAME, TYPE) \
120 DEF_BUILTIN (ENUM, NAME, BUILT_IN_FRONTEND, TYPE, TYPE, \
121 true, true, false)
123 /* Like DEF_FRONT_END_LIB_BUILTIN, except that the function is not one
124 that is specified by ANSI/ISO C. So, when we're being fully
125 conformant we ignore the version of these builtins that does not
126 begin with __builtin. */
127 #undef DEF_EXT_FRONT_END_LIB_BUILTIN
128 #define DEF_EXT_FRONT_END_LIB_BUILTIN(ENUM, NAME, TYPE) \
129 DEF_BUILTIN (ENUM, NAME, BUILT_IN_FRONTEND, TYPE, TYPE, \
130 true, true, true)
132 /* A built-in that is not currently used. */
133 #undef DEF_UNUSED_BUILTIN
134 #define DEF_UNUSED_BUILTIN(X) \
135 DEF_BUILTIN (X, (const char *) NULL, NOT_BUILT_IN, BT_LAST, \
136 BT_LAST, false, false, false)
138 /* If SMALL_STACK is defined, then `alloca' is only defined in its
139 `__builtin' form. */
140 #if SMALL_STACK
141 DEF_FALLBACK_BUILTIN(BUILT_IN_ALLOCA,
142 "__builtin_alloca",
143 BT_FN_PTR_SIZE)
144 #else
145 DEF_EXT_LIB_BUILTIN(BUILT_IN_ALLOCA,
146 "__builtin_alloca",
147 BT_FN_PTR_SIZE)
148 #endif
150 DEF_LIB_ALWAYS_BUILTIN(BUILT_IN_ABS,
151 "__builtin_abs",
152 BT_FN_INT_INT)
153 DEF_LIB_ALWAYS_BUILTIN(BUILT_IN_LABS,
154 "__builtin_labs",
155 BT_FN_LONG_LONG)
157 DEF_LIB_ALWAYS_BUILTIN(BUILT_IN_FABS,
158 "__builtin_fabs",
159 BT_FN_DOUBLE_DOUBLE)
160 DEF_LIB_ALWAYS_BUILTIN(BUILT_IN_FABSF,
161 "__builtin_fabsf",
162 BT_FN_FLOAT_FLOAT)
163 DEF_LIB_ALWAYS_BUILTIN(BUILT_IN_FABSL,
164 "__builtin_fabsl",
165 BT_FN_LONG_DOUBLE_LONG_DOUBLE)
167 DEF_C99_BUILTIN(BUILT_IN_LLABS,
168 "__builtin_llabs",
169 BT_FN_LONGLONG_LONGLONG)
170 DEF_C99_BUILTIN(BUILT_IN_IMAXABS,
171 "__builtin_imaxabs",
172 BT_FN_INTMAX_INTMAX)
173 DEF_C99_BUILTIN(BUILT_IN_CONJ,
174 "__builtin_conj",
175 BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE)
176 DEF_C99_BUILTIN(BUILT_IN_CONJF,
177 "__builtin_conjf",
178 BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT)
179 DEF_C99_BUILTIN(BUILT_IN_CONJL,
180 "__builtin_conjl",
181 BT_FN_COMPLEX_LONG_DOUBLE_COMPLEX_LONG_DOUBLE)
182 DEF_C99_BUILTIN(BUILT_IN_CREAL,
183 "__builtin_creal",
184 BT_FN_DOUBLE_COMPLEX_DOUBLE)
185 DEF_C99_BUILTIN(BUILT_IN_CREALF,
186 "__builtin_crealf",
187 BT_FN_FLOAT_COMPLEX_FLOAT)
188 DEF_C99_BUILTIN(BUILT_IN_CREALL,
189 "__builtin_creall",
190 BT_FN_LONG_DOUBLE_COMPLEX_LONG_DOUBLE)
191 DEF_C99_BUILTIN(BUILT_IN_CIMAG,
192 "__builtin_cimag",
193 BT_FN_DOUBLE_COMPLEX_DOUBLE)
194 DEF_C99_BUILTIN(BUILT_IN_CIMAGF,
195 "__builtin_cimagf",
196 BT_FN_FLOAT_COMPLEX_FLOAT)
197 DEF_C99_BUILTIN(BUILT_IN_CIMAGL,
198 "__builtin_cimagl",
199 BT_FN_LONG_DOUBLE_COMPLEX_LONG_DOUBLE)
201 DEF_UNUSED_BUILTIN(BUILT_IN_DIV)
202 DEF_UNUSED_BUILTIN(BUILT_IN_LDIV)
203 DEF_UNUSED_BUILTIN(BUILT_IN_FFLOOR)
204 DEF_UNUSED_BUILTIN(BUILT_IN_FCEIL)
205 DEF_UNUSED_BUILTIN(BUILT_IN_FMOD)
206 DEF_UNUSED_BUILTIN(BUILT_IN_FREM)
208 /* The system prototypes for `bzero' and `bcmp' functions have many
209 variations, so don't specify parameters to avoid conflicts. The
210 expand_* functions check the argument types anyway. */
211 DEF_BUILTIN (BUILT_IN_BZERO,
212 "__builtin_bzero",
213 BUILT_IN_NORMAL,
214 BT_FN_VOID_PTR_SIZE,
215 BT_FN_VOID_VAR,
216 true, true, true)
217 DEF_BUILTIN (BUILT_IN_BCMP,
218 "__builtin_bcmp",
219 BUILT_IN_NORMAL,
220 BT_FN_INT_CONST_PTR_CONST_PTR_SIZE,
221 BT_FN_INT_VAR,
222 true, true, true)
224 DEF_EXT_LIB_BUILTIN(BUILT_IN_FFS,
225 "__builtin_ffs",
226 BT_FN_INT_INT)
227 DEF_EXT_LIB_BUILTIN(BUILT_IN_INDEX,
228 "__builtin_index",
229 BT_FN_STRING_CONST_STRING_INT)
230 DEF_EXT_LIB_BUILTIN(BUILT_IN_RINDEX,
231 "__builtin_rindex",
232 BT_FN_STRING_CONST_STRING_INT)
234 DEF_LIB_BUILTIN(BUILT_IN_MEMCPY,
235 "__builtin_memcpy",
236 BT_FN_PTR_PTR_CONST_PTR_SIZE)
237 DEF_LIB_BUILTIN(BUILT_IN_MEMCMP,
238 "__builtin_memcmp",
239 BT_FN_INT_CONST_PTR_CONST_PTR_SIZE)
240 DEF_LIB_BUILTIN(BUILT_IN_MEMSET,
241 "__builtin_memset",
242 BT_FN_PTR_PTR_INT_SIZE)
244 DEF_LIB_BUILTIN(BUILT_IN_STRCAT,
245 "__builtin_strcat",
246 BT_FN_STRING_STRING_CONST_STRING)
247 DEF_LIB_BUILTIN(BUILT_IN_STRNCAT,
248 "__builtin_strncat",
249 BT_FN_STRING_STRING_CONST_STRING_SIZE)
250 DEF_LIB_BUILTIN(BUILT_IN_STRCPY,
251 "__builtin_strcpy",
252 BT_FN_STRING_STRING_CONST_STRING)
253 DEF_LIB_BUILTIN(BUILT_IN_STRNCPY,
254 "__builtin_strncpy",
255 BT_FN_STRING_STRING_CONST_STRING_SIZE)
256 DEF_LIB_BUILTIN(BUILT_IN_STRCMP,
257 "__builtin_strcmp",
258 BT_FN_INT_CONST_STRING_CONST_STRING)
259 DEF_LIB_BUILTIN(BUILT_IN_STRNCMP,
260 "__builtin_strncmp",
261 BT_FN_INT_CONST_STRING_CONST_STRING_SIZE)
262 DEF_LIB_BUILTIN(BUILT_IN_STRLEN,
263 "__builtin_strlen",
264 BT_FN_SIZE_CONST_STRING)
265 DEF_LIB_BUILTIN(BUILT_IN_STRSTR,
266 "__builtin_strstr",
267 BT_FN_STRING_CONST_STRING_CONST_STRING)
268 DEF_LIB_BUILTIN(BUILT_IN_STRPBRK,
269 "__builtin_strpbrk",
270 BT_FN_STRING_CONST_STRING_CONST_STRING)
271 DEF_LIB_BUILTIN(BUILT_IN_STRSPN,
272 "__builtin_strspn",
273 BT_FN_SIZE_CONST_STRING_CONST_STRING)
274 DEF_LIB_BUILTIN(BUILT_IN_STRCSPN,
275 "__builtin_strcspn",
276 BT_FN_SIZE_CONST_STRING_CONST_STRING)
277 DEF_LIB_BUILTIN(BUILT_IN_STRCHR,
278 "__builtin_strchr",
279 BT_FN_STRING_CONST_STRING_INT)
280 DEF_LIB_BUILTIN(BUILT_IN_STRRCHR,
281 "__builtin_strrchr",
282 BT_FN_STRING_CONST_STRING_INT)
284 DEF_LIB_BUILTIN(BUILT_IN_SQRT,
285 "__builtin_sqrt",
286 BT_FN_DOUBLE_DOUBLE)
287 DEF_LIB_BUILTIN(BUILT_IN_SIN,
288 "__builtin_sin",
289 BT_FN_DOUBLE_DOUBLE)
290 DEF_LIB_BUILTIN(BUILT_IN_COS,
291 "__builtin_cos",
292 BT_FN_DOUBLE_DOUBLE)
293 DEF_LIB_BUILTIN(BUILT_IN_SQRTF,
294 "__builtin_sqrtf",
295 BT_FN_FLOAT_FLOAT)
296 DEF_LIB_BUILTIN(BUILT_IN_SINF,
297 "__builtin_sinf",
298 BT_FN_FLOAT_FLOAT)
299 DEF_LIB_BUILTIN(BUILT_IN_COSF,
300 "__builtin_cosf",
301 BT_FN_FLOAT_FLOAT)
302 DEF_LIB_BUILTIN(BUILT_IN_SQRTL,
303 "__builtin_sqrtl",
304 BT_FN_LONG_DOUBLE_LONG_DOUBLE)
305 DEF_LIB_BUILTIN(BUILT_IN_SINL,
306 "__builtin_sinl",
307 BT_FN_LONG_DOUBLE_LONG_DOUBLE)
308 DEF_LIB_BUILTIN(BUILT_IN_COSL,
309 "__builtin_cosl",
310 BT_FN_LONG_DOUBLE_LONG_DOUBLE)
312 DEF_UNUSED_BUILTIN(BUILT_IN_GETEXP)
313 DEF_UNUSED_BUILTIN(BUILT_IN_GETMAN)
315 DEF_GCC_BUILTIN(BUILT_IN_SAVEREGS,
316 "__builtin_saveregs",
317 BT_FN_PTR_VAR)
318 DEF_GCC_BUILTIN(BUILT_IN_CLASSIFY_TYPE,
319 "__builtin_classify_type",
320 BT_FN_INT_VAR)
321 DEF_GCC_BUILTIN(BUILT_IN_NEXT_ARG,
322 "__builtin_next_arg",
323 BT_FN_PTR_VAR)
324 DEF_GCC_BUILTIN(BUILT_IN_ARGS_INFO,
325 "__builtin_args_info",
326 BT_FN_INT_INT)
327 DEF_GCC_BUILTIN(BUILT_IN_CONSTANT_P,
328 "__builtin_constant_p",
329 BT_FN_INT_VAR)
330 DEF_GCC_BUILTIN(BUILT_IN_FRAME_ADDRESS,
331 "__builtin_frame_address",
332 BT_FN_PTR_UNSIGNED)
333 DEF_GCC_BUILTIN(BUILT_IN_RETURN_ADDRESS,
334 "__builtin_return_address",
335 BT_FN_PTR_UNSIGNED)
336 DEF_GCC_BUILTIN(BUILT_IN_AGGREGATE_INCOMING_ADDRESS,
337 "__builtin_aggregate_incoming_address",
338 BT_FN_PTR_VAR)
339 DEF_GCC_BUILTIN(BUILT_IN_APPLY_ARGS,
340 "__builtin_apply_args",
341 BT_FN_PTR_VAR)
342 DEF_GCC_BUILTIN(BUILT_IN_APPLY,
343 "__builtin_apply",
344 BT_FN_PTR_PTR_FN_VOID_VAR_PTR_SIZE)
345 DEF_GCC_BUILTIN(BUILT_IN_RETURN,
346 "__builtin_return",
347 BT_FN_VOID_PTR)
348 DEF_GCC_BUILTIN(BUILT_IN_SETJMP,
349 "__builtin_setjmp",
350 BT_FN_INT_PTR)
351 DEF_GCC_BUILTIN(BUILT_IN_LONGJMP,
352 "__builtin_longjmp",
353 BT_FN_VOID_PTR_INT)
354 DEF_GCC_BUILTIN(BUILT_IN_TRAP,
355 "__builtin_trap",
356 BT_FN_VOID)
357 DEF_GCC_BUILTIN(BUILT_IN_PREFETCH,
358 "__builtin_prefetch",
359 BT_FN_VOID_CONST_PTR_VAR)
361 /* Stdio builtins. */
362 DEF_FALLBACK_BUILTIN(BUILT_IN_PUTCHAR,
363 "__builtin_putchar",
364 BT_FN_INT_INT)
365 DEF_FALLBACK_BUILTIN(BUILT_IN_PUTS,
366 "__builtin_puts",
367 BT_FN_INT_CONST_STRING)
368 DEF_FRONT_END_LIB_BUILTIN(BUILT_IN_PRINTF,
369 "__builtin_printf",
370 BT_FN_INT_CONST_STRING_VAR)
371 DEF_FALLBACK_BUILTIN(BUILT_IN_FPUTC,
372 "__builtin_fputc",
373 BT_FN_INT_INT_PTR)
374 /* Declare the __builtin_ style with arguments and the regular style
375 without them. We rely on stdio.h to supply the arguments for the
376 regular style declaration since we had to use void* instead of
377 FILE* in the __builtin_ prototype supplied here. */
378 DEF_BUILTIN (BUILT_IN_FPUTS,
379 "__builtin_fputs",
380 BUILT_IN_NORMAL,
381 BT_FN_INT_CONST_STRING_PTR,
382 BT_FN_INT_VAR,
383 true, true, false)
384 DEF_FALLBACK_BUILTIN(BUILT_IN_FWRITE,
385 "__builtin_fwrite",
386 BT_FN_SIZE_CONST_PTR_SIZE_SIZE_PTR)
387 DEF_FRONT_END_LIB_BUILTIN(BUILT_IN_FPRINTF,
388 "__builtin_fprintf",
389 BT_FN_INT_PTR_CONST_STRING_VAR)
391 /* Stdio unlocked builtins. */
393 DEF_EXT_FALLBACK_BUILTIN(BUILT_IN_PUTCHAR_UNLOCKED,
394 "__builtin_putchar_unlocked",
395 BT_FN_INT_INT)
396 DEF_EXT_FALLBACK_BUILTIN(BUILT_IN_PUTS_UNLOCKED,
397 "__builtin_puts_unlocked",
398 BT_FN_INT_CONST_STRING)
399 DEF_EXT_FRONT_END_LIB_BUILTIN(BUILT_IN_PRINTF_UNLOCKED,
400 "__builtin_printf_unlocked",
401 BT_FN_INT_CONST_STRING_VAR)
402 DEF_EXT_FALLBACK_BUILTIN(BUILT_IN_FPUTC_UNLOCKED,
403 "__builtin_fputc_unlocked",
404 BT_FN_INT_INT_PTR)
405 /* Declare the __builtin_ style with arguments and the regular style
406 without them. We rely on stdio.h to supply the arguments for the
407 regular style declaration since we had to use void* instead of
408 FILE* in the __builtin_ prototype supplied here. */
409 DEF_BUILTIN (BUILT_IN_FPUTS_UNLOCKED,
410 "__builtin_fputs_unlocked",
411 BUILT_IN_NORMAL,
412 BT_FN_INT_CONST_STRING_PTR,
413 BT_FN_INT_VAR,
414 true, true, true)
415 DEF_EXT_FALLBACK_BUILTIN(BUILT_IN_FWRITE_UNLOCKED,
416 "__builtin_fwrite_unlocked",
417 BT_FN_SIZE_CONST_PTR_SIZE_SIZE_PTR)
418 DEF_EXT_FRONT_END_LIB_BUILTIN(BUILT_IN_FPRINTF_UNLOCKED,
419 "__builtin_fprintf_unlocked",
420 BT_FN_INT_PTR_CONST_STRING_VAR)
422 /* ISO C99 floating point unordered comparisons. */
423 DEF_GCC_BUILTIN(BUILT_IN_ISGREATER,
424 "__builtin_isgreater",
425 BT_FN_INT_VAR)
426 DEF_GCC_BUILTIN(BUILT_IN_ISGREATEREQUAL,
427 "__builtin_isgreaterequal",
428 BT_FN_INT_VAR)
429 DEF_GCC_BUILTIN(BUILT_IN_ISLESS,
430 "__builtin_isless",
431 BT_FN_INT_VAR)
432 DEF_GCC_BUILTIN(BUILT_IN_ISLESSEQUAL,
433 "__builtin_islessequal",
434 BT_FN_INT_VAR)
435 DEF_GCC_BUILTIN(BUILT_IN_ISLESSGREATER,
436 "__builtin_islessgreater",
437 BT_FN_INT_VAR)
438 DEF_GCC_BUILTIN(BUILT_IN_ISUNORDERED,
439 "__builtin_isunordered",
440 BT_FN_INT_VAR)
442 /* Various hooks for the DWARF 2 __throw routine. */
443 DEF_GCC_BUILTIN(BUILT_IN_UNWIND_INIT,
444 "__builtin_unwind_init",
445 BT_FN_VOID)
446 DEF_GCC_BUILTIN(BUILT_IN_DWARF_CFA,
447 "__builtin_dwarf_cfa",
448 BT_FN_PTR)
449 DEF_GCC_BUILTIN(BUILT_IN_DWARF_FP_REGNUM,
450 "__builtin_dwarf_fp_regnum",
451 BT_FN_UNSIGNED)
452 DEF_GCC_BUILTIN(BUILT_IN_INIT_DWARF_REG_SIZES,
453 "__builtin_init_dwarf_reg_size_table",
454 BT_FN_VOID_PTR)
455 DEF_GCC_BUILTIN(BUILT_IN_FROB_RETURN_ADDR,
456 "__builtin_frob_return_addr",
457 BT_FN_PTR_PTR)
458 DEF_GCC_BUILTIN(BUILT_IN_EXTRACT_RETURN_ADDR,
459 "__builtin_extract_return_addr",
460 BT_FN_PTR_PTR)
461 DEF_GCC_BUILTIN(BUILT_IN_EH_RETURN,
462 "__builtin_eh_return",
463 BT_FN_VOID_PTRMODE_PTR)
464 DEF_GCC_BUILTIN(BUILT_IN_EH_RETURN_DATA_REGNO,
465 "__builtin_eh_return_data_regno",
466 BT_FN_INT_INT)
468 DEF_GCC_BUILTIN(BUILT_IN_VARARGS_START,
469 "__builtin_varargs_start",
470 BT_FN_VOID_VALIST_REF)
471 DEF_GCC_BUILTIN(BUILT_IN_STDARG_START,
472 "__builtin_stdarg_start",
473 BT_FN_VOID_VALIST_REF_VAR)
474 DEF_GCC_BUILTIN(BUILT_IN_VA_END,
475 "__builtin_va_end",
476 BT_FN_VOID_VALIST_REF)
477 DEF_GCC_BUILTIN(BUILT_IN_VA_COPY,
478 "__builtin_va_copy",
479 BT_FN_VOID_VALIST_REF_VALIST_ARG)
480 DEF_GCC_BUILTIN(BUILT_IN_EXPECT,
481 "__builtin_expect",
482 BT_FN_LONG_LONG_LONG)
484 /* C++ extensions */
485 DEF_UNUSED_BUILTIN(BUILT_IN_NEW)
486 DEF_UNUSED_BUILTIN(BUILT_IN_VEC_NEW)
487 DEF_UNUSED_BUILTIN(BUILT_IN_DELETE)
488 DEF_UNUSED_BUILTIN(BUILT_IN_VEC_DELETE)