builtins.def revision 90075
1/* This file contains the definitions and documentation for the 2 builtins used in the GNU compiler. 3 Copyright (C) 2000, 2001 Free Software Foundation, Inc. 4 5This file is part of GCC. 6 7GCC is free software; you can redistribute it and/or modify it under 8the terms of the GNU General Public License as published by the Free 9Software Foundation; either version 2, or (at your option) any later 10version. 11 12GCC is distributed in the hope that it will be useful, but WITHOUT ANY 13WARRANTY; without even the implied warranty of MERCHANTABILITY or 14FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 15for more details. 16 17You should have received a copy of the GNU General Public License 18along with GCC; see the file COPYING. If not, write to the Free 19Software Foundation, 59 Temple Place - Suite 330, Boston, MA 2002111-1307, USA. */ 21 22/* Before including this file, you should define a macro: 23 24 DEF_BUILTIN (ENUM, NAME, CLASS, TYPE, LIBTYPE, BOTH_P, 25 FALLBACK_P, NONANSI_P) 26 27 This macro will be called once for each builtin function. The 28 ENUM will be of type `enum built_in_function', and will indicate 29 which builtin function is being processed. The NAME of the builtin 30 function (which will always start with `__builtin_') is a string 31 literal. The CLASS is of type `enum built_in_class' and indicates 32 what kind of builtin is being processed. 33 34 Some builtins are actually two separate functions. For example, 35 for `strcmp' there are two builtin functions; `__builtin_strcmp' 36 and `strcmp' itself. Both behave identically. Other builtins 37 define only the `__builtin' variant. If BOTH_P is TRUE, then this 38 builtin has both variants; otherwise, it is has only the first 39 variant. 40 41 TYPE indicates the type of the function. The symbols correspond to 42 enumerals from builtin-types.def. If BOTH_P is true, then LIBTYPE 43 is the type of the non-`__builtin_' variant. Otherwise, LIBTYPE 44 should be ignored. 45 46 If FALLBACK_P is true then, if for some reason, the compiler cannot 47 expand the builtin function directly, it will call the 48 corresponding library function (which does not have the 49 `__builtin_' prefix. 50 51 If NONANSI_P is true, then the non-`__builtin_' variant is not an 52 ANSI/ISO library function, and so we should pretend it does not 53 exist when compiling in ANSI conformant mode. */ 54 55/* A GCC builtin (like __builtin_saveregs) is provided by the 56 compiler, but does not correspond to a function in the standard 57 library. */ 58#undef DEF_GCC_BUILTIN 59#define DEF_GCC_BUILTIN(ENUM, NAME, TYPE) \ 60 DEF_BUILTIN (ENUM, NAME, BUILT_IN_NORMAL, TYPE, BT_LAST, \ 61 false, false, false) 62 63 64/* A fallback builtin is a builtin (like __builtin_puts) that falls 65 back to the corresopnding library function if necessary -- but 66 for which we should not introduce the non-`__builtin' variant of 67 the name. */ 68#undef DEF_FALLBACK_BUILTIN 69#define DEF_FALLBACK_BUILTIN(ENUM, NAME, TYPE) \ 70 DEF_BUILTIN (ENUM, NAME, BUILT_IN_NORMAL, TYPE, TYPE, \ 71 false, true, false) 72 73/* Like DEF_FALLBACK_BUILTIN, except that the function is not one that 74 is specified by ANSI/ISO C. So, when we're being fully conformant 75 we ignore the version of these builtins that does not begin with 76 __builtin. */ 77#undef DEF_EXT_FALLBACK_BUILTIN 78#define DEF_EXT_FALLBACK_BUILTIN(ENUM, NAME, TYPE) \ 79 DEF_BUILTIN (ENUM, NAME, BUILT_IN_NORMAL, TYPE, TYPE, \ 80 false, true, true) 81 82/* A library builtin (like __builtin_strchr) is a builtin equivalent 83 of an ANSI/ISO standard library function. In addition to the 84 `__builtin' version, we will create an ordinary version (e.g, 85 `strchr') as well. If we cannot compute the answer using the 86 builtin function, we will fall back to the standard library 87 version. */ 88#undef DEF_LIB_BUILTIN 89#define DEF_LIB_BUILTIN(ENUM, NAME, TYPE) \ 90 DEF_BUILTIN (ENUM, NAME, BUILT_IN_NORMAL, TYPE, TYPE, \ 91 true, true, false) 92 93/* Like DEF_LIB_BUILTIN, except that a call to the builtin should 94 never fall back to the library version. */ 95#undef DEF_LIB_ALWAYS_BUILTIN 96#define DEF_LIB_ALWAYS_BUILTIN(ENUM, NAME, TYPE) \ 97 DEF_BUILTIN (ENUM, NAME, BUILT_IN_NORMAL, TYPE, TYPE, \ 98 true, false, true) 99 100/* Like DEF_LIB_BUILTIN, except that the function is not one that is 101 specified by ANSI/ISO C. So, when we're being fully conformant we 102 ignore the version of these builtins that does not begin with 103 __builtin. */ 104#undef DEF_EXT_LIB_BUILTIN 105#define DEF_EXT_LIB_BUILTIN(ENUM, NAME, TYPE) \ 106 DEF_BUILTIN (ENUM, NAME, BUILT_IN_NORMAL, TYPE, TYPE, \ 107 true, true, true) 108 109/* Like DEF_LIB_BUILTIN, except that the function is only a part of 110 the standard in C99 or above. */ 111#undef DEF_C99_BUILTIN 112#define DEF_C99_BUILTIN(ENUM, NAME, TYPE) \ 113 DEF_BUILTIN (ENUM, NAME, BUILT_IN_NORMAL, TYPE, TYPE, \ 114 true, !flag_isoc99, true) 115 116/* Like DEF_LIB_BUILTIN, except that the function is expanded in the 117 front-end. */ 118#undef DEF_FRONT_END_LIB_BUILTIN 119#define DEF_FRONT_END_LIB_BUILTIN(ENUM, NAME, TYPE) \ 120 DEF_BUILTIN (ENUM, NAME, BUILT_IN_FRONTEND, TYPE, TYPE, \ 121 true, true, false) 122 123/* Like DEF_FRONT_END_LIB_BUILTIN, except that the function is not one 124 that is specified by ANSI/ISO C. So, when we're being fully 125 conformant we ignore the version of these builtins that does not 126 begin with __builtin. */ 127#undef DEF_EXT_FRONT_END_LIB_BUILTIN 128#define DEF_EXT_FRONT_END_LIB_BUILTIN(ENUM, NAME, TYPE) \ 129 DEF_BUILTIN (ENUM, NAME, BUILT_IN_FRONTEND, TYPE, TYPE, \ 130 true, true, true) 131 132/* A built-in that is not currently used. */ 133#undef DEF_UNUSED_BUILTIN 134#define DEF_UNUSED_BUILTIN(X) \ 135 DEF_BUILTIN (X, (const char *) NULL, NOT_BUILT_IN, BT_LAST, \ 136 BT_LAST, false, false, false) 137 138/* If SMALL_STACK is defined, then `alloca' is only defined in its 139 `__builtin' form. */ 140#if SMALL_STACK 141DEF_FALLBACK_BUILTIN(BUILT_IN_ALLOCA, 142 "__builtin_alloca", 143 BT_FN_PTR_SIZE) 144#else 145DEF_EXT_LIB_BUILTIN(BUILT_IN_ALLOCA, 146 "__builtin_alloca", 147 BT_FN_PTR_SIZE) 148#endif 149 150DEF_LIB_ALWAYS_BUILTIN(BUILT_IN_ABS, 151 "__builtin_abs", 152 BT_FN_INT_INT) 153DEF_LIB_ALWAYS_BUILTIN(BUILT_IN_LABS, 154 "__builtin_labs", 155 BT_FN_LONG_LONG) 156 157DEF_LIB_ALWAYS_BUILTIN(BUILT_IN_FABS, 158 "__builtin_fabs", 159 BT_FN_DOUBLE_DOUBLE) 160DEF_LIB_ALWAYS_BUILTIN(BUILT_IN_FABSF, 161 "__builtin_fabsf", 162 BT_FN_FLOAT_FLOAT) 163DEF_LIB_ALWAYS_BUILTIN(BUILT_IN_FABSL, 164 "__builtin_fabsl", 165 BT_FN_LONG_DOUBLE_LONG_DOUBLE) 166 167DEF_C99_BUILTIN(BUILT_IN_LLABS, 168 "__builtin_llabs", 169 BT_FN_LONGLONG_LONGLONG) 170DEF_C99_BUILTIN(BUILT_IN_IMAXABS, 171 "__builtin_imaxabs", 172 BT_FN_INTMAX_INTMAX) 173DEF_C99_BUILTIN(BUILT_IN_CONJ, 174 "__builtin_conj", 175 BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE) 176DEF_C99_BUILTIN(BUILT_IN_CONJF, 177 "__builtin_conjf", 178 BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT) 179DEF_C99_BUILTIN(BUILT_IN_CONJL, 180 "__builtin_conjl", 181 BT_FN_COMPLEX_LONG_DOUBLE_COMPLEX_LONG_DOUBLE) 182DEF_C99_BUILTIN(BUILT_IN_CREAL, 183 "__builtin_creal", 184 BT_FN_DOUBLE_COMPLEX_DOUBLE) 185DEF_C99_BUILTIN(BUILT_IN_CREALF, 186 "__builtin_crealf", 187 BT_FN_FLOAT_COMPLEX_FLOAT) 188DEF_C99_BUILTIN(BUILT_IN_CREALL, 189 "__builtin_creall", 190 BT_FN_LONG_DOUBLE_COMPLEX_LONG_DOUBLE) 191DEF_C99_BUILTIN(BUILT_IN_CIMAG, 192 "__builtin_cimag", 193 BT_FN_DOUBLE_COMPLEX_DOUBLE) 194DEF_C99_BUILTIN(BUILT_IN_CIMAGF, 195 "__builtin_cimagf", 196 BT_FN_FLOAT_COMPLEX_FLOAT) 197DEF_C99_BUILTIN(BUILT_IN_CIMAGL, 198 "__builtin_cimagl", 199 BT_FN_LONG_DOUBLE_COMPLEX_LONG_DOUBLE) 200 201DEF_UNUSED_BUILTIN(BUILT_IN_DIV) 202DEF_UNUSED_BUILTIN(BUILT_IN_LDIV) 203DEF_UNUSED_BUILTIN(BUILT_IN_FFLOOR) 204DEF_UNUSED_BUILTIN(BUILT_IN_FCEIL) 205DEF_UNUSED_BUILTIN(BUILT_IN_FMOD) 206DEF_UNUSED_BUILTIN(BUILT_IN_FREM) 207 208/* The system prototypes for `bzero' and `bcmp' functions have many 209 variations, so don't specify parameters to avoid conflicts. The 210 expand_* functions check the argument types anyway. */ 211DEF_BUILTIN (BUILT_IN_BZERO, 212 "__builtin_bzero", 213 BUILT_IN_NORMAL, 214 BT_FN_VOID_TRAD_PTR_LEN, 215 BT_FN_VOID_VAR, 216 true, true, true) 217DEF_BUILTIN (BUILT_IN_BCMP, 218 "__builtin_bcmp", 219 BUILT_IN_NORMAL, 220 BT_FN_INT_TRAD_CONST_PTR_TRAD_CONST_PTR_LEN, 221 BT_FN_INT_VAR, 222 true, true, true) 223 224DEF_EXT_LIB_BUILTIN(BUILT_IN_FFS, 225 "__builtin_ffs", 226 BT_FN_INT_INT) 227DEF_EXT_LIB_BUILTIN(BUILT_IN_INDEX, 228 "__builtin_index", 229 BT_FN_STRING_CONST_STRING_INT) 230DEF_EXT_LIB_BUILTIN(BUILT_IN_RINDEX, 231 "__builtin_rindex", 232 BT_FN_STRING_CONST_STRING_INT) 233 234DEF_LIB_BUILTIN(BUILT_IN_MEMCPY, 235 "__builtin_memcpy", 236 BT_FN_TRAD_PTR_PTR_CONST_PTR_SIZE) 237DEF_LIB_BUILTIN(BUILT_IN_MEMCMP, 238 "__builtin_memcmp", 239 BT_FN_INT_CONST_PTR_CONST_PTR_SIZE) 240DEF_LIB_BUILTIN(BUILT_IN_MEMSET, 241 "__builtin_memset", 242 BT_FN_TRAD_PTR_PTR_INT_SIZE) 243 244DEF_LIB_BUILTIN(BUILT_IN_STRCAT, 245 "__builtin_strcat", 246 BT_FN_STRING_STRING_CONST_STRING) 247DEF_LIB_BUILTIN(BUILT_IN_STRNCAT, 248 "__builtin_strncat", 249 BT_FN_STRING_STRING_CONST_STRING_SIZE) 250DEF_LIB_BUILTIN(BUILT_IN_STRCPY, 251 "__builtin_strcpy", 252 BT_FN_STRING_STRING_CONST_STRING) 253DEF_LIB_BUILTIN(BUILT_IN_STRNCPY, 254 "__builtin_strncpy", 255 BT_FN_STRING_STRING_CONST_STRING_SIZE) 256DEF_LIB_BUILTIN(BUILT_IN_STRCMP, 257 "__builtin_strcmp", 258 BT_FN_INT_CONST_STRING_CONST_STRING) 259DEF_LIB_BUILTIN(BUILT_IN_STRNCMP, 260 "__builtin_strncmp", 261 BT_FN_INT_CONST_STRING_CONST_STRING_SIZE) 262DEF_LIB_BUILTIN(BUILT_IN_STRLEN, 263 "__builtin_strlen", 264 BT_FN_LEN_CONST_STRING) 265DEF_LIB_BUILTIN(BUILT_IN_STRSTR, 266 "__builtin_strstr", 267 BT_FN_STRING_CONST_STRING_CONST_STRING) 268DEF_LIB_BUILTIN(BUILT_IN_STRPBRK, 269 "__builtin_strpbrk", 270 BT_FN_STRING_CONST_STRING_CONST_STRING) 271DEF_LIB_BUILTIN(BUILT_IN_STRSPN, 272 "__builtin_strspn", 273 BT_FN_SIZE_CONST_STRING_CONST_STRING) 274DEF_LIB_BUILTIN(BUILT_IN_STRCSPN, 275 "__builtin_strcspn", 276 BT_FN_SIZE_CONST_STRING_CONST_STRING) 277DEF_LIB_BUILTIN(BUILT_IN_STRCHR, 278 "__builtin_strchr", 279 BT_FN_STRING_CONST_STRING_INT) 280DEF_LIB_BUILTIN(BUILT_IN_STRRCHR, 281 "__builtin_strrchr", 282 BT_FN_STRING_CONST_STRING_INT) 283 284DEF_LIB_BUILTIN(BUILT_IN_SQRT, 285 "__builtin_sqrt", 286 BT_FN_DOUBLE_DOUBLE) 287DEF_LIB_BUILTIN(BUILT_IN_SIN, 288 "__builtin_sin", 289 BT_FN_DOUBLE_DOUBLE) 290DEF_LIB_BUILTIN(BUILT_IN_COS, 291 "__builtin_cos", 292 BT_FN_DOUBLE_DOUBLE) 293DEF_LIB_BUILTIN(BUILT_IN_SQRTF, 294 "__builtin_sqrtf", 295 BT_FN_FLOAT_FLOAT) 296DEF_LIB_BUILTIN(BUILT_IN_SINF, 297 "__builtin_sinf", 298 BT_FN_FLOAT_FLOAT) 299DEF_LIB_BUILTIN(BUILT_IN_COSF, 300 "__builtin_cosf", 301 BT_FN_FLOAT_FLOAT) 302DEF_LIB_BUILTIN(BUILT_IN_SQRTL, 303 "__builtin_sqrtl", 304 BT_FN_LONG_DOUBLE_LONG_DOUBLE) 305DEF_LIB_BUILTIN(BUILT_IN_SINL, 306 "__builtin_sinl", 307 BT_FN_LONG_DOUBLE_LONG_DOUBLE) 308DEF_LIB_BUILTIN(BUILT_IN_COSL, 309 "__builtin_cosl", 310 BT_FN_LONG_DOUBLE_LONG_DOUBLE) 311 312DEF_UNUSED_BUILTIN(BUILT_IN_GETEXP) 313DEF_UNUSED_BUILTIN(BUILT_IN_GETMAN) 314 315DEF_GCC_BUILTIN(BUILT_IN_SAVEREGS, 316 "__builtin_saveregs", 317 BT_FN_PTR_VAR) 318DEF_GCC_BUILTIN(BUILT_IN_CLASSIFY_TYPE, 319 "__builtin_classify_type", 320 BT_FN_INT_VAR) 321DEF_GCC_BUILTIN(BUILT_IN_NEXT_ARG, 322 "__builtin_next_arg", 323 BT_FN_PTR_VAR) 324DEF_GCC_BUILTIN(BUILT_IN_ARGS_INFO, 325 "__builtin_args_info", 326 BT_FN_INT_INT) 327DEF_GCC_BUILTIN(BUILT_IN_CONSTANT_P, 328 "__builtin_constant_p", 329 BT_FN_INT_VAR) 330DEF_GCC_BUILTIN(BUILT_IN_FRAME_ADDRESS, 331 "__builtin_frame_address", 332 BT_FN_PTR_UNSIGNED) 333DEF_GCC_BUILTIN(BUILT_IN_RETURN_ADDRESS, 334 "__builtin_return_address", 335 BT_FN_PTR_UNSIGNED) 336DEF_GCC_BUILTIN(BUILT_IN_AGGREGATE_INCOMING_ADDRESS, 337 "__builtin_aggregate_incoming_address", 338 BT_FN_PTR_VAR) 339DEF_GCC_BUILTIN(BUILT_IN_APPLY_ARGS, 340 "__builtin_apply_args", 341 BT_FN_PTR_VAR) 342DEF_GCC_BUILTIN(BUILT_IN_APPLY, 343 "__builtin_apply", 344 BT_FN_PTR_PTR_FN_VOID_VAR_PTR_SIZE) 345DEF_GCC_BUILTIN(BUILT_IN_RETURN, 346 "__builtin_return", 347 BT_FN_VOID_PTR) 348DEF_GCC_BUILTIN(BUILT_IN_SETJMP, 349 "__builtin_setjmp", 350 BT_FN_INT_PTR) 351DEF_GCC_BUILTIN(BUILT_IN_LONGJMP, 352 "__builtin_longjmp", 353 BT_FN_VOID_PTR_INT) 354DEF_GCC_BUILTIN(BUILT_IN_TRAP, 355 "__builtin_trap", 356 BT_FN_VOID) 357DEF_GCC_BUILTIN(BUILT_IN_PREFETCH, 358 "__builtin_prefetch", 359 BT_FN_VOID_CONST_PTR_VAR) 360 361/* Stdio builtins. */ 362DEF_FALLBACK_BUILTIN(BUILT_IN_PUTCHAR, 363 "__builtin_putchar", 364 BT_FN_INT_INT) 365DEF_FALLBACK_BUILTIN(BUILT_IN_PUTS, 366 "__builtin_puts", 367 BT_FN_INT_CONST_STRING) 368DEF_FRONT_END_LIB_BUILTIN(BUILT_IN_PRINTF, 369 "__builtin_printf", 370 BT_FN_INT_CONST_STRING_VAR) 371DEF_FALLBACK_BUILTIN(BUILT_IN_FPUTC, 372 "__builtin_fputc", 373 BT_FN_INT_INT_PTR) 374/* Declare the __builtin_ style with arguments and the regular style 375 without them. We rely on stdio.h to supply the arguments for the 376 regular style declaration since we had to use void* instead of 377 FILE* in the __builtin_ prototype supplied here. */ 378DEF_BUILTIN (BUILT_IN_FPUTS, 379 "__builtin_fputs", 380 BUILT_IN_NORMAL, 381 BT_FN_INT_CONST_STRING_PTR, 382 BT_FN_INT_VAR, 383 true, true, false) 384DEF_FALLBACK_BUILTIN(BUILT_IN_FWRITE, 385 "__builtin_fwrite", 386 BT_FN_SIZE_CONST_PTR_SIZE_SIZE_PTR) 387DEF_FRONT_END_LIB_BUILTIN(BUILT_IN_FPRINTF, 388 "__builtin_fprintf", 389 BT_FN_INT_PTR_CONST_STRING_VAR) 390 391/* Stdio unlocked builtins. */ 392 393DEF_EXT_FALLBACK_BUILTIN(BUILT_IN_PUTCHAR_UNLOCKED, 394 "__builtin_putchar_unlocked", 395 BT_FN_INT_INT) 396DEF_EXT_FALLBACK_BUILTIN(BUILT_IN_PUTS_UNLOCKED, 397 "__builtin_puts_unlocked", 398 BT_FN_INT_CONST_STRING) 399DEF_EXT_FRONT_END_LIB_BUILTIN(BUILT_IN_PRINTF_UNLOCKED, 400 "__builtin_printf_unlocked", 401 BT_FN_INT_CONST_STRING_VAR) 402DEF_EXT_FALLBACK_BUILTIN(BUILT_IN_FPUTC_UNLOCKED, 403 "__builtin_fputc_unlocked", 404 BT_FN_INT_INT_PTR) 405/* Declare the __builtin_ style with arguments and the regular style 406 without them. We rely on stdio.h to supply the arguments for the 407 regular style declaration since we had to use void* instead of 408 FILE* in the __builtin_ prototype supplied here. */ 409DEF_BUILTIN (BUILT_IN_FPUTS_UNLOCKED, 410 "__builtin_fputs_unlocked", 411 BUILT_IN_NORMAL, 412 BT_FN_INT_CONST_STRING_PTR, 413 BT_FN_INT_VAR, 414 true, true, true) 415DEF_EXT_FALLBACK_BUILTIN(BUILT_IN_FWRITE_UNLOCKED, 416 "__builtin_fwrite_unlocked", 417 BT_FN_SIZE_CONST_PTR_SIZE_SIZE_PTR) 418DEF_EXT_FRONT_END_LIB_BUILTIN(BUILT_IN_FPRINTF_UNLOCKED, 419 "__builtin_fprintf_unlocked", 420 BT_FN_INT_PTR_CONST_STRING_VAR) 421 422 /* ISO C99 floating point unordered comparisons. */ 423DEF_GCC_BUILTIN(BUILT_IN_ISGREATER, 424 "__builtin_isgreater", 425 BT_FN_INT_VAR) 426DEF_GCC_BUILTIN(BUILT_IN_ISGREATEREQUAL, 427 "__builtin_isgreaterequal", 428 BT_FN_INT_VAR) 429DEF_GCC_BUILTIN(BUILT_IN_ISLESS, 430 "__builtin_isless", 431 BT_FN_INT_VAR) 432DEF_GCC_BUILTIN(BUILT_IN_ISLESSEQUAL, 433 "__builtin_islessequal", 434 BT_FN_INT_VAR) 435DEF_GCC_BUILTIN(BUILT_IN_ISLESSGREATER, 436 "__builtin_islessgreater", 437 BT_FN_INT_VAR) 438DEF_GCC_BUILTIN(BUILT_IN_ISUNORDERED, 439 "__builtin_isunordered", 440 BT_FN_INT_VAR) 441 442/* Various hooks for the DWARF 2 __throw routine. */ 443DEF_GCC_BUILTIN(BUILT_IN_UNWIND_INIT, 444 "__builtin_unwind_init", 445 BT_FN_VOID) 446DEF_GCC_BUILTIN(BUILT_IN_DWARF_CFA, 447 "__builtin_dwarf_cfa", 448 BT_FN_PTR) 449DEF_GCC_BUILTIN(BUILT_IN_DWARF_FP_REGNUM, 450 "__builtin_dwarf_fp_regnum", 451 BT_FN_UNSIGNED) 452DEF_GCC_BUILTIN(BUILT_IN_INIT_DWARF_REG_SIZES, 453 "__builtin_init_dwarf_reg_size_table", 454 BT_FN_VOID_PTR) 455DEF_GCC_BUILTIN(BUILT_IN_FROB_RETURN_ADDR, 456 "__builtin_frob_return_addr", 457 BT_FN_PTR_PTR) 458DEF_GCC_BUILTIN(BUILT_IN_EXTRACT_RETURN_ADDR, 459 "__builtin_extract_return_addr", 460 BT_FN_PTR_PTR) 461DEF_GCC_BUILTIN(BUILT_IN_EH_RETURN, 462 "__builtin_eh_return", 463 BT_FN_VOID_PTRMODE_PTR) 464DEF_GCC_BUILTIN(BUILT_IN_EH_RETURN_DATA_REGNO, 465 "__builtin_eh_return_data_regno", 466 BT_FN_INT_INT) 467 468DEF_GCC_BUILTIN(BUILT_IN_VARARGS_START, 469 "__builtin_varargs_start", 470 BT_FN_VOID_VALIST_REF) 471DEF_GCC_BUILTIN(BUILT_IN_STDARG_START, 472 "__builtin_stdarg_start", 473 BT_FN_VOID_VALIST_REF_VAR) 474DEF_GCC_BUILTIN(BUILT_IN_VA_END, 475 "__builtin_va_end", 476 BT_FN_VOID_VALIST_REF) 477DEF_GCC_BUILTIN(BUILT_IN_VA_COPY, 478 "__builtin_va_copy", 479 BT_FN_VOID_VALIST_REF_VALIST_ARG) 480DEF_GCC_BUILTIN(BUILT_IN_EXPECT, 481 "__builtin_expect", 482 BT_FN_LONG_LONG_LONG) 483 484/* C++ extensions */ 485DEF_UNUSED_BUILTIN(BUILT_IN_NEW) 486DEF_UNUSED_BUILTIN(BUILT_IN_VEC_NEW) 487DEF_UNUSED_BUILTIN(BUILT_IN_DELETE) 488DEF_UNUSED_BUILTIN(BUILT_IN_VEC_DELETE) 489