]> git.ipfire.org Git - thirdparty/gcc.git/blame - gcc/builtins.def
c-tree.texi: Normalize spellings of "lowercase" and "uppercase".
[thirdparty/gcc.git] / gcc / builtins.def
CommitLineData
cb1072f4
KG
1/* This file contains the definitions and documentation for the
2 builtins used in the GNU compiler.
46847aa6 3 Copyright (C) 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
cb1072f4 4
1322177d 5This file is part of GCC.
cb1072f4 6
1322177d
LB
7GCC is free software; you can redistribute it and/or modify it under
8the terms of the GNU General Public License as published by the Free
9Software Foundation; either version 2, or (at your option) any later
10version.
cb1072f4 11
1322177d
LB
12GCC is distributed in the hope that it will be useful, but WITHOUT ANY
13WARRANTY; without even the implied warranty of MERCHANTABILITY or
14FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
15for more details.
cb1072f4
KG
16
17You should have received a copy of the GNU General Public License
1322177d
LB
18along with GCC; see the file COPYING. If not, write to the Free
19Software Foundation, 59 Temple Place - Suite 330, Boston, MA
2002111-1307, USA. */
cb1072f4 21
10841285
MM
22/* Before including this file, you should define a macro:
23
24 DEF_BUILTIN (ENUM, NAME, CLASS, TYPE, LIBTYPE, BOTH_P,
272f51a3 25 FALLBACK_P, NONANSI_P, ATTRS, IMPLICIT)
10841285
MM
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
df061a43
RS
53 exist when compiling in ANSI conformant mode.
54
55 ATTRs is an attribute list as defined in builtin-attrs.def that
272f51a3
JH
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
f937d5e6
RS
62 simplifying floor((double)float) since the runtime need not implement
63 it. */
10841285
MM
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
c2ef6d34 69#define DEF_GCC_BUILTIN(ENUM, NAME, TYPE, ATTRS) \
10841285 70 DEF_BUILTIN (ENUM, NAME, BUILT_IN_NORMAL, TYPE, BT_LAST, \
272f51a3 71 false, false, false, ATTRS, true)
10841285 72
10841285
MM
73/* A library builtin (like __builtin_strchr) is a builtin equivalent
74 of an ANSI/ISO standard library function. In addition to the
5519a4f9 75 `__builtin' version, we will create an ordinary version (e.g,
10841285
MM
76 `strchr') as well. If we cannot compute the answer using the
77 builtin function, we will fall back to the standard library
991b6592 78 version. */
10841285 79#undef DEF_LIB_BUILTIN
df061a43 80#define DEF_LIB_BUILTIN(ENUM, NAME, TYPE, ATTRS) \
10841285 81 DEF_BUILTIN (ENUM, NAME, BUILT_IN_NORMAL, TYPE, TYPE, \
272f51a3 82 true, true, false, ATTRS, true)
10841285 83
10841285
MM
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
df061a43 89#define DEF_EXT_LIB_BUILTIN(ENUM, NAME, TYPE, ATTRS) \
10841285 90 DEF_BUILTIN (ENUM, NAME, BUILT_IN_NORMAL, TYPE, TYPE, \
272f51a3 91 true, true, true, ATTRS, false)
10841285
MM
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
4977bab6 96#define DEF_C99_BUILTIN(ENUM, NAME, TYPE, ATTRS) \
10841285 97 DEF_BUILTIN (ENUM, NAME, BUILT_IN_NORMAL, TYPE, TYPE, \
272f51a3
JH
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)
10841285 107
b4c984fb 108
10841285
MM
109DEF_EXT_LIB_BUILTIN(BUILT_IN_ALLOCA,
110 "__builtin_alloca",
df061a43
RS
111 BT_FN_PTR_SIZE,
112 ATTR_MALLOC_NOTHROW_LIST)
10841285 113
b052d8ee
RS
114DEF_LIB_BUILTIN(BUILT_IN_ABS,
115 "__builtin_abs",
116 BT_FN_INT_INT,
117 ATTR_CONST_NOTHROW_LIST)
118DEF_LIB_BUILTIN(BUILT_IN_LABS,
119 "__builtin_labs",
120 BT_FN_LONG_LONG,
121 ATTR_CONST_NOTHROW_LIST)
122
123DEF_LIB_BUILTIN(BUILT_IN_FABS,
124 "__builtin_fabs",
125 BT_FN_DOUBLE_DOUBLE,
126 ATTR_CONST_NOTHROW_LIST)
127DEF_C99_C90RES_BUILTIN(BUILT_IN_FABSF,
10841285 128 "__builtin_fabsf",
b052d8ee
RS
129 BT_FN_FLOAT_FLOAT,
130 ATTR_CONST_NOTHROW_LIST)
131DEF_C99_C90RES_BUILTIN(BUILT_IN_FABSL,
10841285 132 "__builtin_fabsl",
b052d8ee
RS
133 BT_FN_LONG_DOUBLE_LONG_DOUBLE,
134 ATTR_CONST_NOTHROW_LIST)
10841285 135
4977bab6
ZW
136DEF_LIB_BUILTIN(BUILT_IN_FLOOR,
137 "__builtin_floor",
138 BT_FN_DOUBLE_DOUBLE,
139 ATTR_CONST_NOTHROW_LIST)
272f51a3
JH
140DEF_C99_C90RES_BUILTIN(BUILT_IN_FLOORF,
141 "__builtin_floorf",
142 BT_FN_FLOAT_FLOAT,
143 ATTR_CONST_NOTHROW_LIST)
144DEF_C99_C90RES_BUILTIN(BUILT_IN_FLOORL,
145 "__builtin_floorl",
146 BT_FN_LONG_DOUBLE_LONG_DOUBLE,
147 ATTR_CONST_NOTHROW_LIST)
4977bab6
ZW
148
149DEF_LIB_BUILTIN(BUILT_IN_CEIL,
150 "__builtin_ceil",
151 BT_FN_DOUBLE_DOUBLE,
152 ATTR_CONST_NOTHROW_LIST)
272f51a3
JH
153DEF_C99_C90RES_BUILTIN(BUILT_IN_CEILF,
154 "__builtin_ceilf",
155 BT_FN_FLOAT_FLOAT,
156 ATTR_CONST_NOTHROW_LIST)
157DEF_C99_C90RES_BUILTIN(BUILT_IN_CEILL,
158 "__builtin_ceill",
159 BT_FN_LONG_DOUBLE_LONG_DOUBLE,
160 ATTR_CONST_NOTHROW_LIST)
4977bab6
ZW
161
162DEF_C99_BUILTIN(BUILT_IN_ROUND,
163 "__builtin_round",
164 BT_FN_DOUBLE_DOUBLE,
165 ATTR_CONST_NOTHROW_LIST)
166DEF_C99_BUILTIN(BUILT_IN_ROUNDF,
167 "__builtin_roundf",
168 BT_FN_FLOAT_FLOAT,
169 ATTR_CONST_NOTHROW_LIST)
170DEF_C99_BUILTIN(BUILT_IN_ROUNDL,
171 "__builtin_roundl",
172 BT_FN_LONG_DOUBLE_LONG_DOUBLE,
173 ATTR_CONST_NOTHROW_LIST)
174
175DEF_C99_BUILTIN(BUILT_IN_TRUNC,
176 "__builtin_trunc",
177 BT_FN_DOUBLE_DOUBLE,
178 ATTR_CONST_NOTHROW_LIST)
179DEF_C99_BUILTIN(BUILT_IN_TRUNCF,
180 "__builtin_truncf",
181 BT_FN_FLOAT_FLOAT,
182 ATTR_CONST_NOTHROW_LIST)
183DEF_C99_BUILTIN(BUILT_IN_TRUNCL,
184 "__builtin_truncl",
185 BT_FN_LONG_DOUBLE_LONG_DOUBLE,
186 ATTR_CONST_NOTHROW_LIST)
187
188DEF_C99_BUILTIN(BUILT_IN_NEARBYINT,
189 "__builtin_nearbyint",
190 BT_FN_DOUBLE_DOUBLE,
191 ATTR_CONST_NOTHROW_LIST)
192DEF_C99_BUILTIN(BUILT_IN_NEARBYINTF,
193 "__builtin_nearbyintf",
194 BT_FN_FLOAT_FLOAT,
195 ATTR_CONST_NOTHROW_LIST)
196DEF_C99_BUILTIN(BUILT_IN_NEARBYINTL,
197 "__builtin_nearbyintl",
198 BT_FN_LONG_DOUBLE_LONG_DOUBLE,
199 ATTR_CONST_NOTHROW_LIST)
200
10841285
MM
201DEF_C99_BUILTIN(BUILT_IN_LLABS,
202 "__builtin_llabs",
4977bab6
ZW
203 BT_FN_LONGLONG_LONGLONG,
204 ATTR_CONST_NOTHROW_LIST)
10841285
MM
205DEF_C99_BUILTIN(BUILT_IN_IMAXABS,
206 "__builtin_imaxabs",
4977bab6
ZW
207 BT_FN_INTMAX_INTMAX,
208 ATTR_CONST_NOTHROW_LIST)
10841285
MM
209DEF_C99_BUILTIN(BUILT_IN_CONJ,
210 "__builtin_conj",
4977bab6
ZW
211 BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE,
212 ATTR_CONST_NOTHROW_LIST)
10841285
MM
213DEF_C99_BUILTIN(BUILT_IN_CONJF,
214 "__builtin_conjf",
4977bab6
ZW
215 BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT,
216 ATTR_CONST_NOTHROW_LIST)
10841285
MM
217DEF_C99_BUILTIN(BUILT_IN_CONJL,
218 "__builtin_conjl",
4977bab6
ZW
219 BT_FN_COMPLEX_LONG_DOUBLE_COMPLEX_LONG_DOUBLE,
220 ATTR_CONST_NOTHROW_LIST)
10841285
MM
221DEF_C99_BUILTIN(BUILT_IN_CREAL,
222 "__builtin_creal",
4977bab6
ZW
223 BT_FN_DOUBLE_COMPLEX_DOUBLE,
224 ATTR_CONST_NOTHROW_LIST)
10841285
MM
225DEF_C99_BUILTIN(BUILT_IN_CREALF,
226 "__builtin_crealf",
4977bab6
ZW
227 BT_FN_FLOAT_COMPLEX_FLOAT,
228 ATTR_CONST_NOTHROW_LIST)
10841285
MM
229DEF_C99_BUILTIN(BUILT_IN_CREALL,
230 "__builtin_creall",
4977bab6
ZW
231 BT_FN_LONG_DOUBLE_COMPLEX_LONG_DOUBLE,
232 ATTR_CONST_NOTHROW_LIST)
10841285
MM
233DEF_C99_BUILTIN(BUILT_IN_CIMAG,
234 "__builtin_cimag",
4977bab6
ZW
235 BT_FN_DOUBLE_COMPLEX_DOUBLE,
236 ATTR_CONST_NOTHROW_LIST)
10841285
MM
237DEF_C99_BUILTIN(BUILT_IN_CIMAGF,
238 "__builtin_cimagf",
4977bab6
ZW
239 BT_FN_FLOAT_COMPLEX_FLOAT,
240 ATTR_CONST_NOTHROW_LIST)
10841285
MM
241DEF_C99_BUILTIN(BUILT_IN_CIMAGL,
242 "__builtin_cimagl",
4977bab6
ZW
243 BT_FN_LONG_DOUBLE_COMPLEX_LONG_DOUBLE,
244 ATTR_CONST_NOTHROW_LIST)
075ec276
RS
245DEF_C99_BUILTIN(BUILT_IN_CABS,
246 "__builtin_cabs",
247 BT_FN_DOUBLE_COMPLEX_DOUBLE,
248 ATTR_CONST_NOTHROW_LIST)
249DEF_C99_BUILTIN(BUILT_IN_CABSF,
250 "__builtin_cabsf",
251 BT_FN_FLOAT_COMPLEX_FLOAT,
252 ATTR_CONST_NOTHROW_LIST)
253DEF_C99_BUILTIN(BUILT_IN_CABSL,
254 "__builtin_cabsl",
255 BT_FN_LONG_DOUBLE_COMPLEX_LONG_DOUBLE,
256 ATTR_CONST_NOTHROW_LIST)
10841285 257
cc42f5f5
RS
258/* These functions have traditionally accepted NULL pointers when the
259 length parameter is zero, so don't apply attribute "nonnull". */
260DEF_EXT_LIB_BUILTIN(BUILT_IN_BZERO,
261 "__builtin_bzero",
262 BT_FN_VOID_PTR_SIZE,
263 ATTR_NOTHROW_LIST)
264DEF_EXT_LIB_BUILTIN(BUILT_IN_BCOPY,
265 "__builtin_bcopy",
266 BT_FN_VOID_CONST_PTR_PTR_SIZE,
267 ATTR_NOTHROW_LIST)
268DEF_EXT_LIB_BUILTIN(BUILT_IN_BCMP,
269 "__builtin_bcmp",
270 BT_FN_INT_CONST_PTR_CONST_PTR_SIZE,
271 ATTR_PURE_NOTHROW_LIST)
10841285
MM
272
273DEF_EXT_LIB_BUILTIN(BUILT_IN_FFS,
274 "__builtin_ffs",
df061a43
RS
275 BT_FN_INT_INT,
276 ATTR_CONST_NOTHROW_LIST)
2928cd7a
RH
277DEF_GCC_BUILTIN(BUILT_IN_CLZ,
278 "__builtin_clz",
279 BT_FN_INT_INT,
280 ATTR_CONST_NOTHROW_LIST)
281DEF_GCC_BUILTIN(BUILT_IN_CTZ,
282 "__builtin_ctz",
283 BT_FN_INT_INT,
284 ATTR_CONST_NOTHROW_LIST)
285DEF_GCC_BUILTIN(BUILT_IN_POPCOUNT,
286 "__builtin_popcount",
287 BT_FN_INT_INT,
288 ATTR_CONST_NOTHROW_LIST)
289DEF_GCC_BUILTIN(BUILT_IN_PARITY,
290 "__builtin_parity",
291 BT_FN_INT_INT,
292 ATTR_CONST_NOTHROW_LIST)
293
294DEF_GCC_BUILTIN(BUILT_IN_FFSL,
295 "__builtin_ffsl",
296 BT_FN_INT_LONG,
297 ATTR_CONST_NOTHROW_LIST)
298DEF_GCC_BUILTIN(BUILT_IN_CLZL,
299 "__builtin_clzl",
300 BT_FN_INT_LONG,
301 ATTR_CONST_NOTHROW_LIST)
302DEF_GCC_BUILTIN(BUILT_IN_CTZL,
303 "__builtin_ctzl",
304 BT_FN_INT_LONG,
305 ATTR_CONST_NOTHROW_LIST)
306DEF_GCC_BUILTIN(BUILT_IN_POPCOUNTL,
307 "__builtin_popcountl",
308 BT_FN_INT_LONG,
309 ATTR_CONST_NOTHROW_LIST)
310DEF_GCC_BUILTIN(BUILT_IN_PARITYL,
311 "__builtin_parityl",
312 BT_FN_INT_LONG,
313 ATTR_CONST_NOTHROW_LIST)
314
315DEF_EXT_LIB_BUILTIN(BUILT_IN_FFSLL,
316 "__builtin_ffsll",
317 BT_FN_INT_LONGLONG,
318 ATTR_CONST_NOTHROW_LIST)
319DEF_GCC_BUILTIN(BUILT_IN_CLZLL,
320 "__builtin_clzll",
321 BT_FN_INT_LONGLONG,
322 ATTR_CONST_NOTHROW_LIST)
323DEF_GCC_BUILTIN(BUILT_IN_CTZLL,
324 "__builtin_ctzll",
325 BT_FN_INT_LONGLONG,
326 ATTR_CONST_NOTHROW_LIST)
327DEF_GCC_BUILTIN(BUILT_IN_POPCOUNTLL,
328 "__builtin_popcountll",
329 BT_FN_INT_LONGLONG,
330 ATTR_CONST_NOTHROW_LIST)
331DEF_GCC_BUILTIN(BUILT_IN_PARITYLL,
332 "__builtin_parityll",
333 BT_FN_INT_LONGLONG,
334 ATTR_CONST_NOTHROW_LIST)
335
10841285
MM
336DEF_EXT_LIB_BUILTIN(BUILT_IN_INDEX,
337 "__builtin_index",
df061a43 338 BT_FN_STRING_CONST_STRING_INT,
00362064 339 ATTR_PURE_NOTHROW_NONNULL_1)
10841285
MM
340DEF_EXT_LIB_BUILTIN(BUILT_IN_RINDEX,
341 "__builtin_rindex",
df061a43 342 BT_FN_STRING_CONST_STRING_INT,
00362064 343 ATTR_PURE_NOTHROW_NONNULL_1)
10841285
MM
344
345DEF_LIB_BUILTIN(BUILT_IN_MEMCPY,
346 "__builtin_memcpy",
df061a43 347 BT_FN_PTR_PTR_CONST_PTR_SIZE,
00362064 348 ATTR_NOTHROW_NONNULL_1_2)
e31603c4
JJ
349DEF_LIB_BUILTIN(BUILT_IN_MEMMOVE,
350 "__builtin_memmove",
351 BT_FN_PTR_PTR_CONST_PTR_SIZE,
00362064 352 ATTR_NOTHROW_NONNULL_1_2)
10841285
MM
353DEF_LIB_BUILTIN(BUILT_IN_MEMCMP,
354 "__builtin_memcmp",
df061a43 355 BT_FN_INT_CONST_PTR_CONST_PTR_SIZE,
00362064 356 ATTR_PURE_NOTHROW_NONNULL_1_2)
10841285
MM
357DEF_LIB_BUILTIN(BUILT_IN_MEMSET,
358 "__builtin_memset",
df061a43 359 BT_FN_PTR_PTR_INT_SIZE,
00362064 360 ATTR_NOTHROW_NONNULL_1)
9cb65f92
KG
361DEF_EXT_LIB_BUILTIN(BUILT_IN_MEMPCPY,
362 "__builtin_mempcpy",
363 BT_FN_PTR_PTR_CONST_PTR_SIZE,
00362064 364 ATTR_NOTHROW_NONNULL_1_2)
10841285
MM
365
366DEF_LIB_BUILTIN(BUILT_IN_STRCAT,
367 "__builtin_strcat",
df061a43 368 BT_FN_STRING_STRING_CONST_STRING,
00362064 369 ATTR_NOTHROW_NONNULL_1_2)
10841285
MM
370DEF_LIB_BUILTIN(BUILT_IN_STRNCAT,
371 "__builtin_strncat",
df061a43 372 BT_FN_STRING_STRING_CONST_STRING_SIZE,
00362064 373 ATTR_NOTHROW_NONNULL_1_2)
9cb65f92
KG
374DEF_EXT_LIB_BUILTIN(BUILT_IN_STPCPY,
375 "__builtin_stpcpy",
376 BT_FN_STRING_STRING_CONST_STRING,
00362064 377 ATTR_NOTHROW_NONNULL_1_2)
10841285
MM
378DEF_LIB_BUILTIN(BUILT_IN_STRCPY,
379 "__builtin_strcpy",
df061a43 380 BT_FN_STRING_STRING_CONST_STRING,
00362064 381 ATTR_NOTHROW_NONNULL_1_2)
10841285
MM
382DEF_LIB_BUILTIN(BUILT_IN_STRNCPY,
383 "__builtin_strncpy",
df061a43 384 BT_FN_STRING_STRING_CONST_STRING_SIZE,
00362064 385 ATTR_NOTHROW_NONNULL_1_2)
10841285
MM
386DEF_LIB_BUILTIN(BUILT_IN_STRCMP,
387 "__builtin_strcmp",
df061a43 388 BT_FN_INT_CONST_STRING_CONST_STRING,
00362064 389 ATTR_PURE_NOTHROW_NONNULL_1_2)
10841285
MM
390DEF_LIB_BUILTIN(BUILT_IN_STRNCMP,
391 "__builtin_strncmp",
df061a43 392 BT_FN_INT_CONST_STRING_CONST_STRING_SIZE,
00362064 393 ATTR_PURE_NOTHROW_NONNULL_1_2)
10841285
MM
394DEF_LIB_BUILTIN(BUILT_IN_STRLEN,
395 "__builtin_strlen",
df061a43 396 BT_FN_SIZE_CONST_STRING,
00362064 397 ATTR_PURE_NOTHROW_NONNULL_1)
10841285
MM
398DEF_LIB_BUILTIN(BUILT_IN_STRSTR,
399 "__builtin_strstr",
df061a43 400 BT_FN_STRING_CONST_STRING_CONST_STRING,
00362064 401 ATTR_PURE_NOTHROW_NONNULL_1_2)
10841285
MM
402DEF_LIB_BUILTIN(BUILT_IN_STRPBRK,
403 "__builtin_strpbrk",
df061a43 404 BT_FN_STRING_CONST_STRING_CONST_STRING,
00362064 405 ATTR_PURE_NOTHROW_NONNULL_1_2)
10841285
MM
406DEF_LIB_BUILTIN(BUILT_IN_STRSPN,
407 "__builtin_strspn",
df061a43 408 BT_FN_SIZE_CONST_STRING_CONST_STRING,
00362064 409 ATTR_PURE_NOTHROW_NONNULL_1_2)
10841285
MM
410DEF_LIB_BUILTIN(BUILT_IN_STRCSPN,
411 "__builtin_strcspn",
df061a43 412 BT_FN_SIZE_CONST_STRING_CONST_STRING,
00362064 413 ATTR_PURE_NOTHROW_NONNULL_1_2)
10841285
MM
414DEF_LIB_BUILTIN(BUILT_IN_STRCHR,
415 "__builtin_strchr",
df061a43 416 BT_FN_STRING_CONST_STRING_INT,
00362064 417 ATTR_PURE_NOTHROW_NONNULL_1)
10841285
MM
418DEF_LIB_BUILTIN(BUILT_IN_STRRCHR,
419 "__builtin_strrchr",
df061a43 420 BT_FN_STRING_CONST_STRING_INT,
00362064 421 ATTR_PURE_NOTHROW_NONNULL_1)
10841285 422
dc6f4158
AJ
423DEF_LIB_BUILTIN(BUILT_IN_SQRT,
424 "__builtin_sqrt",
df061a43
RS
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))
10841285
MM
430DEF_LIB_BUILTIN(BUILT_IN_SIN,
431 "__builtin_sin",
df061a43
RS
432 BT_FN_DOUBLE_DOUBLE,
433 flag_unsafe_math_optimizations ? ATTR_CONST_NOTHROW_LIST
434 : ATTR_PURE_NOTHROW_LIST)
10841285
MM
435DEF_LIB_BUILTIN(BUILT_IN_COS,
436 "__builtin_cos",
df061a43
RS
437 BT_FN_DOUBLE_DOUBLE,
438 flag_unsafe_math_optimizations ? ATTR_CONST_NOTHROW_LIST
439 : ATTR_PURE_NOTHROW_LIST)
e7b489c8
RS
440DEF_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))
447DEF_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))
29f523be
RS
454DEF_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)
459DEF_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)
46847aa6
RS
464DEF_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))
471DEF_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))
b052d8ee
RS
478DEF_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))
272f51a3
JH
485DEF_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))
492DEF_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)
497DEF_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)
502DEF_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))
509DEF_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))
29f523be
RS
516DEF_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)
521DEF_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)
46847aa6
RS
526DEF_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))
533DEF_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))
b052d8ee
RS
540DEF_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))
272f51a3
JH
547DEF_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))
554DEF_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)
559DEF_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)
564DEF_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))
571DEF_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))
29f523be
RS
578DEF_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)
583DEF_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)
46847aa6
RS
588DEF_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))
595DEF_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))
b052d8ee
RS
602DEF_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))
10841285 609
ab5e2615
RH
610DEF_GCC_BUILTIN(BUILT_IN_INF,
611 "__builtin_inf",
612 BT_FN_DOUBLE,
3aa4cad7 613 ATTR_CONST_NOTHROW_LIST)
ab5e2615
RH
614DEF_GCC_BUILTIN(BUILT_IN_INFF,
615 "__builtin_inff",
616 BT_FN_FLOAT,
3aa4cad7 617 ATTR_CONST_NOTHROW_LIST)
ab5e2615
RH
618DEF_GCC_BUILTIN(BUILT_IN_INFL,
619 "__builtin_infl",
620 BT_FN_LONG_DOUBLE,
3aa4cad7 621 ATTR_CONST_NOTHROW_LIST)
ab5e2615
RH
622
623DEF_GCC_BUILTIN(BUILT_IN_HUGE_VAL,
624 "__builtin_huge_val",
625 BT_FN_DOUBLE,
3aa4cad7 626 ATTR_CONST_NOTHROW_LIST)
ab5e2615
RH
627DEF_GCC_BUILTIN(BUILT_IN_HUGE_VALF,
628 "__builtin_huge_valf",
629 BT_FN_FLOAT,
3aa4cad7 630 ATTR_CONST_NOTHROW_LIST)
ab5e2615
RH
631DEF_GCC_BUILTIN(BUILT_IN_HUGE_VALL,
632 "__builtin_huge_vall",
633 BT_FN_LONG_DOUBLE,
3aa4cad7 634 ATTR_CONST_NOTHROW_LIST)
10841285 635
1472e41c
RH
636DEF_LIB_BUILTIN(BUILT_IN_NAN,
637 "__builtin_nan",
638 BT_FN_DOUBLE_CONST_STRING,
00362064 639 ATTR_CONST_NOTHROW_NONNULL_1)
1472e41c
RH
640DEF_LIB_BUILTIN(BUILT_IN_NANF,
641 "__builtin_nanf",
642 BT_FN_FLOAT_CONST_STRING,
00362064 643 ATTR_CONST_NOTHROW_NONNULL_1)
1472e41c
RH
644DEF_LIB_BUILTIN(BUILT_IN_NANL,
645 "__builtin_nanl",
646 BT_FN_LONG_DOUBLE_CONST_STRING,
00362064 647 ATTR_CONST_NOTHROW_NONNULL_1)
1472e41c
RH
648
649DEF_LIB_BUILTIN(BUILT_IN_NANS,
650 "__builtin_nans",
651 BT_FN_DOUBLE_CONST_STRING,
00362064 652 ATTR_CONST_NOTHROW_NONNULL_1)
1472e41c
RH
653DEF_LIB_BUILTIN(BUILT_IN_NANSF,
654 "__builtin_nansf",
655 BT_FN_FLOAT_CONST_STRING,
00362064 656 ATTR_CONST_NOTHROW_NONNULL_1)
1472e41c
RH
657DEF_LIB_BUILTIN(BUILT_IN_NANSL,
658 "__builtin_nansl",
659 BT_FN_LONG_DOUBLE_CONST_STRING,
00362064 660 ATTR_CONST_NOTHROW_NONNULL_1)
1472e41c 661
10841285
MM
662DEF_GCC_BUILTIN(BUILT_IN_SAVEREGS,
663 "__builtin_saveregs",
c2ef6d34
RS
664 BT_FN_PTR_VAR,
665 ATTR_NULL)
10841285
MM
666DEF_GCC_BUILTIN(BUILT_IN_CLASSIFY_TYPE,
667 "__builtin_classify_type",
c2ef6d34
RS
668 BT_FN_INT_VAR,
669 ATTR_NULL)
10841285
MM
670DEF_GCC_BUILTIN(BUILT_IN_NEXT_ARG,
671 "__builtin_next_arg",
c2ef6d34
RS
672 BT_FN_PTR_VAR,
673 ATTR_NULL)
10841285
MM
674DEF_GCC_BUILTIN(BUILT_IN_ARGS_INFO,
675 "__builtin_args_info",
c2ef6d34
RS
676 BT_FN_INT_INT,
677 ATTR_NULL)
10841285
MM
678DEF_GCC_BUILTIN(BUILT_IN_CONSTANT_P,
679 "__builtin_constant_p",
c2ef6d34 680 BT_FN_INT_VAR,
44c8a5f8 681 ATTR_CONST_NOTHROW_LIST)
10841285
MM
682DEF_GCC_BUILTIN(BUILT_IN_FRAME_ADDRESS,
683 "__builtin_frame_address",
c2ef6d34
RS
684 BT_FN_PTR_UNSIGNED,
685 ATTR_NULL)
10841285
MM
686DEF_GCC_BUILTIN(BUILT_IN_RETURN_ADDRESS,
687 "__builtin_return_address",
c2ef6d34
RS
688 BT_FN_PTR_UNSIGNED,
689 ATTR_NULL)
10841285
MM
690DEF_GCC_BUILTIN(BUILT_IN_AGGREGATE_INCOMING_ADDRESS,
691 "__builtin_aggregate_incoming_address",
c2ef6d34
RS
692 BT_FN_PTR_VAR,
693 ATTR_NULL)
10841285
MM
694DEF_GCC_BUILTIN(BUILT_IN_APPLY_ARGS,
695 "__builtin_apply_args",
c2ef6d34
RS
696 BT_FN_PTR_VAR,
697 ATTR_NULL)
10841285
MM
698DEF_GCC_BUILTIN(BUILT_IN_APPLY,
699 "__builtin_apply",
c2ef6d34
RS
700 BT_FN_PTR_PTR_FN_VOID_VAR_PTR_SIZE,
701 ATTR_NULL)
10841285
MM
702DEF_GCC_BUILTIN(BUILT_IN_RETURN,
703 "__builtin_return",
c2ef6d34
RS
704 BT_FN_VOID_PTR,
705 ATTR_NORETURN_NOTHROW_LIST)
10841285
MM
706DEF_GCC_BUILTIN(BUILT_IN_SETJMP,
707 "__builtin_setjmp",
c2ef6d34
RS
708 BT_FN_INT_PTR,
709 ATTR_NULL)
10841285
MM
710DEF_GCC_BUILTIN(BUILT_IN_LONGJMP,
711 "__builtin_longjmp",
c2ef6d34
RS
712 BT_FN_VOID_PTR_INT,
713 ATTR_NORETURN_NOTHROW_LIST)
10841285
MM
714DEF_GCC_BUILTIN(BUILT_IN_TRAP,
715 "__builtin_trap",
c2ef6d34
RS
716 BT_FN_VOID,
717 ATTR_NORETURN_NOTHROW_LIST)
a9ccbb60
JJ
718DEF_GCC_BUILTIN(BUILT_IN_PREFETCH,
719 "__builtin_prefetch",
c2ef6d34
RS
720 BT_FN_VOID_CONST_PTR_VAR,
721 ATTR_NULL)
10841285 722
08291658
RS
723/* stdio.h builtins (without FILE *). */
724
868b8cda
RS
725DEF_LIB_BUILTIN(BUILT_IN_PRINTF,
726 "__builtin_printf",
727 BT_FN_INT_CONST_STRING_VAR,
728 ATTR_FORMAT_PRINTF_1_2)
08291658
RS
729DEF_LIB_BUILTIN(BUILT_IN_PUTCHAR,
730 "__builtin_putchar",
731 BT_FN_INT_INT,
732 ATTR_NOTHROW_LIST)
733DEF_LIB_BUILTIN(BUILT_IN_PUTS,
734 "__builtin_puts",
735 BT_FN_INT_CONST_STRING,
00362064 736 ATTR_NOTHROW_NONNULL_1)
08291658
RS
737DEF_C99_BUILTIN(BUILT_IN_SNPRINTF,
738 "__builtin_snprintf",
739 BT_FN_INT_STRING_SIZE_CONST_STRING_VAR,
740 ATTR_FORMAT_PRINTF_3_4)
741DEF_LIB_BUILTIN(BUILT_IN_SPRINTF,
742 "__builtin_sprintf",
743 BT_FN_INT_STRING_CONST_STRING_VAR,
744 ATTR_FORMAT_PRINTF_2_3)
745DEF_LIB_BUILTIN(BUILT_IN_SCANF,
746 "__builtin_scanf",
747 BT_FN_INT_CONST_STRING_VAR,
748 ATTR_FORMAT_SCANF_1_2)
749DEF_LIB_BUILTIN(BUILT_IN_SSCANF,
750 "__builtin_sscanf",
751 BT_FN_INT_CONST_STRING_CONST_STRING_VAR,
752 ATTR_FORMAT_SCANF_2_3)
753DEF_LIB_BUILTIN(BUILT_IN_VPRINTF,
754 "__builtin_vprintf",
755 BT_FN_INT_CONST_STRING_VALIST_ARG,
756 ATTR_FORMAT_PRINTF_1_0)
757DEF_C99_BUILTIN(BUILT_IN_VSCANF,
758 "__builtin_vscanf",
759 BT_FN_INT_CONST_STRING_VALIST_ARG,
760 ATTR_FORMAT_SCANF_1_0)
761DEF_C99_BUILTIN(BUILT_IN_VSSCANF,
762 "__builtin_vsscanf",
763 BT_FN_INT_CONST_STRING_CONST_STRING_VALIST_ARG,
764 ATTR_FORMAT_SCANF_2_0)
765DEF_C99_BUILTIN(BUILT_IN_VSNPRINTF,
766 "__builtin_vsnprintf",
767 BT_FN_INT_STRING_SIZE_CONST_STRING_VALIST_ARG,
768 ATTR_FORMAT_PRINTF_3_0)
769DEF_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
10841285
MM
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. */
08291658 781
cc42f5f5
RS
782DEF_LIB_BUILTIN(BUILT_IN_FPUTC,
783 "__builtin_fputc",
784 BT_FN_INT_INT_PTR,
785 ATTR_NOTHROW_NONNULL_2)
786DEF_LIB_BUILTIN(BUILT_IN_FPUTS,
787 "__builtin_fputs",
788 BT_FN_INT_CONST_STRING_PTR,
789 ATTR_NOTHROW_NONNULL_1_2)
790DEF_LIB_BUILTIN(BUILT_IN_FWRITE,
791 "__builtin_fwrite",
792 BT_FN_SIZE_CONST_PTR_SIZE_SIZE_PTR,
793 ATTR_NOTHROW_NONNULL_1_4)
868b8cda
RS
794DEF_LIB_BUILTIN(BUILT_IN_FPRINTF,
795 "__builtin_fprintf",
796 BT_FN_INT_PTR_CONST_STRING_VAR,
797 ATTR_FORMAT_PRINTF_2_3)
3ff5f682 798
08291658 799/* stdio unlocked builtins (without FILE *). */
b4c984fb 800
cc42f5f5
RS
801DEF_EXT_LIB_BUILTIN(BUILT_IN_PUTCHAR_UNLOCKED,
802 "__builtin_putchar_unlocked",
803 BT_FN_INT_INT,
804 ATTR_NOTHROW_LIST)
805DEF_EXT_LIB_BUILTIN(BUILT_IN_PUTS_UNLOCKED,
806 "__builtin_puts_unlocked",
807 BT_FN_INT_CONST_STRING,
808 ATTR_NOTHROW_NONNULL_1)
868b8cda
RS
809DEF_EXT_LIB_BUILTIN(BUILT_IN_PRINTF_UNLOCKED,
810 "__builtin_printf_unlocked",
811 BT_FN_INT_CONST_STRING_VAR,
812 ATTR_FORMAT_PRINTF_1_2)
08291658
RS
813
814/* stdio unlocked builtins (with FILE *). */
815
b4c984fb
KG
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. */
08291658 820
cc42f5f5
RS
821DEF_EXT_LIB_BUILTIN(BUILT_IN_FPUTC_UNLOCKED,
822 "__builtin_fputc_unlocked",
823 BT_FN_INT_INT_PTR,
824 ATTR_NOTHROW_NONNULL_2)
825DEF_EXT_LIB_BUILTIN(BUILT_IN_FPUTS_UNLOCKED,
826 "__builtin_fputs_unlocked",
827 BT_FN_INT_CONST_STRING_PTR,
828 ATTR_NOTHROW_NONNULL_1_2)
829DEF_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)
868b8cda
RS
833DEF_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)
b4c984fb 837
cb1072f4 838 /* ISO C99 floating point unordered comparisons. */
10841285
MM
839DEF_GCC_BUILTIN(BUILT_IN_ISGREATER,
840 "__builtin_isgreater",
c2ef6d34
RS
841 BT_FN_INT_VAR,
842 ATTR_CONST_NOTHROW_LIST)
10841285
MM
843DEF_GCC_BUILTIN(BUILT_IN_ISGREATEREQUAL,
844 "__builtin_isgreaterequal",
c2ef6d34
RS
845 BT_FN_INT_VAR,
846 ATTR_CONST_NOTHROW_LIST)
10841285
MM
847DEF_GCC_BUILTIN(BUILT_IN_ISLESS,
848 "__builtin_isless",
c2ef6d34
RS
849 BT_FN_INT_VAR,
850 ATTR_CONST_NOTHROW_LIST)
10841285
MM
851DEF_GCC_BUILTIN(BUILT_IN_ISLESSEQUAL,
852 "__builtin_islessequal",
c2ef6d34
RS
853 BT_FN_INT_VAR,
854 ATTR_CONST_NOTHROW_LIST)
10841285
MM
855DEF_GCC_BUILTIN(BUILT_IN_ISLESSGREATER,
856 "__builtin_islessgreater",
c2ef6d34
RS
857 BT_FN_INT_VAR,
858 ATTR_CONST_NOTHROW_LIST)
10841285
MM
859DEF_GCC_BUILTIN(BUILT_IN_ISUNORDERED,
860 "__builtin_isunordered",
c2ef6d34
RS
861 BT_FN_INT_VAR,
862 ATTR_CONST_NOTHROW_LIST)
10841285
MM
863
864/* Various hooks for the DWARF 2 __throw routine. */
865DEF_GCC_BUILTIN(BUILT_IN_UNWIND_INIT,
866 "__builtin_unwind_init",
c2ef6d34
RS
867 BT_FN_VOID,
868 ATTR_NULL)
10841285
MM
869DEF_GCC_BUILTIN(BUILT_IN_DWARF_CFA,
870 "__builtin_dwarf_cfa",
c2ef6d34
RS
871 BT_FN_PTR,
872 ATTR_NULL)
9c80ff25
RH
873DEF_GCC_BUILTIN(BUILT_IN_DWARF_SP_COLUMN,
874 "__builtin_dwarf_sp_column",
c2ef6d34
RS
875 BT_FN_UNSIGNED,
876 ATTR_NULL)
10841285
MM
877DEF_GCC_BUILTIN(BUILT_IN_INIT_DWARF_REG_SIZES,
878 "__builtin_init_dwarf_reg_size_table",
c2ef6d34
RS
879 BT_FN_VOID_PTR,
880 ATTR_NULL)
10841285
MM
881DEF_GCC_BUILTIN(BUILT_IN_FROB_RETURN_ADDR,
882 "__builtin_frob_return_addr",
c2ef6d34
RS
883 BT_FN_PTR_PTR,
884 ATTR_NULL)
10841285
MM
885DEF_GCC_BUILTIN(BUILT_IN_EXTRACT_RETURN_ADDR,
886 "__builtin_extract_return_addr",
c2ef6d34
RS
887 BT_FN_PTR_PTR,
888 ATTR_NULL)
10841285
MM
889DEF_GCC_BUILTIN(BUILT_IN_EH_RETURN,
890 "__builtin_eh_return",
c2ef6d34
RS
891 BT_FN_VOID_PTRMODE_PTR,
892 ATTR_NORETURN_NOTHROW_LIST)
10841285
MM
893DEF_GCC_BUILTIN(BUILT_IN_EH_RETURN_DATA_REGNO,
894 "__builtin_eh_return_data_regno",
c2ef6d34
RS
895 BT_FN_INT_INT,
896 ATTR_NULL)
10841285 897
6c535c69
ZW
898/* Variable argument list (stdarg.h) support */
899DEF_GCC_BUILTIN(BUILT_IN_VA_START,
900 "__builtin_va_start",
c2ef6d34
RS
901 BT_FN_VOID_VALIST_REF_VAR,
902 ATTR_NULL)
6c535c69 903DEF_GCC_BUILTIN(BUILT_IN_STDARG_START, /* backward compat */
10841285 904 "__builtin_stdarg_start",
c2ef6d34
RS
905 BT_FN_VOID_VALIST_REF_VAR,
906 ATTR_NULL)
10841285
MM
907DEF_GCC_BUILTIN(BUILT_IN_VA_END,
908 "__builtin_va_end",
c2ef6d34
RS
909 BT_FN_VOID_VALIST_REF,
910 ATTR_NULL)
10841285
MM
911DEF_GCC_BUILTIN(BUILT_IN_VA_COPY,
912 "__builtin_va_copy",
c2ef6d34
RS
913 BT_FN_VOID_VALIST_REF_VALIST_ARG,
914 ATTR_NULL)
6c535c69 915
10841285
MM
916DEF_GCC_BUILTIN(BUILT_IN_EXPECT,
917 "__builtin_expect",
c2ef6d34
RS
918 BT_FN_LONG_LONG_LONG,
919 ATTR_NULL)
10841285 920
df061a43 921/* Declare abort, exit, _exit and _Exit */
b052d8ee
RS
922DEF_LIB_BUILTIN(BUILT_IN_ABORT,
923 "__builtin_abort",
924 BT_FN_VOID,
925 ATTR_NORETURN_NOTHROW_LIST)
926DEF_LIB_BUILTIN(BUILT_IN_EXIT,
927 "__builtin_exit",
928 BT_FN_VOID_INT,
929 ATTR_NORETURN_NOTHROW_LIST)
930DEF_EXT_LIB_BUILTIN(BUILT_IN__EXIT,
931 "__builtin__exit",
932 BT_FN_VOID_INT,
933 ATTR_NORETURN_NOTHROW_LIST)
934DEF_C99_BUILTIN(BUILT_IN__EXIT2,
935 "__builtin__Exit",
936 BT_FN_VOID_INT,
937 ATTR_NORETURN_NOTHROW_LIST)
df061a43 938
1331d16f
RS
939/* Declare malloc, calloc and strdup. */
940DEF_LIB_BUILTIN(BUILT_IN_MALLOC,
941 "__builtin_malloc",
942 BT_FN_PTR_SIZE,
943 ATTR_MALLOC_NOTHROW_LIST)
944
945DEF_LIB_BUILTIN(BUILT_IN_CALLOC,
946 "__builtin_calloc",
947 BT_FN_PTR_SIZE_SIZE,
948 ATTR_MALLOC_NOTHROW_LIST)
949
950DEF_EXT_LIB_BUILTIN(BUILT_IN_STRDUP,
951 "__builtin_strdup",
952 BT_FN_STRING_CONST_STRING,
00362064 953 ATTR_MALLOC_NOTHROW_NONNULL_1)
1331d16f 954