OSDN Git Service

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