builtins.def (DEF_FALLBACK_BUILTIN): Delete.
[platform/upstream/gcc.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 /* A library builtin (like __builtin_strchr) is a builtin equivalent
74    of an ANSI/ISO standard library function.  In addition to the
75    `__builtin' version, we will create an ordinary version (e.g,
76    `strchr') as well.  If we cannot compute the answer using the
77    builtin function, we will fall back to the standard library
78    version.  */
79 #undef DEF_LIB_BUILTIN                                  
80 #define DEF_LIB_BUILTIN(ENUM, NAME, TYPE, ATTRS)        \
81   DEF_BUILTIN (ENUM, NAME, BUILT_IN_NORMAL, TYPE, TYPE, \
82                true, true, false, ATTRS, true)
83
84 /* Like DEF_LIB_BUILTIN, except that the function is not one that is
85    specified by ANSI/ISO C.  So, when we're being fully conformant we
86    ignore the version of these builtins that does not begin with
87    __builtin.  */
88 #undef DEF_EXT_LIB_BUILTIN                              
89 #define DEF_EXT_LIB_BUILTIN(ENUM, NAME, TYPE, ATTRS)    \
90   DEF_BUILTIN (ENUM, NAME, BUILT_IN_NORMAL, TYPE, TYPE, \
91                true, true, true, ATTRS, false)
92
93 /* Like DEF_LIB_BUILTIN, except that the function is only a part of
94    the standard in C99 or above.  */
95 #undef DEF_C99_BUILTIN                                  
96 #define DEF_C99_BUILTIN(ENUM, NAME, TYPE, ATTRS)        \
97   DEF_BUILTIN (ENUM, NAME, BUILT_IN_NORMAL, TYPE, TYPE, \
98                true, true, !flag_isoc99, ATTRS, TARGET_C99_FUNCTIONS)
99
100 /* Builtin that is specified by C99 and C90 reserve the name for future use.
101    We can still recognize the builtin in C90 mode but we can't produce it
102    implicitly.  */
103 #undef DEF_C99_C90RES_BUILTIN                                   
104 #define DEF_C99_C90RES_BUILTIN(ENUM, NAME, TYPE, ATTRS) \
105   DEF_BUILTIN (ENUM, NAME, BUILT_IN_NORMAL, TYPE, TYPE, \
106                true, true, !flag_isoc99, ATTRS, TARGET_C99_FUNCTIONS)
107
108
109 DEF_EXT_LIB_BUILTIN(BUILT_IN_ALLOCA,
110                     "__builtin_alloca",
111                     BT_FN_PTR_SIZE,
112                     ATTR_MALLOC_NOTHROW_LIST)
113
114 DEF_LIB_BUILTIN(BUILT_IN_ABS,
115                 "__builtin_abs",
116                 BT_FN_INT_INT,
117                 ATTR_CONST_NOTHROW_LIST)
118 DEF_LIB_BUILTIN(BUILT_IN_LABS,
119                 "__builtin_labs",
120                 BT_FN_LONG_LONG,
121                 ATTR_CONST_NOTHROW_LIST)
122
123 DEF_LIB_BUILTIN(BUILT_IN_FABS,
124                 "__builtin_fabs",
125                 BT_FN_DOUBLE_DOUBLE,
126                 ATTR_CONST_NOTHROW_LIST)
127 DEF_C99_C90RES_BUILTIN(BUILT_IN_FABSF,
128                        "__builtin_fabsf",
129                        BT_FN_FLOAT_FLOAT,
130                        ATTR_CONST_NOTHROW_LIST)
131 DEF_C99_C90RES_BUILTIN(BUILT_IN_FABSL,
132                        "__builtin_fabsl",
133                        BT_FN_LONG_DOUBLE_LONG_DOUBLE,
134                        ATTR_CONST_NOTHROW_LIST)
135
136 DEF_LIB_BUILTIN(BUILT_IN_FLOOR,
137                 "__builtin_floor",
138                 BT_FN_DOUBLE_DOUBLE,
139                 ATTR_CONST_NOTHROW_LIST)
140 DEF_C99_C90RES_BUILTIN(BUILT_IN_FLOORF,
141                        "__builtin_floorf",
142                        BT_FN_FLOAT_FLOAT,
143                        ATTR_CONST_NOTHROW_LIST)
144 DEF_C99_C90RES_BUILTIN(BUILT_IN_FLOORL,
145                        "__builtin_floorl",
146                        BT_FN_LONG_DOUBLE_LONG_DOUBLE,
147                        ATTR_CONST_NOTHROW_LIST)
148
149 DEF_LIB_BUILTIN(BUILT_IN_CEIL,
150                 "__builtin_ceil",
151                 BT_FN_DOUBLE_DOUBLE,
152                 ATTR_CONST_NOTHROW_LIST)
153 DEF_C99_C90RES_BUILTIN(BUILT_IN_CEILF,
154                        "__builtin_ceilf",
155                        BT_FN_FLOAT_FLOAT,
156                        ATTR_CONST_NOTHROW_LIST)
157 DEF_C99_C90RES_BUILTIN(BUILT_IN_CEILL,
158                        "__builtin_ceill",
159                        BT_FN_LONG_DOUBLE_LONG_DOUBLE,
160                        ATTR_CONST_NOTHROW_LIST)
161
162 DEF_C99_BUILTIN(BUILT_IN_ROUND,
163                 "__builtin_round",
164                 BT_FN_DOUBLE_DOUBLE,
165                 ATTR_CONST_NOTHROW_LIST)
166 DEF_C99_BUILTIN(BUILT_IN_ROUNDF,
167                 "__builtin_roundf",
168                 BT_FN_FLOAT_FLOAT,
169                 ATTR_CONST_NOTHROW_LIST)
170 DEF_C99_BUILTIN(BUILT_IN_ROUNDL,
171                 "__builtin_roundl",
172                 BT_FN_LONG_DOUBLE_LONG_DOUBLE,
173                 ATTR_CONST_NOTHROW_LIST)
174
175 DEF_C99_BUILTIN(BUILT_IN_TRUNC,
176                 "__builtin_trunc",
177                 BT_FN_DOUBLE_DOUBLE,
178                 ATTR_CONST_NOTHROW_LIST)
179 DEF_C99_BUILTIN(BUILT_IN_TRUNCF,
180                 "__builtin_truncf",
181                 BT_FN_FLOAT_FLOAT,
182                 ATTR_CONST_NOTHROW_LIST)
183 DEF_C99_BUILTIN(BUILT_IN_TRUNCL,
184                 "__builtin_truncl",
185                 BT_FN_LONG_DOUBLE_LONG_DOUBLE,
186                 ATTR_CONST_NOTHROW_LIST)
187
188 DEF_C99_BUILTIN(BUILT_IN_NEARBYINT,
189                 "__builtin_nearbyint",
190                 BT_FN_DOUBLE_DOUBLE,
191                 ATTR_CONST_NOTHROW_LIST)
192 DEF_C99_BUILTIN(BUILT_IN_NEARBYINTF,
193                 "__builtin_nearbyintf",
194                 BT_FN_FLOAT_FLOAT,
195                 ATTR_CONST_NOTHROW_LIST)
196 DEF_C99_BUILTIN(BUILT_IN_NEARBYINTL,
197                 "__builtin_nearbyintl",
198                 BT_FN_LONG_DOUBLE_LONG_DOUBLE,
199                 ATTR_CONST_NOTHROW_LIST)
200
201 DEF_C99_BUILTIN(BUILT_IN_LLABS,
202                 "__builtin_llabs",
203                 BT_FN_LONGLONG_LONGLONG,
204                 ATTR_CONST_NOTHROW_LIST)
205 DEF_C99_BUILTIN(BUILT_IN_IMAXABS,
206                 "__builtin_imaxabs",
207                 BT_FN_INTMAX_INTMAX,
208                 ATTR_CONST_NOTHROW_LIST)
209 DEF_C99_BUILTIN(BUILT_IN_CONJ,
210                 "__builtin_conj",
211                 BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE,
212                 ATTR_CONST_NOTHROW_LIST)
213 DEF_C99_BUILTIN(BUILT_IN_CONJF,
214                 "__builtin_conjf",
215                 BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT,
216                 ATTR_CONST_NOTHROW_LIST)
217 DEF_C99_BUILTIN(BUILT_IN_CONJL,
218                 "__builtin_conjl",
219                 BT_FN_COMPLEX_LONG_DOUBLE_COMPLEX_LONG_DOUBLE,
220                 ATTR_CONST_NOTHROW_LIST)
221 DEF_C99_BUILTIN(BUILT_IN_CREAL,
222                 "__builtin_creal",
223                 BT_FN_DOUBLE_COMPLEX_DOUBLE,
224                 ATTR_CONST_NOTHROW_LIST)
225 DEF_C99_BUILTIN(BUILT_IN_CREALF,
226                 "__builtin_crealf",
227                 BT_FN_FLOAT_COMPLEX_FLOAT,
228                 ATTR_CONST_NOTHROW_LIST)
229 DEF_C99_BUILTIN(BUILT_IN_CREALL,
230                 "__builtin_creall",
231                 BT_FN_LONG_DOUBLE_COMPLEX_LONG_DOUBLE,
232                 ATTR_CONST_NOTHROW_LIST)
233 DEF_C99_BUILTIN(BUILT_IN_CIMAG,
234                 "__builtin_cimag",
235                 BT_FN_DOUBLE_COMPLEX_DOUBLE,
236                 ATTR_CONST_NOTHROW_LIST)
237 DEF_C99_BUILTIN(BUILT_IN_CIMAGF,
238                 "__builtin_cimagf",
239                 BT_FN_FLOAT_COMPLEX_FLOAT,
240                 ATTR_CONST_NOTHROW_LIST)
241 DEF_C99_BUILTIN(BUILT_IN_CIMAGL,
242                 "__builtin_cimagl",
243                 BT_FN_LONG_DOUBLE_COMPLEX_LONG_DOUBLE,
244                 ATTR_CONST_NOTHROW_LIST)
245 DEF_C99_BUILTIN(BUILT_IN_CABS,
246                 "__builtin_cabs",
247                 BT_FN_DOUBLE_COMPLEX_DOUBLE,
248                 ATTR_CONST_NOTHROW_LIST)
249 DEF_C99_BUILTIN(BUILT_IN_CABSF,
250                 "__builtin_cabsf",
251                 BT_FN_FLOAT_COMPLEX_FLOAT,
252                 ATTR_CONST_NOTHROW_LIST)
253 DEF_C99_BUILTIN(BUILT_IN_CABSL,
254                 "__builtin_cabsl",
255                 BT_FN_LONG_DOUBLE_COMPLEX_LONG_DOUBLE,
256                 ATTR_CONST_NOTHROW_LIST)
257
258 /* These functions have traditionally accepted NULL pointers when the
259    length parameter is zero, so don't apply attribute "nonnull".  */
260 DEF_EXT_LIB_BUILTIN(BUILT_IN_BZERO,
261                     "__builtin_bzero",
262                     BT_FN_VOID_PTR_SIZE, 
263                     ATTR_NOTHROW_LIST)
264 DEF_EXT_LIB_BUILTIN(BUILT_IN_BCOPY,
265                     "__builtin_bcopy",
266                     BT_FN_VOID_CONST_PTR_PTR_SIZE, 
267                     ATTR_NOTHROW_LIST)
268 DEF_EXT_LIB_BUILTIN(BUILT_IN_BCMP,
269                     "__builtin_bcmp",
270                     BT_FN_INT_CONST_PTR_CONST_PTR_SIZE,
271                     ATTR_PURE_NOTHROW_LIST)
272
273 DEF_EXT_LIB_BUILTIN(BUILT_IN_FFS,
274                     "__builtin_ffs",
275                     BT_FN_INT_INT,
276                     ATTR_CONST_NOTHROW_LIST)
277 DEF_GCC_BUILTIN(BUILT_IN_CLZ,
278                     "__builtin_clz",
279                     BT_FN_INT_INT,
280                     ATTR_CONST_NOTHROW_LIST)
281 DEF_GCC_BUILTIN(BUILT_IN_CTZ,
282                     "__builtin_ctz",
283                     BT_FN_INT_INT,
284                     ATTR_CONST_NOTHROW_LIST)
285 DEF_GCC_BUILTIN(BUILT_IN_POPCOUNT,
286                     "__builtin_popcount",
287                     BT_FN_INT_INT,
288                     ATTR_CONST_NOTHROW_LIST)
289 DEF_GCC_BUILTIN(BUILT_IN_PARITY,
290                     "__builtin_parity",
291                     BT_FN_INT_INT,
292                     ATTR_CONST_NOTHROW_LIST)
293
294 DEF_GCC_BUILTIN(BUILT_IN_FFSL,
295                     "__builtin_ffsl",
296                     BT_FN_INT_LONG,
297                     ATTR_CONST_NOTHROW_LIST)
298 DEF_GCC_BUILTIN(BUILT_IN_CLZL,
299                     "__builtin_clzl",
300                     BT_FN_INT_LONG,
301                     ATTR_CONST_NOTHROW_LIST)
302 DEF_GCC_BUILTIN(BUILT_IN_CTZL,
303                     "__builtin_ctzl",
304                     BT_FN_INT_LONG,
305                     ATTR_CONST_NOTHROW_LIST)
306 DEF_GCC_BUILTIN(BUILT_IN_POPCOUNTL,
307                     "__builtin_popcountl",
308                     BT_FN_INT_LONG,
309                     ATTR_CONST_NOTHROW_LIST)
310 DEF_GCC_BUILTIN(BUILT_IN_PARITYL,
311                     "__builtin_parityl",
312                     BT_FN_INT_LONG,
313                     ATTR_CONST_NOTHROW_LIST)
314
315 DEF_EXT_LIB_BUILTIN(BUILT_IN_FFSLL,
316                     "__builtin_ffsll",
317                     BT_FN_INT_LONGLONG,
318                     ATTR_CONST_NOTHROW_LIST)
319 DEF_GCC_BUILTIN(BUILT_IN_CLZLL,
320                     "__builtin_clzll",
321                     BT_FN_INT_LONGLONG,
322                     ATTR_CONST_NOTHROW_LIST)
323 DEF_GCC_BUILTIN(BUILT_IN_CTZLL,
324                     "__builtin_ctzll",
325                     BT_FN_INT_LONGLONG,
326                     ATTR_CONST_NOTHROW_LIST)
327 DEF_GCC_BUILTIN(BUILT_IN_POPCOUNTLL,
328                     "__builtin_popcountll",
329                     BT_FN_INT_LONGLONG,
330                     ATTR_CONST_NOTHROW_LIST)
331 DEF_GCC_BUILTIN(BUILT_IN_PARITYLL,
332                     "__builtin_parityll",
333                     BT_FN_INT_LONGLONG,
334                     ATTR_CONST_NOTHROW_LIST)
335
336 DEF_EXT_LIB_BUILTIN(BUILT_IN_INDEX,
337                     "__builtin_index",
338                     BT_FN_STRING_CONST_STRING_INT,
339                     ATTR_PURE_NOTHROW_NONNULL_1)
340 DEF_EXT_LIB_BUILTIN(BUILT_IN_RINDEX,
341                     "__builtin_rindex",
342                     BT_FN_STRING_CONST_STRING_INT,
343                     ATTR_PURE_NOTHROW_NONNULL_1)
344
345 DEF_LIB_BUILTIN(BUILT_IN_MEMCPY,
346                 "__builtin_memcpy",
347                 BT_FN_PTR_PTR_CONST_PTR_SIZE,
348                 ATTR_NOTHROW_NONNULL_1_2)
349 DEF_LIB_BUILTIN(BUILT_IN_MEMMOVE,
350                 "__builtin_memmove",
351                 BT_FN_PTR_PTR_CONST_PTR_SIZE,
352                 ATTR_NOTHROW_NONNULL_1_2)
353 DEF_LIB_BUILTIN(BUILT_IN_MEMCMP,
354                 "__builtin_memcmp",
355                 BT_FN_INT_CONST_PTR_CONST_PTR_SIZE,
356                 ATTR_PURE_NOTHROW_NONNULL_1_2)
357 DEF_LIB_BUILTIN(BUILT_IN_MEMSET,
358                 "__builtin_memset",
359                 BT_FN_PTR_PTR_INT_SIZE,
360                 ATTR_NOTHROW_NONNULL_1)
361 DEF_EXT_LIB_BUILTIN(BUILT_IN_MEMPCPY,
362                 "__builtin_mempcpy",
363                 BT_FN_PTR_PTR_CONST_PTR_SIZE,
364                 ATTR_NOTHROW_NONNULL_1_2)
365
366 DEF_LIB_BUILTIN(BUILT_IN_STRCAT,
367                 "__builtin_strcat",
368                 BT_FN_STRING_STRING_CONST_STRING,
369                 ATTR_NOTHROW_NONNULL_1_2)
370 DEF_LIB_BUILTIN(BUILT_IN_STRNCAT,
371                 "__builtin_strncat",
372                 BT_FN_STRING_STRING_CONST_STRING_SIZE,
373                 ATTR_NOTHROW_NONNULL_1_2)
374 DEF_EXT_LIB_BUILTIN(BUILT_IN_STPCPY,
375                 "__builtin_stpcpy",
376                 BT_FN_STRING_STRING_CONST_STRING,
377                 ATTR_NOTHROW_NONNULL_1_2)
378 DEF_LIB_BUILTIN(BUILT_IN_STRCPY,
379                 "__builtin_strcpy",
380                 BT_FN_STRING_STRING_CONST_STRING,
381                 ATTR_NOTHROW_NONNULL_1_2)
382 DEF_LIB_BUILTIN(BUILT_IN_STRNCPY,
383                 "__builtin_strncpy",
384                 BT_FN_STRING_STRING_CONST_STRING_SIZE,
385                 ATTR_NOTHROW_NONNULL_1_2)
386 DEF_LIB_BUILTIN(BUILT_IN_STRCMP,
387                 "__builtin_strcmp",
388                 BT_FN_INT_CONST_STRING_CONST_STRING,
389                 ATTR_PURE_NOTHROW_NONNULL_1_2)
390 DEF_LIB_BUILTIN(BUILT_IN_STRNCMP,
391                 "__builtin_strncmp",
392                 BT_FN_INT_CONST_STRING_CONST_STRING_SIZE,
393                 ATTR_PURE_NOTHROW_NONNULL_1_2)
394 DEF_LIB_BUILTIN(BUILT_IN_STRLEN,
395                 "__builtin_strlen",
396                 BT_FN_SIZE_CONST_STRING,
397                 ATTR_PURE_NOTHROW_NONNULL_1)
398 DEF_LIB_BUILTIN(BUILT_IN_STRSTR,
399                 "__builtin_strstr",
400                 BT_FN_STRING_CONST_STRING_CONST_STRING,
401                 ATTR_PURE_NOTHROW_NONNULL_1_2)
402 DEF_LIB_BUILTIN(BUILT_IN_STRPBRK,
403                 "__builtin_strpbrk",
404                 BT_FN_STRING_CONST_STRING_CONST_STRING,
405                 ATTR_PURE_NOTHROW_NONNULL_1_2)
406 DEF_LIB_BUILTIN(BUILT_IN_STRSPN,
407                 "__builtin_strspn",
408                 BT_FN_SIZE_CONST_STRING_CONST_STRING,
409                 ATTR_PURE_NOTHROW_NONNULL_1_2)
410 DEF_LIB_BUILTIN(BUILT_IN_STRCSPN,
411                 "__builtin_strcspn",
412                 BT_FN_SIZE_CONST_STRING_CONST_STRING,
413                 ATTR_PURE_NOTHROW_NONNULL_1_2)
414 DEF_LIB_BUILTIN(BUILT_IN_STRCHR,
415                 "__builtin_strchr",
416                 BT_FN_STRING_CONST_STRING_INT,
417                 ATTR_PURE_NOTHROW_NONNULL_1)
418 DEF_LIB_BUILTIN(BUILT_IN_STRRCHR,
419                 "__builtin_strrchr",
420                 BT_FN_STRING_CONST_STRING_INT,
421                 ATTR_PURE_NOTHROW_NONNULL_1)
422
423 DEF_LIB_BUILTIN(BUILT_IN_SQRT,
424                 "__builtin_sqrt",
425                 BT_FN_DOUBLE_DOUBLE,
426                 flag_errno_math ? ATTR_NOTHROW_LIST
427                                 : (flag_unsafe_math_optimizations
428                                    ? ATTR_CONST_NOTHROW_LIST
429                                    : ATTR_PURE_NOTHROW_LIST))
430 DEF_LIB_BUILTIN(BUILT_IN_SIN,
431                 "__builtin_sin",
432                 BT_FN_DOUBLE_DOUBLE,
433                 flag_unsafe_math_optimizations ? ATTR_CONST_NOTHROW_LIST
434                                                : ATTR_PURE_NOTHROW_LIST)
435 DEF_LIB_BUILTIN(BUILT_IN_COS,
436                 "__builtin_cos",
437                 BT_FN_DOUBLE_DOUBLE,
438                 flag_unsafe_math_optimizations ? ATTR_CONST_NOTHROW_LIST
439                                                : ATTR_PURE_NOTHROW_LIST)
440 DEF_LIB_BUILTIN(BUILT_IN_EXP,
441                 "__builtin_exp",
442                 BT_FN_DOUBLE_DOUBLE,
443                 flag_errno_math ? ATTR_NOTHROW_LIST
444                                 : (flag_unsafe_math_optimizations
445                                    ? ATTR_CONST_NOTHROW_LIST
446                                    : ATTR_PURE_NOTHROW_LIST))
447 DEF_LIB_BUILTIN(BUILT_IN_LOG,
448                 "__builtin_log",
449                 BT_FN_DOUBLE_DOUBLE,
450                 flag_errno_math ? ATTR_NOTHROW_LIST
451                                 : (flag_unsafe_math_optimizations
452                                    ? ATTR_CONST_NOTHROW_LIST
453                                    : ATTR_PURE_NOTHROW_LIST))
454 DEF_LIB_BUILTIN(BUILT_IN_TAN,
455                 "__builtin_tan",
456                 BT_FN_DOUBLE_DOUBLE,
457                 flag_unsafe_math_optimizations ? ATTR_CONST_NOTHROW_LIST
458                                                : ATTR_PURE_NOTHROW_LIST)
459 DEF_LIB_BUILTIN(BUILT_IN_ATAN,
460                 "__builtin_atan",
461                 BT_FN_DOUBLE_DOUBLE,
462                 flag_unsafe_math_optimizations ? ATTR_CONST_NOTHROW_LIST
463                                                : ATTR_PURE_NOTHROW_LIST)
464 DEF_LIB_BUILTIN(BUILT_IN_POW,
465                 "__builtin_pow",
466                 BT_FN_DOUBLE_DOUBLE_DOUBLE,
467                 flag_errno_math ? ATTR_NOTHROW_LIST
468                                 : (flag_unsafe_math_optimizations
469                                    ? ATTR_CONST_NOTHROW_LIST
470                                    : ATTR_PURE_NOTHROW_LIST))
471 DEF_LIB_BUILTIN(BUILT_IN_ATAN2,
472                 "__builtin_atan2",
473                 BT_FN_DOUBLE_DOUBLE_DOUBLE,
474                 flag_errno_math ? ATTR_NOTHROW_LIST
475                                 : (flag_unsafe_math_optimizations
476                                    ? ATTR_CONST_NOTHROW_LIST
477                                    : ATTR_PURE_NOTHROW_LIST))
478 DEF_LIB_BUILTIN(BUILT_IN_FMOD,
479                 "__builtin_fmod",
480                 BT_FN_DOUBLE_DOUBLE_DOUBLE,
481                 flag_errno_math ? ATTR_NOTHROW_LIST
482                                 : (flag_unsafe_math_optimizations
483                                    ? ATTR_CONST_NOTHROW_LIST
484                                    : ATTR_PURE_NOTHROW_LIST))
485 DEF_C99_C90RES_BUILTIN(BUILT_IN_SQRTF,
486                        "__builtin_sqrtf",
487                        BT_FN_FLOAT_FLOAT,
488                        flag_errno_math ? ATTR_NOTHROW_LIST
489                                        : (flag_unsafe_math_optimizations
490                                           ? ATTR_CONST_NOTHROW_LIST
491                                           : ATTR_PURE_NOTHROW_LIST))
492 DEF_C99_C90RES_BUILTIN(BUILT_IN_SINF,
493                        "__builtin_sinf",
494                        BT_FN_FLOAT_FLOAT,
495                        flag_unsafe_math_optimizations ? ATTR_CONST_NOTHROW_LIST
496                                                       : ATTR_PURE_NOTHROW_LIST)
497 DEF_C99_C90RES_BUILTIN(BUILT_IN_COSF,
498                        "__builtin_cosf",
499                        BT_FN_FLOAT_FLOAT,
500                        flag_unsafe_math_optimizations ? ATTR_CONST_NOTHROW_LIST
501                                                       : ATTR_PURE_NOTHROW_LIST)
502 DEF_C99_C90RES_BUILTIN(BUILT_IN_EXPF,
503                        "__builtin_expf",
504                        BT_FN_FLOAT_FLOAT,
505                        flag_errno_math ? ATTR_NOTHROW_LIST
506                                        : (flag_unsafe_math_optimizations
507                                           ? ATTR_CONST_NOTHROW_LIST
508                                           : ATTR_PURE_NOTHROW_LIST))
509 DEF_C99_C90RES_BUILTIN(BUILT_IN_LOGF,
510                        "__builtin_logf",
511                        BT_FN_FLOAT_FLOAT,
512                        flag_errno_math ? ATTR_NOTHROW_LIST
513                                        : (flag_unsafe_math_optimizations
514                                           ? ATTR_CONST_NOTHROW_LIST
515                                           : ATTR_PURE_NOTHROW_LIST))
516 DEF_C99_C90RES_BUILTIN(BUILT_IN_TANF,
517                        "__builtin_tanf",
518                        BT_FN_FLOAT_FLOAT,
519                        flag_unsafe_math_optimizations ? ATTR_CONST_NOTHROW_LIST
520                                                       : ATTR_PURE_NOTHROW_LIST)
521 DEF_C99_C90RES_BUILTIN(BUILT_IN_ATANF,
522                        "__builtin_atanf",
523                        BT_FN_FLOAT_FLOAT,
524                        flag_unsafe_math_optimizations ? ATTR_CONST_NOTHROW_LIST
525                                                       : ATTR_PURE_NOTHROW_LIST)
526 DEF_C99_C90RES_BUILTIN(BUILT_IN_POWF,
527                        "__builtin_powf",
528                        BT_FN_FLOAT_FLOAT_FLOAT,
529                        flag_errno_math ? ATTR_NOTHROW_LIST
530                                        : (flag_unsafe_math_optimizations
531                                           ? ATTR_CONST_NOTHROW_LIST
532                                           : ATTR_PURE_NOTHROW_LIST))
533 DEF_C99_C90RES_BUILTIN(BUILT_IN_ATAN2F,
534                        "__builtin_atan2f",
535                        BT_FN_FLOAT_FLOAT_FLOAT,
536                        flag_errno_math ? ATTR_NOTHROW_LIST
537                                        : (flag_unsafe_math_optimizations
538                                           ? ATTR_CONST_NOTHROW_LIST
539                                           : ATTR_PURE_NOTHROW_LIST))
540 DEF_C99_C90RES_BUILTIN(BUILT_IN_FMODF,
541                        "__builtin_fmodf",
542                        BT_FN_FLOAT_FLOAT_FLOAT,
543                        flag_errno_math ? ATTR_NOTHROW_LIST
544                                        : (flag_unsafe_math_optimizations
545                                           ? ATTR_CONST_NOTHROW_LIST
546                                           : ATTR_PURE_NOTHROW_LIST))
547 DEF_C99_C90RES_BUILTIN(BUILT_IN_SQRTL,
548                        "__builtin_sqrtl",
549                        BT_FN_LONG_DOUBLE_LONG_DOUBLE,
550                        flag_errno_math ? ATTR_NOTHROW_LIST
551                                        : (flag_unsafe_math_optimizations
552                                           ? ATTR_CONST_NOTHROW_LIST
553                                           : ATTR_PURE_NOTHROW_LIST))
554 DEF_C99_C90RES_BUILTIN(BUILT_IN_SINL,
555                        "__builtin_sinl",
556                        BT_FN_LONG_DOUBLE_LONG_DOUBLE,
557                        flag_unsafe_math_optimizations ? ATTR_CONST_NOTHROW_LIST
558                                                       : ATTR_PURE_NOTHROW_LIST)
559 DEF_C99_C90RES_BUILTIN(BUILT_IN_COSL,
560                        "__builtin_cosl",
561                        BT_FN_LONG_DOUBLE_LONG_DOUBLE,
562                        flag_unsafe_math_optimizations ? ATTR_CONST_NOTHROW_LIST
563                                                       : ATTR_PURE_NOTHROW_LIST)
564 DEF_C99_C90RES_BUILTIN(BUILT_IN_EXPL,
565                        "__builtin_expl",
566                        BT_FN_LONG_DOUBLE_LONG_DOUBLE,
567                        flag_errno_math ? ATTR_NOTHROW_LIST
568                                        : (flag_unsafe_math_optimizations
569                                           ? ATTR_CONST_NOTHROW_LIST
570                                           : ATTR_PURE_NOTHROW_LIST))
571 DEF_C99_C90RES_BUILTIN(BUILT_IN_LOGL,
572                        "__builtin_logl",
573                        BT_FN_LONG_DOUBLE_LONG_DOUBLE,
574                        flag_errno_math ? ATTR_NOTHROW_LIST
575                                        : (flag_unsafe_math_optimizations
576                                           ? ATTR_CONST_NOTHROW_LIST
577                                           : ATTR_PURE_NOTHROW_LIST))
578 DEF_C99_C90RES_BUILTIN(BUILT_IN_TANL,
579                        "__builtin_tanl",
580                        BT_FN_LONG_DOUBLE_LONG_DOUBLE,
581                        flag_unsafe_math_optimizations ? ATTR_CONST_NOTHROW_LIST
582                                                       : ATTR_PURE_NOTHROW_LIST)
583 DEF_C99_C90RES_BUILTIN(BUILT_IN_ATANL,
584                        "__builtin_atanl",
585                        BT_FN_LONG_DOUBLE_LONG_DOUBLE,
586                        flag_unsafe_math_optimizations ? 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_NONNULL_1)
640 DEF_LIB_BUILTIN(BUILT_IN_NANF,
641                 "__builtin_nanf",
642                 BT_FN_FLOAT_CONST_STRING,
643                 ATTR_CONST_NOTHROW_NONNULL_1)
644 DEF_LIB_BUILTIN(BUILT_IN_NANL,
645                 "__builtin_nanl",
646                 BT_FN_LONG_DOUBLE_CONST_STRING,
647                 ATTR_CONST_NOTHROW_NONNULL_1)
648
649 DEF_LIB_BUILTIN(BUILT_IN_NANS,
650                 "__builtin_nans",
651                 BT_FN_DOUBLE_CONST_STRING,
652                 ATTR_CONST_NOTHROW_NONNULL_1)
653 DEF_LIB_BUILTIN(BUILT_IN_NANSF,
654                 "__builtin_nansf",
655                 BT_FN_FLOAT_CONST_STRING,
656                 ATTR_CONST_NOTHROW_NONNULL_1)
657 DEF_LIB_BUILTIN(BUILT_IN_NANSL,
658                 "__builtin_nansl",
659                 BT_FN_LONG_DOUBLE_CONST_STRING,
660                 ATTR_CONST_NOTHROW_NONNULL_1)
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_CONST_NOTHROW_LIST)
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_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_NONNULL_1)
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_LIB_BUILTIN(BUILT_IN_FPUTC,
783                 "__builtin_fputc",
784                 BT_FN_INT_INT_PTR,
785                 ATTR_NOTHROW_NONNULL_2)
786 DEF_LIB_BUILTIN(BUILT_IN_FPUTS,
787                 "__builtin_fputs",
788                 BT_FN_INT_CONST_STRING_PTR,
789                 ATTR_NOTHROW_NONNULL_1_2)
790 DEF_LIB_BUILTIN(BUILT_IN_FWRITE,
791                 "__builtin_fwrite",
792                 BT_FN_SIZE_CONST_PTR_SIZE_SIZE_PTR,
793                 ATTR_NOTHROW_NONNULL_1_4)
794 DEF_LIB_BUILTIN(BUILT_IN_FPRINTF,
795                 "__builtin_fprintf",
796                 BT_FN_INT_PTR_CONST_STRING_VAR,
797                 ATTR_FORMAT_PRINTF_2_3)
798
799 /* stdio unlocked builtins (without FILE *).  */
800
801 DEF_EXT_LIB_BUILTIN(BUILT_IN_PUTCHAR_UNLOCKED,
802                     "__builtin_putchar_unlocked",
803                     BT_FN_INT_INT,
804                     ATTR_NOTHROW_LIST)
805 DEF_EXT_LIB_BUILTIN(BUILT_IN_PUTS_UNLOCKED,
806                     "__builtin_puts_unlocked",
807                     BT_FN_INT_CONST_STRING,
808                     ATTR_NOTHROW_NONNULL_1)
809 DEF_EXT_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_LIB_BUILTIN(BUILT_IN_FPUTC_UNLOCKED,
822                     "__builtin_fputc_unlocked",
823                     BT_FN_INT_INT_PTR,
824                     ATTR_NOTHROW_NONNULL_2)
825 DEF_EXT_LIB_BUILTIN(BUILT_IN_FPUTS_UNLOCKED,
826                     "__builtin_fputs_unlocked",
827                     BT_FN_INT_CONST_STRING_PTR,
828                     ATTR_NOTHROW_NONNULL_1_2)
829 DEF_EXT_LIB_BUILTIN(BUILT_IN_FWRITE_UNLOCKED,
830                     "__builtin_fwrite_unlocked",
831                     BT_FN_SIZE_CONST_PTR_SIZE_SIZE_PTR,
832                     ATTR_NOTHROW_NONNULL_1_4)
833 DEF_EXT_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_SP_COLUMN,
874                 "__builtin_dwarf_sp_column",
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_NONNULL_1)
954