diff options
author | obrien <obrien@FreeBSD.org> | 2002-02-01 18:16:02 +0000 |
---|---|---|
committer | obrien <obrien@FreeBSD.org> | 2002-02-01 18:16:02 +0000 |
commit | c9ab9ae440a8066b2c2b85b157b1fdadcf09916a (patch) | |
tree | 086d9d6c8fbd4fc8fe4495059332f66bc0f8d12b /contrib/gcc/builtins.def | |
parent | 2ecfd8bd04b63f335c1ec6295740a4bfd97a4fa6 (diff) | |
download | FreeBSD-src-c9ab9ae440a8066b2c2b85b157b1fdadcf09916a.zip FreeBSD-src-c9ab9ae440a8066b2c2b85b157b1fdadcf09916a.tar.gz |
Enlist the FreeBSD-CURRENT users as testers of what is to become Gcc 3.1.0.
These bits are taken from the FSF anoncvs repo on 1-Feb-2002 08:20 PST.
Diffstat (limited to 'contrib/gcc/builtins.def')
-rw-r--r-- | contrib/gcc/builtins.def | 488 |
1 files changed, 488 insertions, 0 deletions
diff --git a/contrib/gcc/builtins.def b/contrib/gcc/builtins.def new file mode 100644 index 0000000..c6f6dc4 --- /dev/null +++ b/contrib/gcc/builtins.def @@ -0,0 +1,488 @@ +/* This file contains the definitions and documentation for the + builtins used in the GNU compiler. + Copyright (C) 2000, 2001 Free Software Foundation, Inc. + +This file is part of GCC. + +GCC is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 2, or (at your option) any later +version. + +GCC is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +You should have received a copy of the GNU General Public License +along with GCC; see the file COPYING. If not, write to the Free +Software Foundation, 59 Temple Place - Suite 330, Boston, MA +02111-1307, USA. */ + +/* Before including this file, you should define a macro: + + DEF_BUILTIN (ENUM, NAME, CLASS, TYPE, LIBTYPE, BOTH_P, + FALLBACK_P, NONANSI_P) + + This macro will be called once for each builtin function. The + ENUM will be of type `enum built_in_function', and will indicate + which builtin function is being processed. The NAME of the builtin + function (which will always start with `__builtin_') is a string + literal. The CLASS is of type `enum built_in_class' and indicates + what kind of builtin is being processed. + + Some builtins are actually two separate functions. For example, + for `strcmp' there are two builtin functions; `__builtin_strcmp' + and `strcmp' itself. Both behave identically. Other builtins + define only the `__builtin' variant. If BOTH_P is TRUE, then this + builtin has both variants; otherwise, it is has only the first + variant. + + TYPE indicates the type of the function. The symbols correspond to + enumerals from builtin-types.def. If BOTH_P is true, then LIBTYPE + is the type of the non-`__builtin_' variant. Otherwise, LIBTYPE + should be ignored. + + If FALLBACK_P is true then, if for some reason, the compiler cannot + expand the builtin function directly, it will call the + corresponding library function (which does not have the + `__builtin_' prefix. + + If NONANSI_P is true, then the non-`__builtin_' variant is not an + ANSI/ISO library function, and so we should pretend it does not + exist when compiling in ANSI conformant mode. */ + +/* A GCC builtin (like __builtin_saveregs) is provided by the + compiler, but does not correspond to a function in the standard + library. */ +#undef DEF_GCC_BUILTIN +#define DEF_GCC_BUILTIN(ENUM, NAME, TYPE) \ + DEF_BUILTIN (ENUM, NAME, BUILT_IN_NORMAL, TYPE, BT_LAST, \ + false, false, false) + + +/* A fallback builtin is a builtin (like __builtin_puts) that falls + back to the corresopnding library function if necessary -- but + for which we should not introduce the non-`__builtin' variant of + the name. */ +#undef DEF_FALLBACK_BUILTIN +#define DEF_FALLBACK_BUILTIN(ENUM, NAME, TYPE) \ + DEF_BUILTIN (ENUM, NAME, BUILT_IN_NORMAL, TYPE, TYPE, \ + false, true, false) + +/* Like DEF_FALLBACK_BUILTIN, except that the function is not one that + is specified by ANSI/ISO C. So, when we're being fully conformant + we ignore the version of these builtins that does not begin with + __builtin. */ +#undef DEF_EXT_FALLBACK_BUILTIN +#define DEF_EXT_FALLBACK_BUILTIN(ENUM, NAME, TYPE) \ + DEF_BUILTIN (ENUM, NAME, BUILT_IN_NORMAL, TYPE, TYPE, \ + false, true, true) + +/* A library builtin (like __builtin_strchr) is a builtin equivalent + of an ANSI/ISO standard library function. In addition to the + `__builtin' version, we will create an ordinary version (e.g, + `strchr') as well. If we cannot compute the answer using the + builtin function, we will fall back to the standard library + version. */ +#undef DEF_LIB_BUILTIN +#define DEF_LIB_BUILTIN(ENUM, NAME, TYPE) \ + DEF_BUILTIN (ENUM, NAME, BUILT_IN_NORMAL, TYPE, TYPE, \ + true, true, false) + +/* Like DEF_LIB_BUILTIN, except that a call to the builtin should + never fall back to the library version. */ +#undef DEF_LIB_ALWAYS_BUILTIN +#define DEF_LIB_ALWAYS_BUILTIN(ENUM, NAME, TYPE) \ + DEF_BUILTIN (ENUM, NAME, BUILT_IN_NORMAL, TYPE, TYPE, \ + true, false, true) + +/* Like DEF_LIB_BUILTIN, except that the function is not one that is + specified by ANSI/ISO C. So, when we're being fully conformant we + ignore the version of these builtins that does not begin with + __builtin. */ +#undef DEF_EXT_LIB_BUILTIN +#define DEF_EXT_LIB_BUILTIN(ENUM, NAME, TYPE) \ + DEF_BUILTIN (ENUM, NAME, BUILT_IN_NORMAL, TYPE, TYPE, \ + true, true, true) + +/* Like DEF_LIB_BUILTIN, except that the function is only a part of + the standard in C99 or above. */ +#undef DEF_C99_BUILTIN +#define DEF_C99_BUILTIN(ENUM, NAME, TYPE) \ + DEF_BUILTIN (ENUM, NAME, BUILT_IN_NORMAL, TYPE, TYPE, \ + true, !flag_isoc99, true) + +/* Like DEF_LIB_BUILTIN, except that the function is expanded in the + front-end. */ +#undef DEF_FRONT_END_LIB_BUILTIN +#define DEF_FRONT_END_LIB_BUILTIN(ENUM, NAME, TYPE) \ + DEF_BUILTIN (ENUM, NAME, BUILT_IN_FRONTEND, TYPE, TYPE, \ + true, true, false) + +/* Like DEF_FRONT_END_LIB_BUILTIN, except that the function is not one + that is specified by ANSI/ISO C. So, when we're being fully + conformant we ignore the version of these builtins that does not + begin with __builtin. */ +#undef DEF_EXT_FRONT_END_LIB_BUILTIN +#define DEF_EXT_FRONT_END_LIB_BUILTIN(ENUM, NAME, TYPE) \ + DEF_BUILTIN (ENUM, NAME, BUILT_IN_FRONTEND, TYPE, TYPE, \ + true, true, true) + +/* A built-in that is not currently used. */ +#undef DEF_UNUSED_BUILTIN +#define DEF_UNUSED_BUILTIN(X) \ + DEF_BUILTIN (X, (const char *) NULL, NOT_BUILT_IN, BT_LAST, \ + BT_LAST, false, false, false) + +/* If SMALL_STACK is defined, then `alloca' is only defined in its + `__builtin' form. */ +#if SMALL_STACK +DEF_FALLBACK_BUILTIN(BUILT_IN_ALLOCA, + "__builtin_alloca", + BT_FN_PTR_SIZE) +#else +DEF_EXT_LIB_BUILTIN(BUILT_IN_ALLOCA, + "__builtin_alloca", + BT_FN_PTR_SIZE) +#endif + +DEF_LIB_ALWAYS_BUILTIN(BUILT_IN_ABS, + "__builtin_abs", + BT_FN_INT_INT) +DEF_LIB_ALWAYS_BUILTIN(BUILT_IN_LABS, + "__builtin_labs", + BT_FN_LONG_LONG) + +DEF_LIB_ALWAYS_BUILTIN(BUILT_IN_FABS, + "__builtin_fabs", + BT_FN_DOUBLE_DOUBLE) +DEF_LIB_ALWAYS_BUILTIN(BUILT_IN_FABSF, + "__builtin_fabsf", + BT_FN_FLOAT_FLOAT) +DEF_LIB_ALWAYS_BUILTIN(BUILT_IN_FABSL, + "__builtin_fabsl", + BT_FN_LONG_DOUBLE_LONG_DOUBLE) + +DEF_C99_BUILTIN(BUILT_IN_LLABS, + "__builtin_llabs", + BT_FN_LONGLONG_LONGLONG) +DEF_C99_BUILTIN(BUILT_IN_IMAXABS, + "__builtin_imaxabs", + BT_FN_INTMAX_INTMAX) +DEF_C99_BUILTIN(BUILT_IN_CONJ, + "__builtin_conj", + BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE) +DEF_C99_BUILTIN(BUILT_IN_CONJF, + "__builtin_conjf", + BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT) +DEF_C99_BUILTIN(BUILT_IN_CONJL, + "__builtin_conjl", + BT_FN_COMPLEX_LONG_DOUBLE_COMPLEX_LONG_DOUBLE) +DEF_C99_BUILTIN(BUILT_IN_CREAL, + "__builtin_creal", + BT_FN_DOUBLE_COMPLEX_DOUBLE) +DEF_C99_BUILTIN(BUILT_IN_CREALF, + "__builtin_crealf", + BT_FN_FLOAT_COMPLEX_FLOAT) +DEF_C99_BUILTIN(BUILT_IN_CREALL, + "__builtin_creall", + BT_FN_LONG_DOUBLE_COMPLEX_LONG_DOUBLE) +DEF_C99_BUILTIN(BUILT_IN_CIMAG, + "__builtin_cimag", + BT_FN_DOUBLE_COMPLEX_DOUBLE) +DEF_C99_BUILTIN(BUILT_IN_CIMAGF, + "__builtin_cimagf", + BT_FN_FLOAT_COMPLEX_FLOAT) +DEF_C99_BUILTIN(BUILT_IN_CIMAGL, + "__builtin_cimagl", + BT_FN_LONG_DOUBLE_COMPLEX_LONG_DOUBLE) + +DEF_UNUSED_BUILTIN(BUILT_IN_DIV) +DEF_UNUSED_BUILTIN(BUILT_IN_LDIV) +DEF_UNUSED_BUILTIN(BUILT_IN_FFLOOR) +DEF_UNUSED_BUILTIN(BUILT_IN_FCEIL) +DEF_UNUSED_BUILTIN(BUILT_IN_FMOD) +DEF_UNUSED_BUILTIN(BUILT_IN_FREM) + +/* The system prototypes for `bzero' and `bcmp' functions have many + variations, so don't specify parameters to avoid conflicts. The + expand_* functions check the argument types anyway. */ +DEF_BUILTIN (BUILT_IN_BZERO, + "__builtin_bzero", + BUILT_IN_NORMAL, + BT_FN_VOID_TRAD_PTR_LEN, + BT_FN_VOID_VAR, + true, true, true) +DEF_BUILTIN (BUILT_IN_BCMP, + "__builtin_bcmp", + BUILT_IN_NORMAL, + BT_FN_INT_TRAD_CONST_PTR_TRAD_CONST_PTR_LEN, + BT_FN_INT_VAR, + true, true, true) + +DEF_EXT_LIB_BUILTIN(BUILT_IN_FFS, + "__builtin_ffs", + BT_FN_INT_INT) +DEF_EXT_LIB_BUILTIN(BUILT_IN_INDEX, + "__builtin_index", + BT_FN_STRING_CONST_STRING_INT) +DEF_EXT_LIB_BUILTIN(BUILT_IN_RINDEX, + "__builtin_rindex", + BT_FN_STRING_CONST_STRING_INT) + +DEF_LIB_BUILTIN(BUILT_IN_MEMCPY, + "__builtin_memcpy", + BT_FN_TRAD_PTR_PTR_CONST_PTR_SIZE) +DEF_LIB_BUILTIN(BUILT_IN_MEMCMP, + "__builtin_memcmp", + BT_FN_INT_CONST_PTR_CONST_PTR_SIZE) +DEF_LIB_BUILTIN(BUILT_IN_MEMSET, + "__builtin_memset", + BT_FN_TRAD_PTR_PTR_INT_SIZE) + +DEF_LIB_BUILTIN(BUILT_IN_STRCAT, + "__builtin_strcat", + BT_FN_STRING_STRING_CONST_STRING) +DEF_LIB_BUILTIN(BUILT_IN_STRNCAT, + "__builtin_strncat", + BT_FN_STRING_STRING_CONST_STRING_SIZE) +DEF_LIB_BUILTIN(BUILT_IN_STRCPY, + "__builtin_strcpy", + BT_FN_STRING_STRING_CONST_STRING) +DEF_LIB_BUILTIN(BUILT_IN_STRNCPY, + "__builtin_strncpy", + BT_FN_STRING_STRING_CONST_STRING_SIZE) +DEF_LIB_BUILTIN(BUILT_IN_STRCMP, + "__builtin_strcmp", + BT_FN_INT_CONST_STRING_CONST_STRING) +DEF_LIB_BUILTIN(BUILT_IN_STRNCMP, + "__builtin_strncmp", + BT_FN_INT_CONST_STRING_CONST_STRING_SIZE) +DEF_LIB_BUILTIN(BUILT_IN_STRLEN, + "__builtin_strlen", + BT_FN_LEN_CONST_STRING) +DEF_LIB_BUILTIN(BUILT_IN_STRSTR, + "__builtin_strstr", + BT_FN_STRING_CONST_STRING_CONST_STRING) +DEF_LIB_BUILTIN(BUILT_IN_STRPBRK, + "__builtin_strpbrk", + BT_FN_STRING_CONST_STRING_CONST_STRING) +DEF_LIB_BUILTIN(BUILT_IN_STRSPN, + "__builtin_strspn", + BT_FN_SIZE_CONST_STRING_CONST_STRING) +DEF_LIB_BUILTIN(BUILT_IN_STRCSPN, + "__builtin_strcspn", + BT_FN_SIZE_CONST_STRING_CONST_STRING) +DEF_LIB_BUILTIN(BUILT_IN_STRCHR, + "__builtin_strchr", + BT_FN_STRING_CONST_STRING_INT) +DEF_LIB_BUILTIN(BUILT_IN_STRRCHR, + "__builtin_strrchr", + BT_FN_STRING_CONST_STRING_INT) + +DEF_LIB_BUILTIN(BUILT_IN_SQRT, + "__builtin_sqrt", + BT_FN_DOUBLE_DOUBLE) +DEF_LIB_BUILTIN(BUILT_IN_SIN, + "__builtin_sin", + BT_FN_DOUBLE_DOUBLE) +DEF_LIB_BUILTIN(BUILT_IN_COS, + "__builtin_cos", + BT_FN_DOUBLE_DOUBLE) +DEF_LIB_BUILTIN(BUILT_IN_SQRTF, + "__builtin_sqrtf", + BT_FN_FLOAT_FLOAT) +DEF_LIB_BUILTIN(BUILT_IN_SINF, + "__builtin_sinf", + BT_FN_FLOAT_FLOAT) +DEF_LIB_BUILTIN(BUILT_IN_COSF, + "__builtin_cosf", + BT_FN_FLOAT_FLOAT) +DEF_LIB_BUILTIN(BUILT_IN_SQRTL, + "__builtin_sqrtl", + BT_FN_LONG_DOUBLE_LONG_DOUBLE) +DEF_LIB_BUILTIN(BUILT_IN_SINL, + "__builtin_sinl", + BT_FN_LONG_DOUBLE_LONG_DOUBLE) +DEF_LIB_BUILTIN(BUILT_IN_COSL, + "__builtin_cosl", + BT_FN_LONG_DOUBLE_LONG_DOUBLE) + +DEF_UNUSED_BUILTIN(BUILT_IN_GETEXP) +DEF_UNUSED_BUILTIN(BUILT_IN_GETMAN) + +DEF_GCC_BUILTIN(BUILT_IN_SAVEREGS, + "__builtin_saveregs", + BT_FN_PTR_VAR) +DEF_GCC_BUILTIN(BUILT_IN_CLASSIFY_TYPE, + "__builtin_classify_type", + BT_FN_INT_VAR) +DEF_GCC_BUILTIN(BUILT_IN_NEXT_ARG, + "__builtin_next_arg", + BT_FN_PTR_VAR) +DEF_GCC_BUILTIN(BUILT_IN_ARGS_INFO, + "__builtin_args_info", + BT_FN_INT_INT) +DEF_GCC_BUILTIN(BUILT_IN_CONSTANT_P, + "__builtin_constant_p", + BT_FN_INT_VAR) +DEF_GCC_BUILTIN(BUILT_IN_FRAME_ADDRESS, + "__builtin_frame_address", + BT_FN_PTR_UNSIGNED) +DEF_GCC_BUILTIN(BUILT_IN_RETURN_ADDRESS, + "__builtin_return_address", + BT_FN_PTR_UNSIGNED) +DEF_GCC_BUILTIN(BUILT_IN_AGGREGATE_INCOMING_ADDRESS, + "__builtin_aggregate_incoming_address", + BT_FN_PTR_VAR) +DEF_GCC_BUILTIN(BUILT_IN_APPLY_ARGS, + "__builtin_apply_args", + BT_FN_PTR_VAR) +DEF_GCC_BUILTIN(BUILT_IN_APPLY, + "__builtin_apply", + BT_FN_PTR_PTR_FN_VOID_VAR_PTR_SIZE) +DEF_GCC_BUILTIN(BUILT_IN_RETURN, + "__builtin_return", + BT_FN_VOID_PTR) +DEF_GCC_BUILTIN(BUILT_IN_SETJMP, + "__builtin_setjmp", + BT_FN_INT_PTR) +DEF_GCC_BUILTIN(BUILT_IN_LONGJMP, + "__builtin_longjmp", + BT_FN_VOID_PTR_INT) +DEF_GCC_BUILTIN(BUILT_IN_TRAP, + "__builtin_trap", + BT_FN_VOID) +DEF_GCC_BUILTIN(BUILT_IN_PREFETCH, + "__builtin_prefetch", + BT_FN_VOID_CONST_PTR_VAR) + +/* Stdio builtins. */ +DEF_FALLBACK_BUILTIN(BUILT_IN_PUTCHAR, + "__builtin_putchar", + BT_FN_INT_INT) +DEF_FALLBACK_BUILTIN(BUILT_IN_PUTS, + "__builtin_puts", + BT_FN_INT_CONST_STRING) +DEF_FRONT_END_LIB_BUILTIN(BUILT_IN_PRINTF, + "__builtin_printf", + BT_FN_INT_CONST_STRING_VAR) +DEF_FALLBACK_BUILTIN(BUILT_IN_FPUTC, + "__builtin_fputc", + BT_FN_INT_INT_PTR) +/* Declare the __builtin_ style with arguments and the regular style + without them. We rely on stdio.h to supply the arguments for the + regular style declaration since we had to use void* instead of + FILE* in the __builtin_ prototype supplied here. */ +DEF_BUILTIN (BUILT_IN_FPUTS, + "__builtin_fputs", + BUILT_IN_NORMAL, + BT_FN_INT_CONST_STRING_PTR, + BT_FN_INT_VAR, + true, true, false) +DEF_FALLBACK_BUILTIN(BUILT_IN_FWRITE, + "__builtin_fwrite", + BT_FN_SIZE_CONST_PTR_SIZE_SIZE_PTR) +DEF_FRONT_END_LIB_BUILTIN(BUILT_IN_FPRINTF, + "__builtin_fprintf", + BT_FN_INT_PTR_CONST_STRING_VAR) + +/* Stdio unlocked builtins. */ + +DEF_EXT_FALLBACK_BUILTIN(BUILT_IN_PUTCHAR_UNLOCKED, + "__builtin_putchar_unlocked", + BT_FN_INT_INT) +DEF_EXT_FALLBACK_BUILTIN(BUILT_IN_PUTS_UNLOCKED, + "__builtin_puts_unlocked", + BT_FN_INT_CONST_STRING) +DEF_EXT_FRONT_END_LIB_BUILTIN(BUILT_IN_PRINTF_UNLOCKED, + "__builtin_printf_unlocked", + BT_FN_INT_CONST_STRING_VAR) +DEF_EXT_FALLBACK_BUILTIN(BUILT_IN_FPUTC_UNLOCKED, + "__builtin_fputc_unlocked", + BT_FN_INT_INT_PTR) +/* Declare the __builtin_ style with arguments and the regular style + without them. We rely on stdio.h to supply the arguments for the + regular style declaration since we had to use void* instead of + FILE* in the __builtin_ prototype supplied here. */ +DEF_BUILTIN (BUILT_IN_FPUTS_UNLOCKED, + "__builtin_fputs_unlocked", + BUILT_IN_NORMAL, + BT_FN_INT_CONST_STRING_PTR, + BT_FN_INT_VAR, + true, true, true) +DEF_EXT_FALLBACK_BUILTIN(BUILT_IN_FWRITE_UNLOCKED, + "__builtin_fwrite_unlocked", + BT_FN_SIZE_CONST_PTR_SIZE_SIZE_PTR) +DEF_EXT_FRONT_END_LIB_BUILTIN(BUILT_IN_FPRINTF_UNLOCKED, + "__builtin_fprintf_unlocked", + BT_FN_INT_PTR_CONST_STRING_VAR) + + /* ISO C99 floating point unordered comparisons. */ +DEF_GCC_BUILTIN(BUILT_IN_ISGREATER, + "__builtin_isgreater", + BT_FN_INT_VAR) +DEF_GCC_BUILTIN(BUILT_IN_ISGREATEREQUAL, + "__builtin_isgreaterequal", + BT_FN_INT_VAR) +DEF_GCC_BUILTIN(BUILT_IN_ISLESS, + "__builtin_isless", + BT_FN_INT_VAR) +DEF_GCC_BUILTIN(BUILT_IN_ISLESSEQUAL, + "__builtin_islessequal", + BT_FN_INT_VAR) +DEF_GCC_BUILTIN(BUILT_IN_ISLESSGREATER, + "__builtin_islessgreater", + BT_FN_INT_VAR) +DEF_GCC_BUILTIN(BUILT_IN_ISUNORDERED, + "__builtin_isunordered", + BT_FN_INT_VAR) + +/* Various hooks for the DWARF 2 __throw routine. */ +DEF_GCC_BUILTIN(BUILT_IN_UNWIND_INIT, + "__builtin_unwind_init", + BT_FN_VOID) +DEF_GCC_BUILTIN(BUILT_IN_DWARF_CFA, + "__builtin_dwarf_cfa", + BT_FN_PTR) +DEF_GCC_BUILTIN(BUILT_IN_DWARF_FP_REGNUM, + "__builtin_dwarf_fp_regnum", + BT_FN_UNSIGNED) +DEF_GCC_BUILTIN(BUILT_IN_INIT_DWARF_REG_SIZES, + "__builtin_init_dwarf_reg_size_table", + BT_FN_VOID_PTR) +DEF_GCC_BUILTIN(BUILT_IN_FROB_RETURN_ADDR, + "__builtin_frob_return_addr", + BT_FN_PTR_PTR) +DEF_GCC_BUILTIN(BUILT_IN_EXTRACT_RETURN_ADDR, + "__builtin_extract_return_addr", + BT_FN_PTR_PTR) +DEF_GCC_BUILTIN(BUILT_IN_EH_RETURN, + "__builtin_eh_return", + BT_FN_VOID_PTRMODE_PTR) +DEF_GCC_BUILTIN(BUILT_IN_EH_RETURN_DATA_REGNO, + "__builtin_eh_return_data_regno", + BT_FN_INT_INT) + +DEF_GCC_BUILTIN(BUILT_IN_VARARGS_START, + "__builtin_varargs_start", + BT_FN_VOID_VALIST_REF) +DEF_GCC_BUILTIN(BUILT_IN_STDARG_START, + "__builtin_stdarg_start", + BT_FN_VOID_VALIST_REF_VAR) +DEF_GCC_BUILTIN(BUILT_IN_VA_END, + "__builtin_va_end", + BT_FN_VOID_VALIST_REF) +DEF_GCC_BUILTIN(BUILT_IN_VA_COPY, + "__builtin_va_copy", + BT_FN_VOID_VALIST_REF_VALIST_ARG) +DEF_GCC_BUILTIN(BUILT_IN_EXPECT, + "__builtin_expect", + BT_FN_LONG_LONG_LONG) + +/* C++ extensions */ +DEF_UNUSED_BUILTIN(BUILT_IN_NEW) +DEF_UNUSED_BUILTIN(BUILT_IN_VEC_NEW) +DEF_UNUSED_BUILTIN(BUILT_IN_DELETE) +DEF_UNUSED_BUILTIN(BUILT_IN_VEC_DELETE) |