OSDN Git Service

* toplev.c (rest_of_compilation): Avoid cfg_cleanup calls when not
[pf3gnuchains/gcc-fork.git] / gcc / builtins.def
1 /* This file contains the definitions and documentation for the
2    builtins used in the GNU compiler.
3    Copyright (C) 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
4
5 This file is part of GCC.
6
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.
11
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.
16
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.  */
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, ATTRS, IMPLICIT)
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    ATTRs is an attribute list as defined in builtin-attrs.def that
56    describes the attributes of this builtin function.  
57
58    IMPLICIT specifies condition when the builtin can be produced by
59    compiler.  For instance C90 reserves floorf function, but does not
60    define it's meaning.  When user uses floorf we may assume that the
61    floorf has the meaning we expect, but we can't produce floorf by
62    simplifing floor((double)float) since runtime don't need to implement it.  */
63    
64 /* A GCC builtin (like __builtin_saveregs) is provided by the
65    compiler, but does not correspond to a function in the standard
66    library.  */
67 #undef DEF_GCC_BUILTIN
68 #define DEF_GCC_BUILTIN(ENUM, NAME, TYPE, ATTRS)                \
69   DEF_BUILTIN (ENUM, NAME, BUILT_IN_NORMAL, TYPE, BT_LAST,      \
70                false, false, false, ATTRS, true)
71
72
73 /* A fallback builtin is a builtin (like __builtin_puts) that falls
74    back to the corresopnding library function if necessary -- but
75    for which we should not introduce the non-`__builtin' variant of
76    the name.  */
77 #undef DEF_FALLBACK_BUILTIN                             
78 #define DEF_FALLBACK_BUILTIN(ENUM, NAME, TYPE, ATTRS)   \
79   DEF_BUILTIN (ENUM, NAME, BUILT_IN_NORMAL, TYPE, TYPE, \
80                false, true, false, ATTRS, true)
81
82 /* Like DEF_FALLBACK_BUILTIN, except that the function is not one that
83    is specified by ANSI/ISO C.  So, when we're being fully conformant
84    we ignore the version of these builtins that does not begin with
85    __builtin.  */
86 #undef DEF_EXT_FALLBACK_BUILTIN
87 #define DEF_EXT_FALLBACK_BUILTIN(ENUM, NAME, TYPE)      \
88   DEF_BUILTIN (ENUM, NAME, BUILT_IN_NORMAL, TYPE, TYPE, \
89                false, true, true, ATTR_NOTHROW_LIST, true)
90
91 /* A library builtin (like __builtin_strchr) is a builtin equivalent
92    of an ANSI/ISO standard library function.  In addition to the
93    `__builtin' version, we will create an ordinary version (e.g,
94    `strchr') as well.  If we cannot compute the answer using the
95    builtin function, we will fall back to the standard library
96    version.  */
97 #undef DEF_LIB_BUILTIN                                  
98 #define DEF_LIB_BUILTIN(ENUM, NAME, TYPE, ATTRS)        \
99   DEF_BUILTIN (ENUM, NAME, BUILT_IN_NORMAL, TYPE, TYPE, \
100                true, true, false, ATTRS, true)
101
102 /* Like DEF_LIB_BUILTIN, except that the function is not one that is
103    specified by ANSI/ISO C.  So, when we're being fully conformant we
104    ignore the version of these builtins that does not begin with
105    __builtin.  */
106 #undef DEF_EXT_LIB_BUILTIN                              
107 #define DEF_EXT_LIB_BUILTIN(ENUM, NAME, TYPE, ATTRS)    \
108   DEF_BUILTIN (ENUM, NAME, BUILT_IN_NORMAL, TYPE, TYPE, \
109                true, true, true, ATTRS, false)
110
111 /* Like DEF_LIB_BUILTIN, except that the function is only a part of
112    the standard in C99 or above.  */
113 #undef DEF_C99_BUILTIN                                  
114 #define DEF_C99_BUILTIN(ENUM, NAME, TYPE, ATTRS)        \
115   DEF_BUILTIN (ENUM, NAME, BUILT_IN_NORMAL, TYPE, TYPE, \
116                true, true, !flag_isoc99, ATTRS, TARGET_C99_FUNCTIONS)
117
118 /* Builtin that is specified by C99 and C90 reserve the name for future use.
119    We can still recognize the builtin in C90 mode but we can't produce it
120    implicitly.  */
121 #undef DEF_C99_C90RES_BUILTIN                                   
122 #define DEF_C99_C90RES_BUILTIN(ENUM, NAME, TYPE, ATTRS) \
123   DEF_BUILTIN (ENUM, NAME, BUILT_IN_NORMAL, TYPE, TYPE, \
124                true, true, !flag_isoc99, ATTRS, TARGET_C99_FUNCTIONS)
125
126 /* Like DEF_LIB_BUILTIN, except that the function is expanded in the
127    front-end.  */
128 #undef DEF_FRONT_END_LIB_BUILTIN                        
129 #define DEF_FRONT_END_LIB_BUILTIN(ENUM, NAME, TYPE, ATTRS)      \
130   DEF_BUILTIN (ENUM, NAME, BUILT_IN_FRONTEND, TYPE, TYPE,       \
131                true, true, false, ATTRS, true)
132
133 /* Like DEF_FRONT_END_LIB_BUILTIN, except that the function is not one
134    that is specified by ANSI/ISO C.  So, when we're being fully
135    conformant we ignore the version of these builtins that does not
136    begin with __builtin.  */
137 #undef DEF_EXT_FRONT_END_LIB_BUILTIN                    
138 #define DEF_EXT_FRONT_END_LIB_BUILTIN(ENUM, NAME, TYPE, ATTRS)  \
139   DEF_BUILTIN (ENUM, NAME, BUILT_IN_FRONTEND, TYPE, TYPE,       \
140                true, true, true, ATTRS, true)
141
142 /* If SMALL_STACK is defined, then `alloca' is only defined in its
143    `__builtin' form.  */
144 #if SMALL_STACK  
145 DEF_FALLBACK_BUILTIN(BUILT_IN_ALLOCA,
146                      "__builtin_alloca",
147                      BT_FN_PTR_SIZE,
148                      ATTR_MALLOC_NOTHROW_LIST)
149 #else
150 DEF_EXT_LIB_BUILTIN(BUILT_IN_ALLOCA,
151                     "__builtin_alloca",
152                     BT_FN_PTR_SIZE,
153                     ATTR_MALLOC_NOTHROW_LIST)
154 #endif
155
156 DEF_LIB_BUILTIN(BUILT_IN_ABS,
157                 "__builtin_abs",
158                 BT_FN_INT_INT,
159                 ATTR_CONST_NOTHROW_LIST)
160 DEF_LIB_BUILTIN(BUILT_IN_LABS,
161                 "__builtin_labs",
162                 BT_FN_LONG_LONG,
163                 ATTR_CONST_NOTHROW_LIST)
164
165 DEF_LIB_BUILTIN(BUILT_IN_FABS,
166                 "__builtin_fabs",
167                 BT_FN_DOUBLE_DOUBLE,
168                 ATTR_CONST_NOTHROW_LIST)
169 DEF_C99_C90RES_BUILTIN(BUILT_IN_FABSF,
170                        "__builtin_fabsf",
171                        BT_FN_FLOAT_FLOAT,
172                        ATTR_CONST_NOTHROW_LIST)
173 DEF_C99_C90RES_BUILTIN(BUILT_IN_FABSL,
174                        "__builtin_fabsl",
175                        BT_FN_LONG_DOUBLE_LONG_DOUBLE,
176                        ATTR_CONST_NOTHROW_LIST)
177
178 DEF_LIB_BUILTIN(BUILT_IN_FLOOR,
179                 "__builtin_floor",
180                 BT_FN_DOUBLE_DOUBLE,
181                 ATTR_CONST_NOTHROW_LIST)
182 DEF_C99_C90RES_BUILTIN(BUILT_IN_FLOORF,
183                        "__builtin_floorf",
184                        BT_FN_FLOAT_FLOAT,
185                        ATTR_CONST_NOTHROW_LIST)
186 DEF_C99_C90RES_BUILTIN(BUILT_IN_FLOORL,
187                        "__builtin_floorl",
188                        BT_FN_LONG_DOUBLE_LONG_DOUBLE,
189                        ATTR_CONST_NOTHROW_LIST)
190
191 DEF_LIB_BUILTIN(BUILT_IN_CEIL,
192                 "__builtin_ceil",
193                 BT_FN_DOUBLE_DOUBLE,
194                 ATTR_CONST_NOTHROW_LIST)
195 DEF_C99_C90RES_BUILTIN(BUILT_IN_CEILF,
196                        "__builtin_ceilf",
197                        BT_FN_FLOAT_FLOAT,
198                        ATTR_CONST_NOTHROW_LIST)
199 DEF_C99_C90RES_BUILTIN(BUILT_IN_CEILL,
200                        "__builtin_ceill",
201                        BT_FN_LONG_DOUBLE_LONG_DOUBLE,
202                        ATTR_CONST_NOTHROW_LIST)
203
204 DEF_C99_BUILTIN(BUILT_IN_ROUND,
205                 "__builtin_round",
206                 BT_FN_DOUBLE_DOUBLE,
207                 ATTR_CONST_NOTHROW_LIST)
208 DEF_C99_BUILTIN(BUILT_IN_ROUNDF,
209                 "__builtin_roundf",
210                 BT_FN_FLOAT_FLOAT,
211                 ATTR_CONST_NOTHROW_LIST)
212 DEF_C99_BUILTIN(BUILT_IN_ROUNDL,
213                 "__builtin_roundl",
214                 BT_FN_LONG_DOUBLE_LONG_DOUBLE,
215                 ATTR_CONST_NOTHROW_LIST)
216
217 DEF_C99_BUILTIN(BUILT_IN_TRUNC,
218                 "__builtin_trunc",
219                 BT_FN_DOUBLE_DOUBLE,
220                 ATTR_CONST_NOTHROW_LIST)
221 DEF_C99_BUILTIN(BUILT_IN_TRUNCF,
222                 "__builtin_truncf",
223                 BT_FN_FLOAT_FLOAT,
224                 ATTR_CONST_NOTHROW_LIST)
225 DEF_C99_BUILTIN(BUILT_IN_TRUNCL,
226                 "__builtin_truncl",
227                 BT_FN_LONG_DOUBLE_LONG_DOUBLE,
228                 ATTR_CONST_NOTHROW_LIST)
229
230 DEF_C99_BUILTIN(BUILT_IN_NEARBYINT,
231                 "__builtin_nearbyint",
232                 BT_FN_DOUBLE_DOUBLE,
233                 ATTR_CONST_NOTHROW_LIST)
234 DEF_C99_BUILTIN(BUILT_IN_NEARBYINTF,
235                 "__builtin_nearbyintf",
236                 BT_FN_FLOAT_FLOAT,
237                 ATTR_CONST_NOTHROW_LIST)
238 DEF_C99_BUILTIN(BUILT_IN_NEARBYINTL,
239                 "__builtin_nearbyintl",
240                 BT_FN_LONG_DOUBLE_LONG_DOUBLE,
241                 ATTR_CONST_NOTHROW_LIST)
242
243 DEF_C99_BUILTIN(BUILT_IN_LLABS,
244                 "__builtin_llabs",
245                 BT_FN_LONGLONG_LONGLONG,
246                 ATTR_CONST_NOTHROW_LIST)
247 DEF_C99_BUILTIN(BUILT_IN_IMAXABS,
248                 "__builtin_imaxabs",
249                 BT_FN_INTMAX_INTMAX,
250                 ATTR_CONST_NOTHROW_LIST)
251 DEF_C99_BUILTIN(BUILT_IN_CONJ,
252                 "__builtin_conj",
253                 BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE,
254                 ATTR_CONST_NOTHROW_LIST)
255 DEF_C99_BUILTIN(BUILT_IN_CONJF,
256                 "__builtin_conjf",
257                 BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT,
258                 ATTR_CONST_NOTHROW_LIST)
259 DEF_C99_BUILTIN(BUILT_IN_CONJL,
260                 "__builtin_conjl",
261                 BT_FN_COMPLEX_LONG_DOUBLE_COMPLEX_LONG_DOUBLE,
262                 ATTR_CONST_NOTHROW_LIST)
263 DEF_C99_BUILTIN(BUILT_IN_CREAL,
264                 "__builtin_creal",
265                 BT_FN_DOUBLE_COMPLEX_DOUBLE,
266                 ATTR_CONST_NOTHROW_LIST)
267 DEF_C99_BUILTIN(BUILT_IN_CREALF,
268                 "__builtin_crealf",
269                 BT_FN_FLOAT_COMPLEX_FLOAT,
270                 ATTR_CONST_NOTHROW_LIST)
271 DEF_C99_BUILTIN(BUILT_IN_CREALL,
272                 "__builtin_creall",
273                 BT_FN_LONG_DOUBLE_COMPLEX_LONG_DOUBLE,
274                 ATTR_CONST_NOTHROW_LIST)
275 DEF_C99_BUILTIN(BUILT_IN_CIMAG,
276                 "__builtin_cimag",
277                 BT_FN_DOUBLE_COMPLEX_DOUBLE,
278                 ATTR_CONST_NOTHROW_LIST)
279 DEF_C99_BUILTIN(BUILT_IN_CIMAGF,
280                 "__builtin_cimagf",
281                 BT_FN_FLOAT_COMPLEX_FLOAT,
282                 ATTR_CONST_NOTHROW_LIST)
283 DEF_C99_BUILTIN(BUILT_IN_CIMAGL,
284                 "__builtin_cimagl",
285                 BT_FN_LONG_DOUBLE_COMPLEX_LONG_DOUBLE,
286                 ATTR_CONST_NOTHROW_LIST)
287
288 /* The system prototypes for `bzero' and `bcmp' functions have many
289    variations, so don't specify parameters to avoid conflicts.  The
290    expand_* functions check the argument types anyway.  */
291 DEF_BUILTIN (BUILT_IN_BZERO,
292              "__builtin_bzero",
293              BUILT_IN_NORMAL,
294              BT_FN_VOID_PTR_SIZE, 
295              BT_FN_VOID_VAR,
296              true, true, true,
297              ATTR_NOTHROW_LIST, false)
298 DEF_BUILTIN (BUILT_IN_BCMP,
299              "__builtin_bcmp",
300              BUILT_IN_NORMAL,
301              BT_FN_INT_CONST_PTR_CONST_PTR_SIZE,
302              BT_FN_INT_VAR,
303              true, true, true,
304              ATTR_PURE_NOTHROW_LIST, false)
305
306 DEF_EXT_LIB_BUILTIN(BUILT_IN_FFS,
307                     "__builtin_ffs",
308                     BT_FN_INT_INT,
309                     ATTR_CONST_NOTHROW_LIST)
310 DEF_GCC_BUILTIN(BUILT_IN_CLZ,
311                     "__builtin_clz",
312                     BT_FN_INT_INT,
313                     ATTR_CONST_NOTHROW_LIST)
314 DEF_GCC_BUILTIN(BUILT_IN_CTZ,
315                     "__builtin_ctz",
316                     BT_FN_INT_INT,
317                     ATTR_CONST_NOTHROW_LIST)
318 DEF_GCC_BUILTIN(BUILT_IN_POPCOUNT,
319                     "__builtin_popcount",
320                     BT_FN_INT_INT,
321                     ATTR_CONST_NOTHROW_LIST)
322 DEF_GCC_BUILTIN(BUILT_IN_PARITY,
323                     "__builtin_parity",
324                     BT_FN_INT_INT,
325                     ATTR_CONST_NOTHROW_LIST)
326
327 DEF_GCC_BUILTIN(BUILT_IN_FFSL,
328                     "__builtin_ffsl",
329                     BT_FN_INT_LONG,
330                     ATTR_CONST_NOTHROW_LIST)
331 DEF_GCC_BUILTIN(BUILT_IN_CLZL,
332                     "__builtin_clzl",
333                     BT_FN_INT_LONG,
334                     ATTR_CONST_NOTHROW_LIST)
335 DEF_GCC_BUILTIN(BUILT_IN_CTZL,
336                     "__builtin_ctzl",
337                     BT_FN_INT_LONG,
338                     ATTR_CONST_NOTHROW_LIST)
339 DEF_GCC_BUILTIN(BUILT_IN_POPCOUNTL,
340                     "__builtin_popcountl",
341                     BT_FN_INT_LONG,
342                     ATTR_CONST_NOTHROW_LIST)
343 DEF_GCC_BUILTIN(BUILT_IN_PARITYL,
344                     "__builtin_parityl",
345                     BT_FN_INT_LONG,
346                     ATTR_CONST_NOTHROW_LIST)
347
348 DEF_EXT_LIB_BUILTIN(BUILT_IN_FFSLL,
349                     "__builtin_ffsll",
350                     BT_FN_INT_LONGLONG,
351                     ATTR_CONST_NOTHROW_LIST)
352 DEF_GCC_BUILTIN(BUILT_IN_CLZLL,
353                     "__builtin_clzll",
354                     BT_FN_INT_LONGLONG,
355                     ATTR_CONST_NOTHROW_LIST)
356 DEF_GCC_BUILTIN(BUILT_IN_CTZLL,
357                     "__builtin_ctzll",
358                     BT_FN_INT_LONGLONG,
359                     ATTR_CONST_NOTHROW_LIST)
360 DEF_GCC_BUILTIN(BUILT_IN_POPCOUNTLL,
361                     "__builtin_popcountll",
362                     BT_FN_INT_LONGLONG,
363                     ATTR_CONST_NOTHROW_LIST)
364 DEF_GCC_BUILTIN(BUILT_IN_PARITYLL,
365                     "__builtin_parityll",
366                     BT_FN_INT_LONGLONG,
367                     ATTR_CONST_NOTHROW_LIST)
368
369 DEF_EXT_LIB_BUILTIN(BUILT_IN_INDEX,
370                     "__builtin_index",
371                     BT_FN_STRING_CONST_STRING_INT,
372                     ATTR_PURE_NOTHROW_LIST)
373 DEF_EXT_LIB_BUILTIN(BUILT_IN_RINDEX,
374                     "__builtin_rindex",
375                     BT_FN_STRING_CONST_STRING_INT,
376                     ATTR_PURE_NOTHROW_LIST)
377
378 DEF_LIB_BUILTIN(BUILT_IN_MEMCPY,
379                 "__builtin_memcpy",
380                 BT_FN_PTR_PTR_CONST_PTR_SIZE,
381                 ATTR_NOTHROW_LIST)
382 DEF_LIB_BUILTIN(BUILT_IN_MEMCMP,
383                 "__builtin_memcmp",
384                 BT_FN_INT_CONST_PTR_CONST_PTR_SIZE,
385                 ATTR_PURE_NOTHROW_LIST)
386 DEF_LIB_BUILTIN(BUILT_IN_MEMSET,
387                 "__builtin_memset",
388                 BT_FN_PTR_PTR_INT_SIZE,
389                 ATTR_NOTHROW_LIST)
390
391 DEF_LIB_BUILTIN(BUILT_IN_STRCAT,
392                 "__builtin_strcat",
393                 BT_FN_STRING_STRING_CONST_STRING,
394                 ATTR_NOTHROW_LIST)
395 DEF_LIB_BUILTIN(BUILT_IN_STRNCAT,
396                 "__builtin_strncat",
397                 BT_FN_STRING_STRING_CONST_STRING_SIZE,
398                 ATTR_NOTHROW_LIST)
399 DEF_LIB_BUILTIN(BUILT_IN_STRCPY,
400                 "__builtin_strcpy",
401                 BT_FN_STRING_STRING_CONST_STRING,
402                 ATTR_NOTHROW_LIST)
403 DEF_LIB_BUILTIN(BUILT_IN_STRNCPY,
404                 "__builtin_strncpy",
405                 BT_FN_STRING_STRING_CONST_STRING_SIZE,
406                 ATTR_NOTHROW_LIST)
407 DEF_LIB_BUILTIN(BUILT_IN_STRCMP,
408                 "__builtin_strcmp",
409                 BT_FN_INT_CONST_STRING_CONST_STRING,
410                 ATTR_PURE_NOTHROW_LIST)
411 DEF_LIB_BUILTIN(BUILT_IN_STRNCMP,
412                 "__builtin_strncmp",
413                 BT_FN_INT_CONST_STRING_CONST_STRING_SIZE,
414                 ATTR_PURE_NOTHROW_LIST)
415 DEF_LIB_BUILTIN(BUILT_IN_STRLEN,
416                 "__builtin_strlen",
417                 BT_FN_SIZE_CONST_STRING,
418                 ATTR_PURE_NOTHROW_LIST)
419 DEF_LIB_BUILTIN(BUILT_IN_STRSTR,
420                 "__builtin_strstr",
421                 BT_FN_STRING_CONST_STRING_CONST_STRING,
422                 ATTR_PURE_NOTHROW_LIST)
423 DEF_LIB_BUILTIN(BUILT_IN_STRPBRK,
424                 "__builtin_strpbrk",
425                 BT_FN_STRING_CONST_STRING_CONST_STRING,
426                 ATTR_PURE_NOTHROW_LIST)
427 DEF_LIB_BUILTIN(BUILT_IN_STRSPN,
428                 "__builtin_strspn",
429                 BT_FN_SIZE_CONST_STRING_CONST_STRING,
430                 ATTR_PURE_NOTHROW_LIST)
431 DEF_LIB_BUILTIN(BUILT_IN_STRCSPN,
432                 "__builtin_strcspn",
433                 BT_FN_SIZE_CONST_STRING_CONST_STRING,
434                 ATTR_PURE_NOTHROW_LIST)
435 DEF_LIB_BUILTIN(BUILT_IN_STRCHR,
436                 "__builtin_strchr",
437                 BT_FN_STRING_CONST_STRING_INT,
438                 ATTR_PURE_NOTHROW_LIST)
439 DEF_LIB_BUILTIN(BUILT_IN_STRRCHR,
440                 "__builtin_strrchr",
441                 BT_FN_STRING_CONST_STRING_INT,
442                 ATTR_PURE_NOTHROW_LIST)
443
444 DEF_LIB_BUILTIN(BUILT_IN_SQRT,
445                 "__builtin_sqrt",
446                 BT_FN_DOUBLE_DOUBLE,
447                 flag_errno_math ? ATTR_NOTHROW_LIST
448                                 : (flag_unsafe_math_optimizations
449                                    ? ATTR_CONST_NOTHROW_LIST
450                                    : ATTR_PURE_NOTHROW_LIST))
451 DEF_LIB_BUILTIN(BUILT_IN_SIN,
452                 "__builtin_sin",
453                 BT_FN_DOUBLE_DOUBLE,
454                 flag_unsafe_math_optimizations ? ATTR_CONST_NOTHROW_LIST
455                                                : ATTR_PURE_NOTHROW_LIST)
456 DEF_LIB_BUILTIN(BUILT_IN_COS,
457                 "__builtin_cos",
458                 BT_FN_DOUBLE_DOUBLE,
459                 flag_unsafe_math_optimizations ? ATTR_CONST_NOTHROW_LIST
460                                                : ATTR_PURE_NOTHROW_LIST)
461 DEF_LIB_BUILTIN(BUILT_IN_EXP,
462                 "__builtin_exp",
463                 BT_FN_DOUBLE_DOUBLE,
464                 flag_errno_math ? ATTR_NOTHROW_LIST
465                                 : (flag_unsafe_math_optimizations
466                                    ? ATTR_CONST_NOTHROW_LIST
467                                    : ATTR_PURE_NOTHROW_LIST))
468 DEF_LIB_BUILTIN(BUILT_IN_LOG,
469                 "__builtin_log",
470                 BT_FN_DOUBLE_DOUBLE,
471                 flag_errno_math ? ATTR_NOTHROW_LIST
472                                 : (flag_unsafe_math_optimizations
473                                    ? ATTR_CONST_NOTHROW_LIST
474                                    : ATTR_PURE_NOTHROW_LIST))
475 DEF_LIB_BUILTIN(BUILT_IN_POW,
476                 "__builtin_pow",
477                 BT_FN_DOUBLE_DOUBLE_DOUBLE,
478                 flag_errno_math ? ATTR_NOTHROW_LIST
479                                 : (flag_unsafe_math_optimizations
480                                    ? ATTR_CONST_NOTHROW_LIST
481                                    : ATTR_PURE_NOTHROW_LIST))
482 DEF_LIB_BUILTIN(BUILT_IN_ATAN2,
483                 "__builtin_atan2",
484                 BT_FN_DOUBLE_DOUBLE_DOUBLE,
485                 flag_errno_math ? ATTR_NOTHROW_LIST
486                                 : (flag_unsafe_math_optimizations
487                                    ? ATTR_CONST_NOTHROW_LIST
488                                    : ATTR_PURE_NOTHROW_LIST))
489 DEF_LIB_BUILTIN(BUILT_IN_FMOD,
490                 "__builtin_fmod",
491                 BT_FN_DOUBLE_DOUBLE_DOUBLE,
492                 flag_errno_math ? ATTR_NOTHROW_LIST
493                                 : (flag_unsafe_math_optimizations
494                                    ? ATTR_CONST_NOTHROW_LIST
495                                    : ATTR_PURE_NOTHROW_LIST))
496 DEF_C99_C90RES_BUILTIN(BUILT_IN_SQRTF,
497                        "__builtin_sqrtf",
498                        BT_FN_FLOAT_FLOAT,
499                        flag_errno_math ? ATTR_NOTHROW_LIST
500                                        : (flag_unsafe_math_optimizations
501                                           ? ATTR_CONST_NOTHROW_LIST
502                                           : ATTR_PURE_NOTHROW_LIST))
503 DEF_C99_C90RES_BUILTIN(BUILT_IN_SINF,
504                        "__builtin_sinf",
505                        BT_FN_FLOAT_FLOAT,
506                        flag_unsafe_math_optimizations ? ATTR_CONST_NOTHROW_LIST
507                                                       : ATTR_PURE_NOTHROW_LIST)
508 DEF_C99_C90RES_BUILTIN(BUILT_IN_COSF,
509                        "__builtin_cosf",
510                        BT_FN_FLOAT_FLOAT,
511                        flag_unsafe_math_optimizations ? ATTR_CONST_NOTHROW_LIST
512                                                       : ATTR_PURE_NOTHROW_LIST)
513 DEF_C99_C90RES_BUILTIN(BUILT_IN_EXPF,
514                        "__builtin_expf",
515                        BT_FN_FLOAT_FLOAT,
516                        flag_errno_math ? ATTR_NOTHROW_LIST
517                                        : (flag_unsafe_math_optimizations
518                                           ? ATTR_CONST_NOTHROW_LIST
519                                           : ATTR_PURE_NOTHROW_LIST))
520 DEF_C99_C90RES_BUILTIN(BUILT_IN_LOGF,
521                        "__builtin_logf",
522                        BT_FN_FLOAT_FLOAT,
523                        flag_errno_math ? ATTR_NOTHROW_LIST
524                                        : (flag_unsafe_math_optimizations
525                                           ? ATTR_CONST_NOTHROW_LIST
526                                           : ATTR_PURE_NOTHROW_LIST))
527 DEF_C99_C90RES_BUILTIN(BUILT_IN_POWF,
528                        "__builtin_powf",
529                        BT_FN_FLOAT_FLOAT_FLOAT,
530                        flag_errno_math ? ATTR_NOTHROW_LIST
531                                        : (flag_unsafe_math_optimizations
532                                           ? ATTR_CONST_NOTHROW_LIST
533                                           : ATTR_PURE_NOTHROW_LIST))
534 DEF_C99_C90RES_BUILTIN(BUILT_IN_ATAN2F,
535                        "__builtin_atan2f",
536                        BT_FN_FLOAT_FLOAT_FLOAT,
537                        flag_errno_math ? ATTR_NOTHROW_LIST
538                                        : (flag_unsafe_math_optimizations
539                                           ? ATTR_CONST_NOTHROW_LIST
540                                           : ATTR_PURE_NOTHROW_LIST))
541 DEF_C99_C90RES_BUILTIN(BUILT_IN_FMODF,
542                        "__builtin_fmodf",
543                        BT_FN_FLOAT_FLOAT_FLOAT,
544                        flag_errno_math ? ATTR_NOTHROW_LIST
545                                        : (flag_unsafe_math_optimizations
546                                           ? ATTR_CONST_NOTHROW_LIST
547                                           : ATTR_PURE_NOTHROW_LIST))
548 DEF_C99_C90RES_BUILTIN(BUILT_IN_SQRTL,
549                        "__builtin_sqrtl",
550                        BT_FN_LONG_DOUBLE_LONG_DOUBLE,
551                        flag_errno_math ? ATTR_NOTHROW_LIST
552                                        : (flag_unsafe_math_optimizations
553                                           ? ATTR_CONST_NOTHROW_LIST
554                                           : ATTR_PURE_NOTHROW_LIST))
555 DEF_C99_C90RES_BUILTIN(BUILT_IN_SINL,
556                        "__builtin_sinl",
557                        BT_FN_LONG_DOUBLE_LONG_DOUBLE,
558                        flag_unsafe_math_optimizations ? ATTR_CONST_NOTHROW_LIST
559                                                       : ATTR_PURE_NOTHROW_LIST)
560 DEF_C99_C90RES_BUILTIN(BUILT_IN_COSL,
561                        "__builtin_cosl",
562                        BT_FN_LONG_DOUBLE_LONG_DOUBLE,
563                        flag_unsafe_math_optimizations ? ATTR_CONST_NOTHROW_LIST
564                                                       : ATTR_PURE_NOTHROW_LIST)
565 DEF_C99_C90RES_BUILTIN(BUILT_IN_EXPL,
566                        "__builtin_expl",
567                        BT_FN_LONG_DOUBLE_LONG_DOUBLE,
568                        flag_errno_math ? ATTR_NOTHROW_LIST
569                                        : (flag_unsafe_math_optimizations
570                                           ? ATTR_CONST_NOTHROW_LIST
571                                           : ATTR_PURE_NOTHROW_LIST))
572 DEF_C99_C90RES_BUILTIN(BUILT_IN_LOGL,
573                        "__builtin_logl",
574                        BT_FN_LONG_DOUBLE_LONG_DOUBLE,
575                        flag_errno_math ? ATTR_NOTHROW_LIST
576                                        : (flag_unsafe_math_optimizations
577                                           ? ATTR_CONST_NOTHROW_LIST
578                                           : ATTR_PURE_NOTHROW_LIST))
579 DEF_C99_C90RES_BUILTIN(BUILT_IN_POWL,
580                        "__builtin_powl",
581                        BT_FN_LONG_DOUBLE_LONG_DOUBLE_LONG_DOUBLE,
582                        flag_errno_math ? ATTR_NOTHROW_LIST
583                                        : (flag_unsafe_math_optimizations
584                                           ? ATTR_CONST_NOTHROW_LIST
585                                           : ATTR_PURE_NOTHROW_LIST))
586 DEF_C99_C90RES_BUILTIN(BUILT_IN_ATAN2L,
587                        "__builtin_atan2l",
588                        BT_FN_LONG_DOUBLE_LONG_DOUBLE_LONG_DOUBLE,
589                        flag_errno_math ? ATTR_NOTHROW_LIST
590                                        : (flag_unsafe_math_optimizations
591                                           ? ATTR_CONST_NOTHROW_LIST
592                                           : ATTR_PURE_NOTHROW_LIST))
593 DEF_C99_C90RES_BUILTIN(BUILT_IN_FMODL,
594                        "__builtin_fmodl",
595                        BT_FN_LONG_DOUBLE_LONG_DOUBLE_LONG_DOUBLE,
596                        flag_errno_math ? ATTR_NOTHROW_LIST
597                                        : (flag_unsafe_math_optimizations
598                                           ? ATTR_CONST_NOTHROW_LIST
599                                           : ATTR_PURE_NOTHROW_LIST))
600
601 DEF_GCC_BUILTIN(BUILT_IN_INF,
602                 "__builtin_inf",
603                 BT_FN_DOUBLE,
604                 ATTR_CONST_NOTHROW_LIST)
605 DEF_GCC_BUILTIN(BUILT_IN_INFF,
606                 "__builtin_inff",
607                 BT_FN_FLOAT,
608                 ATTR_CONST_NOTHROW_LIST)
609 DEF_GCC_BUILTIN(BUILT_IN_INFL,
610                 "__builtin_infl",
611                 BT_FN_LONG_DOUBLE,
612                 ATTR_CONST_NOTHROW_LIST)
613
614 DEF_GCC_BUILTIN(BUILT_IN_HUGE_VAL,
615                 "__builtin_huge_val",
616                 BT_FN_DOUBLE,
617                 ATTR_CONST_NOTHROW_LIST)
618 DEF_GCC_BUILTIN(BUILT_IN_HUGE_VALF,
619                 "__builtin_huge_valf",
620                 BT_FN_FLOAT,
621                 ATTR_CONST_NOTHROW_LIST)
622 DEF_GCC_BUILTIN(BUILT_IN_HUGE_VALL,
623                 "__builtin_huge_vall",
624                 BT_FN_LONG_DOUBLE,
625                 ATTR_CONST_NOTHROW_LIST)
626
627 DEF_LIB_BUILTIN(BUILT_IN_NAN,
628                 "__builtin_nan",
629                 BT_FN_DOUBLE_CONST_STRING,
630                 ATTR_CONST_NOTHROW_LIST)
631 DEF_LIB_BUILTIN(BUILT_IN_NANF,
632                 "__builtin_nanf",
633                 BT_FN_FLOAT_CONST_STRING,
634                 ATTR_CONST_NOTHROW_LIST)
635 DEF_LIB_BUILTIN(BUILT_IN_NANL,
636                 "__builtin_nanl",
637                 BT_FN_LONG_DOUBLE_CONST_STRING,
638                 ATTR_CONST_NOTHROW_LIST)
639
640 DEF_LIB_BUILTIN(BUILT_IN_NANS,
641                 "__builtin_nans",
642                 BT_FN_DOUBLE_CONST_STRING,
643                 ATTR_CONST_NOTHROW_LIST)
644 DEF_LIB_BUILTIN(BUILT_IN_NANSF,
645                 "__builtin_nansf",
646                 BT_FN_FLOAT_CONST_STRING,
647                 ATTR_CONST_NOTHROW_LIST)
648 DEF_LIB_BUILTIN(BUILT_IN_NANSL,
649                 "__builtin_nansl",
650                 BT_FN_LONG_DOUBLE_CONST_STRING,
651                 ATTR_CONST_NOTHROW_LIST)
652
653 DEF_GCC_BUILTIN(BUILT_IN_SAVEREGS,
654                 "__builtin_saveregs",
655                 BT_FN_PTR_VAR,
656                 ATTR_NULL)
657 DEF_GCC_BUILTIN(BUILT_IN_CLASSIFY_TYPE,
658                 "__builtin_classify_type",
659                 BT_FN_INT_VAR,
660                 ATTR_NULL)
661 DEF_GCC_BUILTIN(BUILT_IN_NEXT_ARG,
662                 "__builtin_next_arg",
663                 BT_FN_PTR_VAR,
664                 ATTR_NULL)
665 DEF_GCC_BUILTIN(BUILT_IN_ARGS_INFO,
666                 "__builtin_args_info",
667                 BT_FN_INT_INT,
668                 ATTR_NULL)
669 DEF_GCC_BUILTIN(BUILT_IN_CONSTANT_P, 
670                 "__builtin_constant_p", 
671                 BT_FN_INT_VAR,
672                 ATTR_NULL)
673 DEF_GCC_BUILTIN(BUILT_IN_FRAME_ADDRESS,
674                 "__builtin_frame_address",
675                 BT_FN_PTR_UNSIGNED,
676                 ATTR_NULL)
677 DEF_GCC_BUILTIN(BUILT_IN_RETURN_ADDRESS, 
678                 "__builtin_return_address",
679                 BT_FN_PTR_UNSIGNED,
680                 ATTR_NULL)
681 DEF_GCC_BUILTIN(BUILT_IN_AGGREGATE_INCOMING_ADDRESS,
682                 "__builtin_aggregate_incoming_address",
683                 BT_FN_PTR_VAR,
684                 ATTR_NULL)
685 DEF_GCC_BUILTIN(BUILT_IN_APPLY_ARGS,
686                 "__builtin_apply_args",
687                 BT_FN_PTR_VAR,
688                 ATTR_NULL)
689 DEF_GCC_BUILTIN(BUILT_IN_APPLY,
690                 "__builtin_apply",
691                 BT_FN_PTR_PTR_FN_VOID_VAR_PTR_SIZE,
692                 ATTR_NULL)
693 DEF_GCC_BUILTIN(BUILT_IN_RETURN,
694                 "__builtin_return",
695                 BT_FN_VOID_PTR,
696                 ATTR_NORETURN_NOTHROW_LIST)
697 DEF_GCC_BUILTIN(BUILT_IN_SETJMP,
698                 "__builtin_setjmp",
699                 BT_FN_INT_PTR,
700                 ATTR_NULL)
701 DEF_GCC_BUILTIN(BUILT_IN_LONGJMP,
702                 "__builtin_longjmp",
703                 BT_FN_VOID_PTR_INT,
704                 ATTR_NORETURN_NOTHROW_LIST)
705 DEF_GCC_BUILTIN(BUILT_IN_TRAP,
706                 "__builtin_trap",
707                 BT_FN_VOID,
708                 ATTR_NORETURN_NOTHROW_LIST)
709 DEF_GCC_BUILTIN(BUILT_IN_PREFETCH,
710                 "__builtin_prefetch",
711                 BT_FN_VOID_CONST_PTR_VAR,
712                 ATTR_NULL)
713
714 /* stdio.h builtins (without FILE *).  */
715
716 DEF_FRONT_END_LIB_BUILTIN(BUILT_IN_PRINTF,
717                           "__builtin_printf",
718                           BT_FN_INT_CONST_STRING_VAR,
719                           ATTR_FORMAT_PRINTF_1_2)
720 DEF_LIB_BUILTIN(BUILT_IN_PUTCHAR,
721                 "__builtin_putchar",
722                 BT_FN_INT_INT,
723                 ATTR_NOTHROW_LIST)
724 DEF_LIB_BUILTIN(BUILT_IN_PUTS,
725                 "__builtin_puts",
726                 BT_FN_INT_CONST_STRING,
727                 ATTR_NOTHROW_LIST)
728 DEF_C99_BUILTIN(BUILT_IN_SNPRINTF,
729                 "__builtin_snprintf",
730                 BT_FN_INT_STRING_SIZE_CONST_STRING_VAR,
731                 ATTR_FORMAT_PRINTF_3_4)
732 DEF_LIB_BUILTIN(BUILT_IN_SPRINTF,
733                 "__builtin_sprintf",
734                 BT_FN_INT_STRING_CONST_STRING_VAR,
735                 ATTR_FORMAT_PRINTF_2_3)
736 DEF_LIB_BUILTIN(BUILT_IN_SCANF,
737                 "__builtin_scanf",
738                 BT_FN_INT_CONST_STRING_VAR,
739                 ATTR_FORMAT_SCANF_1_2)
740 DEF_LIB_BUILTIN(BUILT_IN_SSCANF,
741                 "__builtin_sscanf",
742                 BT_FN_INT_CONST_STRING_CONST_STRING_VAR,
743                 ATTR_FORMAT_SCANF_2_3)
744 DEF_LIB_BUILTIN(BUILT_IN_VPRINTF,
745                 "__builtin_vprintf",
746                 BT_FN_INT_CONST_STRING_VALIST_ARG,
747                 ATTR_FORMAT_PRINTF_1_0)
748 DEF_C99_BUILTIN(BUILT_IN_VSCANF,
749                 "__builtin_vscanf",
750                 BT_FN_INT_CONST_STRING_VALIST_ARG,
751                 ATTR_FORMAT_SCANF_1_0)
752 DEF_C99_BUILTIN(BUILT_IN_VSSCANF,
753                 "__builtin_vsscanf",
754                 BT_FN_INT_CONST_STRING_CONST_STRING_VALIST_ARG,
755                 ATTR_FORMAT_SCANF_2_0)
756 DEF_C99_BUILTIN(BUILT_IN_VSNPRINTF,
757                 "__builtin_vsnprintf",
758                 BT_FN_INT_STRING_SIZE_CONST_STRING_VALIST_ARG,
759                 ATTR_FORMAT_PRINTF_3_0)
760 DEF_LIB_BUILTIN(BUILT_IN_VSPRINTF,
761                 "__builtin_vsprintf",
762                 BT_FN_INT_STRING_CONST_STRING_VALIST_ARG,
763                 ATTR_FORMAT_PRINTF_2_0)
764
765
766 /* stdio.h builtins (with FILE *).  */
767
768 /* Declare the __builtin_ style with arguments and the regular style
769    without them.  We rely on stdio.h to supply the arguments for the
770    regular style declaration since we had to use void* instead of
771    FILE* in the __builtin_ prototype supplied here.  */
772
773 DEF_FALLBACK_BUILTIN(BUILT_IN_FPUTC,
774                      "__builtin_fputc",
775                      BT_FN_INT_INT_PTR,
776                      ATTR_NOTHROW_LIST)
777 DEF_BUILTIN (BUILT_IN_FPUTS,
778              "__builtin_fputs",
779              BUILT_IN_NORMAL,
780              BT_FN_INT_CONST_STRING_PTR,
781              BT_FN_INT_VAR,
782              true, true, false, ATTR_NOTHROW_LIST, true)
783 DEF_FALLBACK_BUILTIN(BUILT_IN_FWRITE,
784                      "__builtin_fwrite",
785                      BT_FN_SIZE_CONST_PTR_SIZE_SIZE_PTR,
786                       ATTR_NOTHROW_LIST)
787 DEF_FRONT_END_LIB_BUILTIN(BUILT_IN_FPRINTF,
788                          "__builtin_fprintf",
789                          BT_FN_INT_PTR_CONST_STRING_VAR,
790                          ATTR_FORMAT_PRINTF_2_3)
791
792 /* stdio unlocked builtins (without FILE *).  */
793
794 DEF_EXT_FALLBACK_BUILTIN(BUILT_IN_PUTCHAR_UNLOCKED,
795                          "__builtin_putchar_unlocked",
796                          BT_FN_INT_INT)
797 DEF_EXT_FALLBACK_BUILTIN(BUILT_IN_PUTS_UNLOCKED,
798                          "__builtin_puts_unlocked",
799                          BT_FN_INT_CONST_STRING)
800 DEF_EXT_FRONT_END_LIB_BUILTIN(BUILT_IN_PRINTF_UNLOCKED,
801                               "__builtin_printf_unlocked",
802                               BT_FN_INT_CONST_STRING_VAR,
803                               ATTR_FORMAT_PRINTF_1_2)
804
805 /* stdio unlocked builtins (with FILE *).  */
806
807 /* Declare the __builtin_ style with arguments and the regular style
808    without them.  We rely on stdio.h to supply the arguments for the
809    regular style declaration since we had to use void* instead of
810    FILE* in the __builtin_ prototype supplied here.  */
811
812 DEF_EXT_FALLBACK_BUILTIN(BUILT_IN_FPUTC_UNLOCKED,
813                          "__builtin_fputc_unlocked",
814                          BT_FN_INT_INT_PTR)
815 DEF_BUILTIN (BUILT_IN_FPUTS_UNLOCKED,
816              "__builtin_fputs_unlocked",
817              BUILT_IN_NORMAL,
818              BT_FN_INT_CONST_STRING_PTR,
819              BT_FN_INT_VAR,
820              true, true, true, ATTR_NOTHROW_LIST, true)
821 DEF_EXT_FALLBACK_BUILTIN(BUILT_IN_FWRITE_UNLOCKED,
822                          "__builtin_fwrite_unlocked",
823                          BT_FN_SIZE_CONST_PTR_SIZE_SIZE_PTR)
824 DEF_EXT_FRONT_END_LIB_BUILTIN(BUILT_IN_FPRINTF_UNLOCKED,
825                               "__builtin_fprintf_unlocked",
826                               BT_FN_INT_PTR_CONST_STRING_VAR,
827                               ATTR_FORMAT_PRINTF_2_3)
828
829   /* ISO C99 floating point unordered comparisons.  */
830 DEF_GCC_BUILTIN(BUILT_IN_ISGREATER, 
831                 "__builtin_isgreater",
832                 BT_FN_INT_VAR,
833                 ATTR_CONST_NOTHROW_LIST)
834 DEF_GCC_BUILTIN(BUILT_IN_ISGREATEREQUAL,
835                 "__builtin_isgreaterequal",
836                 BT_FN_INT_VAR,
837                 ATTR_CONST_NOTHROW_LIST)
838 DEF_GCC_BUILTIN(BUILT_IN_ISLESS,
839                 "__builtin_isless",
840                 BT_FN_INT_VAR,
841                 ATTR_CONST_NOTHROW_LIST)
842 DEF_GCC_BUILTIN(BUILT_IN_ISLESSEQUAL,
843                 "__builtin_islessequal",
844                 BT_FN_INT_VAR,
845                 ATTR_CONST_NOTHROW_LIST)
846 DEF_GCC_BUILTIN(BUILT_IN_ISLESSGREATER,
847                 "__builtin_islessgreater",
848                 BT_FN_INT_VAR,
849                 ATTR_CONST_NOTHROW_LIST)
850 DEF_GCC_BUILTIN(BUILT_IN_ISUNORDERED,
851                 "__builtin_isunordered",
852                 BT_FN_INT_VAR,
853                 ATTR_CONST_NOTHROW_LIST)
854
855 /* Various hooks for the DWARF 2 __throw routine.  */
856 DEF_GCC_BUILTIN(BUILT_IN_UNWIND_INIT,
857                 "__builtin_unwind_init",
858                 BT_FN_VOID,
859                 ATTR_NULL)
860 DEF_GCC_BUILTIN(BUILT_IN_DWARF_CFA,
861                 "__builtin_dwarf_cfa",
862                 BT_FN_PTR,
863                 ATTR_NULL)
864 DEF_GCC_BUILTIN(BUILT_IN_DWARF_FP_REGNUM,
865                 "__builtin_dwarf_fp_regnum",
866                 BT_FN_UNSIGNED,
867                 ATTR_NULL)
868 DEF_GCC_BUILTIN(BUILT_IN_INIT_DWARF_REG_SIZES,
869                 "__builtin_init_dwarf_reg_size_table",
870                 BT_FN_VOID_PTR,
871                 ATTR_NULL)
872 DEF_GCC_BUILTIN(BUILT_IN_FROB_RETURN_ADDR,
873                 "__builtin_frob_return_addr",
874                 BT_FN_PTR_PTR,
875                 ATTR_NULL)
876 DEF_GCC_BUILTIN(BUILT_IN_EXTRACT_RETURN_ADDR,
877                 "__builtin_extract_return_addr",
878                 BT_FN_PTR_PTR,
879                 ATTR_NULL)
880 DEF_GCC_BUILTIN(BUILT_IN_EH_RETURN,
881                 "__builtin_eh_return",
882                 BT_FN_VOID_PTRMODE_PTR,
883                 ATTR_NORETURN_NOTHROW_LIST)
884 DEF_GCC_BUILTIN(BUILT_IN_EH_RETURN_DATA_REGNO,
885                 "__builtin_eh_return_data_regno",
886                 BT_FN_INT_INT,
887                 ATTR_NULL)
888
889 /* Variable argument list (stdarg.h) support */
890 DEF_GCC_BUILTIN(BUILT_IN_VA_START,
891                 "__builtin_va_start",
892                 BT_FN_VOID_VALIST_REF_VAR,
893                 ATTR_NULL)
894 DEF_GCC_BUILTIN(BUILT_IN_STDARG_START,          /* backward compat */
895                 "__builtin_stdarg_start",
896                 BT_FN_VOID_VALIST_REF_VAR,
897                 ATTR_NULL)
898 DEF_GCC_BUILTIN(BUILT_IN_VA_END,
899                 "__builtin_va_end",
900                 BT_FN_VOID_VALIST_REF,
901                 ATTR_NULL)
902 DEF_GCC_BUILTIN(BUILT_IN_VA_COPY,
903                 "__builtin_va_copy",
904                 BT_FN_VOID_VALIST_REF_VALIST_ARG,
905                 ATTR_NULL)
906
907 DEF_GCC_BUILTIN(BUILT_IN_EXPECT,
908                 "__builtin_expect",
909                 BT_FN_LONG_LONG_LONG,
910                 ATTR_NULL)
911
912 /* Declare abort, exit, _exit and _Exit */
913 DEF_LIB_BUILTIN(BUILT_IN_ABORT,
914                  "__builtin_abort",
915                 BT_FN_VOID,
916                 ATTR_NORETURN_NOTHROW_LIST)
917 DEF_LIB_BUILTIN(BUILT_IN_EXIT,
918                 "__builtin_exit",
919                 BT_FN_VOID_INT,
920                 ATTR_NORETURN_NOTHROW_LIST)
921 DEF_EXT_LIB_BUILTIN(BUILT_IN__EXIT,
922                     "__builtin__exit",
923                     BT_FN_VOID_INT,
924                     ATTR_NORETURN_NOTHROW_LIST)
925 DEF_C99_BUILTIN(BUILT_IN__EXIT2,
926                 "__builtin__Exit",
927                 BT_FN_VOID_INT,
928                 ATTR_NORETURN_NOTHROW_LIST)
929