builtins.def revision 90075
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.
4
5This file is part of GCC.
6
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.
11
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.
16
17You should have received a copy of the GNU General Public License
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.  */
21
22/* Before including this file, you should define a macro:
23
24     DEF_BUILTIN (ENUM, NAME, CLASS, TYPE, LIBTYPE, BOTH_P,
25                  FALLBACK_P, NONANSI_P)
26
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.
33
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.
40
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.
45
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.
50
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.  */
54   
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)
62
63
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)
72
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)
81
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)
92
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)
99
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)
108
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)
115
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)
122
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)
131
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)
137
138/* If SMALL_STACK is defined, then `alloca' is only defined in its
139   `__builtin' form.  */
140#if SMALL_STACK  
141DEF_FALLBACK_BUILTIN(BUILT_IN_ALLOCA,
142		     "__builtin_alloca",
143		     BT_FN_PTR_SIZE)
144#else
145DEF_EXT_LIB_BUILTIN(BUILT_IN_ALLOCA,
146		    "__builtin_alloca",
147		    BT_FN_PTR_SIZE)
148#endif
149
150DEF_LIB_ALWAYS_BUILTIN(BUILT_IN_ABS,
151		       "__builtin_abs",
152		       BT_FN_INT_INT)
153DEF_LIB_ALWAYS_BUILTIN(BUILT_IN_LABS,
154		       "__builtin_labs",
155		       BT_FN_LONG_LONG)
156
157DEF_LIB_ALWAYS_BUILTIN(BUILT_IN_FABS,
158		       "__builtin_fabs",
159		       BT_FN_DOUBLE_DOUBLE)
160DEF_LIB_ALWAYS_BUILTIN(BUILT_IN_FABSF,
161		       "__builtin_fabsf",
162		       BT_FN_FLOAT_FLOAT)
163DEF_LIB_ALWAYS_BUILTIN(BUILT_IN_FABSL,
164		       "__builtin_fabsl",
165		       BT_FN_LONG_DOUBLE_LONG_DOUBLE)
166
167DEF_C99_BUILTIN(BUILT_IN_LLABS,
168		"__builtin_llabs",
169		BT_FN_LONGLONG_LONGLONG)
170DEF_C99_BUILTIN(BUILT_IN_IMAXABS,
171		"__builtin_imaxabs",
172		BT_FN_INTMAX_INTMAX)
173DEF_C99_BUILTIN(BUILT_IN_CONJ,
174		"__builtin_conj",
175		BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE)
176DEF_C99_BUILTIN(BUILT_IN_CONJF,
177		"__builtin_conjf",
178		BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT)
179DEF_C99_BUILTIN(BUILT_IN_CONJL,
180		"__builtin_conjl",
181		BT_FN_COMPLEX_LONG_DOUBLE_COMPLEX_LONG_DOUBLE)
182DEF_C99_BUILTIN(BUILT_IN_CREAL,
183		"__builtin_creal",
184		BT_FN_DOUBLE_COMPLEX_DOUBLE)
185DEF_C99_BUILTIN(BUILT_IN_CREALF,
186		"__builtin_crealf",
187		BT_FN_FLOAT_COMPLEX_FLOAT)
188DEF_C99_BUILTIN(BUILT_IN_CREALL,
189		"__builtin_creall",
190		BT_FN_LONG_DOUBLE_COMPLEX_LONG_DOUBLE)
191DEF_C99_BUILTIN(BUILT_IN_CIMAG,
192		"__builtin_cimag",
193		BT_FN_DOUBLE_COMPLEX_DOUBLE)
194DEF_C99_BUILTIN(BUILT_IN_CIMAGF,
195		"__builtin_cimagf",
196		BT_FN_FLOAT_COMPLEX_FLOAT)
197DEF_C99_BUILTIN(BUILT_IN_CIMAGL,
198		"__builtin_cimagl",
199		BT_FN_LONG_DOUBLE_COMPLEX_LONG_DOUBLE)
200
201DEF_UNUSED_BUILTIN(BUILT_IN_DIV)
202DEF_UNUSED_BUILTIN(BUILT_IN_LDIV)
203DEF_UNUSED_BUILTIN(BUILT_IN_FFLOOR)
204DEF_UNUSED_BUILTIN(BUILT_IN_FCEIL)
205DEF_UNUSED_BUILTIN(BUILT_IN_FMOD)
206DEF_UNUSED_BUILTIN(BUILT_IN_FREM)
207
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.  */
211DEF_BUILTIN (BUILT_IN_BZERO,
212	     "__builtin_bzero",
213	     BUILT_IN_NORMAL,
214	     BT_FN_VOID_TRAD_PTR_LEN, 
215	     BT_FN_VOID_VAR,
216	     true, true, true)
217DEF_BUILTIN (BUILT_IN_BCMP,
218	     "__builtin_bcmp",
219	     BUILT_IN_NORMAL,
220	     BT_FN_INT_TRAD_CONST_PTR_TRAD_CONST_PTR_LEN,
221	     BT_FN_INT_VAR,
222	     true, true, true)
223
224DEF_EXT_LIB_BUILTIN(BUILT_IN_FFS,
225		    "__builtin_ffs",
226		    BT_FN_INT_INT)
227DEF_EXT_LIB_BUILTIN(BUILT_IN_INDEX,
228		    "__builtin_index",
229		    BT_FN_STRING_CONST_STRING_INT)
230DEF_EXT_LIB_BUILTIN(BUILT_IN_RINDEX,
231		    "__builtin_rindex",
232		    BT_FN_STRING_CONST_STRING_INT)
233
234DEF_LIB_BUILTIN(BUILT_IN_MEMCPY,
235		"__builtin_memcpy",
236		BT_FN_TRAD_PTR_PTR_CONST_PTR_SIZE)
237DEF_LIB_BUILTIN(BUILT_IN_MEMCMP,
238		"__builtin_memcmp",
239		BT_FN_INT_CONST_PTR_CONST_PTR_SIZE)
240DEF_LIB_BUILTIN(BUILT_IN_MEMSET,
241		"__builtin_memset",
242		BT_FN_TRAD_PTR_PTR_INT_SIZE)
243
244DEF_LIB_BUILTIN(BUILT_IN_STRCAT,
245		"__builtin_strcat",
246		BT_FN_STRING_STRING_CONST_STRING)
247DEF_LIB_BUILTIN(BUILT_IN_STRNCAT,
248		"__builtin_strncat",
249		BT_FN_STRING_STRING_CONST_STRING_SIZE)
250DEF_LIB_BUILTIN(BUILT_IN_STRCPY,
251		"__builtin_strcpy",
252		BT_FN_STRING_STRING_CONST_STRING)
253DEF_LIB_BUILTIN(BUILT_IN_STRNCPY,
254		"__builtin_strncpy",
255		BT_FN_STRING_STRING_CONST_STRING_SIZE)
256DEF_LIB_BUILTIN(BUILT_IN_STRCMP,
257		"__builtin_strcmp",
258		BT_FN_INT_CONST_STRING_CONST_STRING)
259DEF_LIB_BUILTIN(BUILT_IN_STRNCMP,
260		"__builtin_strncmp",
261		BT_FN_INT_CONST_STRING_CONST_STRING_SIZE)
262DEF_LIB_BUILTIN(BUILT_IN_STRLEN,
263		"__builtin_strlen",
264		BT_FN_LEN_CONST_STRING)
265DEF_LIB_BUILTIN(BUILT_IN_STRSTR,
266		"__builtin_strstr",
267		BT_FN_STRING_CONST_STRING_CONST_STRING)
268DEF_LIB_BUILTIN(BUILT_IN_STRPBRK,
269		"__builtin_strpbrk",
270		BT_FN_STRING_CONST_STRING_CONST_STRING)
271DEF_LIB_BUILTIN(BUILT_IN_STRSPN,
272		"__builtin_strspn",
273		BT_FN_SIZE_CONST_STRING_CONST_STRING)
274DEF_LIB_BUILTIN(BUILT_IN_STRCSPN,
275		"__builtin_strcspn",
276		BT_FN_SIZE_CONST_STRING_CONST_STRING)
277DEF_LIB_BUILTIN(BUILT_IN_STRCHR,
278		"__builtin_strchr",
279		BT_FN_STRING_CONST_STRING_INT)
280DEF_LIB_BUILTIN(BUILT_IN_STRRCHR,
281		"__builtin_strrchr",
282		BT_FN_STRING_CONST_STRING_INT)
283
284DEF_LIB_BUILTIN(BUILT_IN_SQRT,
285		"__builtin_sqrt",
286		BT_FN_DOUBLE_DOUBLE)
287DEF_LIB_BUILTIN(BUILT_IN_SIN,
288		"__builtin_sin",
289		BT_FN_DOUBLE_DOUBLE)
290DEF_LIB_BUILTIN(BUILT_IN_COS,
291		"__builtin_cos",
292		BT_FN_DOUBLE_DOUBLE)
293DEF_LIB_BUILTIN(BUILT_IN_SQRTF,
294		"__builtin_sqrtf",
295		BT_FN_FLOAT_FLOAT)
296DEF_LIB_BUILTIN(BUILT_IN_SINF,
297		"__builtin_sinf",
298		BT_FN_FLOAT_FLOAT)
299DEF_LIB_BUILTIN(BUILT_IN_COSF,
300		"__builtin_cosf",
301		BT_FN_FLOAT_FLOAT)
302DEF_LIB_BUILTIN(BUILT_IN_SQRTL,
303		"__builtin_sqrtl",
304		BT_FN_LONG_DOUBLE_LONG_DOUBLE)
305DEF_LIB_BUILTIN(BUILT_IN_SINL,
306		"__builtin_sinl",
307		BT_FN_LONG_DOUBLE_LONG_DOUBLE)
308DEF_LIB_BUILTIN(BUILT_IN_COSL,
309		"__builtin_cosl",
310		BT_FN_LONG_DOUBLE_LONG_DOUBLE)
311
312DEF_UNUSED_BUILTIN(BUILT_IN_GETEXP)
313DEF_UNUSED_BUILTIN(BUILT_IN_GETMAN)
314
315DEF_GCC_BUILTIN(BUILT_IN_SAVEREGS,
316		"__builtin_saveregs",
317		BT_FN_PTR_VAR)
318DEF_GCC_BUILTIN(BUILT_IN_CLASSIFY_TYPE,
319		"__builtin_classify_type",
320		BT_FN_INT_VAR)
321DEF_GCC_BUILTIN(BUILT_IN_NEXT_ARG,
322		"__builtin_next_arg",
323		BT_FN_PTR_VAR)
324DEF_GCC_BUILTIN(BUILT_IN_ARGS_INFO,
325		"__builtin_args_info",
326		BT_FN_INT_INT)
327DEF_GCC_BUILTIN(BUILT_IN_CONSTANT_P, 
328		"__builtin_constant_p", 
329		BT_FN_INT_VAR)
330DEF_GCC_BUILTIN(BUILT_IN_FRAME_ADDRESS,
331		"__builtin_frame_address",
332		BT_FN_PTR_UNSIGNED)
333DEF_GCC_BUILTIN(BUILT_IN_RETURN_ADDRESS, 
334		"__builtin_return_address",
335		BT_FN_PTR_UNSIGNED)
336DEF_GCC_BUILTIN(BUILT_IN_AGGREGATE_INCOMING_ADDRESS,
337		"__builtin_aggregate_incoming_address",
338		BT_FN_PTR_VAR)
339DEF_GCC_BUILTIN(BUILT_IN_APPLY_ARGS,
340		"__builtin_apply_args",
341		BT_FN_PTR_VAR)
342DEF_GCC_BUILTIN(BUILT_IN_APPLY,
343		"__builtin_apply",
344		BT_FN_PTR_PTR_FN_VOID_VAR_PTR_SIZE)
345DEF_GCC_BUILTIN(BUILT_IN_RETURN,
346		"__builtin_return",
347		BT_FN_VOID_PTR)
348DEF_GCC_BUILTIN(BUILT_IN_SETJMP,
349		"__builtin_setjmp",
350		BT_FN_INT_PTR)
351DEF_GCC_BUILTIN(BUILT_IN_LONGJMP,
352		"__builtin_longjmp",
353		BT_FN_VOID_PTR_INT)
354DEF_GCC_BUILTIN(BUILT_IN_TRAP,
355		"__builtin_trap",
356		BT_FN_VOID)
357DEF_GCC_BUILTIN(BUILT_IN_PREFETCH,
358		"__builtin_prefetch",
359		BT_FN_VOID_CONST_PTR_VAR)
360
361/* Stdio builtins.  */
362DEF_FALLBACK_BUILTIN(BUILT_IN_PUTCHAR,
363		    "__builtin_putchar",
364		     BT_FN_INT_INT)
365DEF_FALLBACK_BUILTIN(BUILT_IN_PUTS,
366		     "__builtin_puts",
367		     BT_FN_INT_CONST_STRING)
368DEF_FRONT_END_LIB_BUILTIN(BUILT_IN_PRINTF,
369			  "__builtin_printf",
370			  BT_FN_INT_CONST_STRING_VAR)
371DEF_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.  */
378DEF_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)
384DEF_FALLBACK_BUILTIN(BUILT_IN_FWRITE,
385		     "__builtin_fwrite",
386		     BT_FN_SIZE_CONST_PTR_SIZE_SIZE_PTR)
387DEF_FRONT_END_LIB_BUILTIN(BUILT_IN_FPRINTF,
388			 "__builtin_fprintf",
389			 BT_FN_INT_PTR_CONST_STRING_VAR)
390
391/* Stdio unlocked builtins.  */
392
393DEF_EXT_FALLBACK_BUILTIN(BUILT_IN_PUTCHAR_UNLOCKED,
394			 "__builtin_putchar_unlocked",
395			 BT_FN_INT_INT)
396DEF_EXT_FALLBACK_BUILTIN(BUILT_IN_PUTS_UNLOCKED,
397			 "__builtin_puts_unlocked",
398			 BT_FN_INT_CONST_STRING)
399DEF_EXT_FRONT_END_LIB_BUILTIN(BUILT_IN_PRINTF_UNLOCKED,
400			      "__builtin_printf_unlocked",
401			      BT_FN_INT_CONST_STRING_VAR)
402DEF_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.  */
409DEF_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)
415DEF_EXT_FALLBACK_BUILTIN(BUILT_IN_FWRITE_UNLOCKED,
416			 "__builtin_fwrite_unlocked",
417			 BT_FN_SIZE_CONST_PTR_SIZE_SIZE_PTR)
418DEF_EXT_FRONT_END_LIB_BUILTIN(BUILT_IN_FPRINTF_UNLOCKED,
419			      "__builtin_fprintf_unlocked",
420			      BT_FN_INT_PTR_CONST_STRING_VAR)
421
422  /* ISO C99 floating point unordered comparisons.  */
423DEF_GCC_BUILTIN(BUILT_IN_ISGREATER, 
424		"__builtin_isgreater",
425		BT_FN_INT_VAR)
426DEF_GCC_BUILTIN(BUILT_IN_ISGREATEREQUAL,
427		"__builtin_isgreaterequal",
428		BT_FN_INT_VAR)
429DEF_GCC_BUILTIN(BUILT_IN_ISLESS,
430		"__builtin_isless",
431		BT_FN_INT_VAR)
432DEF_GCC_BUILTIN(BUILT_IN_ISLESSEQUAL,
433		"__builtin_islessequal",
434		BT_FN_INT_VAR)
435DEF_GCC_BUILTIN(BUILT_IN_ISLESSGREATER,
436		"__builtin_islessgreater",
437		BT_FN_INT_VAR)
438DEF_GCC_BUILTIN(BUILT_IN_ISUNORDERED,
439		"__builtin_isunordered",
440		BT_FN_INT_VAR)
441
442/* Various hooks for the DWARF 2 __throw routine.  */
443DEF_GCC_BUILTIN(BUILT_IN_UNWIND_INIT,
444		"__builtin_unwind_init",
445		BT_FN_VOID)
446DEF_GCC_BUILTIN(BUILT_IN_DWARF_CFA,
447		"__builtin_dwarf_cfa",
448		BT_FN_PTR)
449DEF_GCC_BUILTIN(BUILT_IN_DWARF_FP_REGNUM,
450		"__builtin_dwarf_fp_regnum",
451		BT_FN_UNSIGNED)
452DEF_GCC_BUILTIN(BUILT_IN_INIT_DWARF_REG_SIZES,
453		"__builtin_init_dwarf_reg_size_table",
454		BT_FN_VOID_PTR)
455DEF_GCC_BUILTIN(BUILT_IN_FROB_RETURN_ADDR,
456		"__builtin_frob_return_addr",
457		BT_FN_PTR_PTR)
458DEF_GCC_BUILTIN(BUILT_IN_EXTRACT_RETURN_ADDR,
459		"__builtin_extract_return_addr",
460		BT_FN_PTR_PTR)
461DEF_GCC_BUILTIN(BUILT_IN_EH_RETURN,
462		"__builtin_eh_return",
463		BT_FN_VOID_PTRMODE_PTR)
464DEF_GCC_BUILTIN(BUILT_IN_EH_RETURN_DATA_REGNO,
465		"__builtin_eh_return_data_regno",
466		BT_FN_INT_INT)
467
468DEF_GCC_BUILTIN(BUILT_IN_VARARGS_START,
469		"__builtin_varargs_start",
470		BT_FN_VOID_VALIST_REF)
471DEF_GCC_BUILTIN(BUILT_IN_STDARG_START,
472		"__builtin_stdarg_start",
473		BT_FN_VOID_VALIST_REF_VAR)
474DEF_GCC_BUILTIN(BUILT_IN_VA_END,
475		"__builtin_va_end",
476		BT_FN_VOID_VALIST_REF)
477DEF_GCC_BUILTIN(BUILT_IN_VA_COPY,
478		"__builtin_va_copy",
479		BT_FN_VOID_VALIST_REF_VALIST_ARG)
480DEF_GCC_BUILTIN(BUILT_IN_EXPECT,
481		"__builtin_expect",
482		BT_FN_LONG_LONG_LONG)
483
484/* C++ extensions */
485DEF_UNUSED_BUILTIN(BUILT_IN_NEW)
486DEF_UNUSED_BUILTIN(BUILT_IN_VEC_NEW)
487DEF_UNUSED_BUILTIN(BUILT_IN_DELETE)
488DEF_UNUSED_BUILTIN(BUILT_IN_VEC_DELETE)
489