X-Git-Url: http://git.sourceforge.jp/view?a=blobdiff_plain;f=gcc%2Fbuiltins.def;h=7bfe7c2a1585f1d8a56db92449b755e7aee83647;hb=0afe563d3f860ea4cf7a22fef1ebc47e1b3f2c86;hp=ecb1991b4b1f30dc1debccbb43e0f4813fc2c2a4;hpb=d30e4d0464cae3e2ef4ca79006784aec74d2a9e5;p=pf3gnuchains%2Fgcc-fork.git diff --git a/gcc/builtins.def b/gcc/builtins.def index ecb1991b4b1..7bfe7c2a158 100644 --- a/gcc/builtins.def +++ b/gcc/builtins.def @@ -2,109 +2,487 @@ builtins used in the GNU compiler. Copyright (C) 2000, 2001 Free Software Foundation, Inc. -This file is part of GNU CC. +This file is part of GCC. -GNU CC 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 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. -GNU CC 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. +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 GNU CC; see the file COPYING. If not, write to -the Free Software Foundation, 59 Temple Place - Suite 330, -Boston, MA 02111-1307, USA. */ - -DEF_BUILTIN(BUILT_IN_ALLOCA) -DEF_BUILTIN(BUILT_IN_ABS) -DEF_BUILTIN(BUILT_IN_FABS) -DEF_BUILTIN(BUILT_IN_CONJ) -DEF_BUILTIN(BUILT_IN_CREAL) -DEF_BUILTIN(BUILT_IN_CIMAG) -DEF_BUILTIN(BUILT_IN_FFS) -DEF_BUILTIN(BUILT_IN_DIV) -DEF_BUILTIN(BUILT_IN_LDIV) -DEF_BUILTIN(BUILT_IN_FFLOOR) -DEF_BUILTIN(BUILT_IN_FCEIL) -DEF_BUILTIN(BUILT_IN_FMOD) -DEF_BUILTIN(BUILT_IN_FREM) -DEF_BUILTIN(BUILT_IN_MEMCPY) -DEF_BUILTIN(BUILT_IN_MEMCMP) -DEF_BUILTIN(BUILT_IN_MEMSET) -DEF_BUILTIN(BUILT_IN_BZERO) -DEF_BUILTIN(BUILT_IN_BCMP) -DEF_BUILTIN(BUILT_IN_INDEX) -DEF_BUILTIN(BUILT_IN_RINDEX) -DEF_BUILTIN(BUILT_IN_STRCAT) -DEF_BUILTIN(BUILT_IN_STRNCAT) -DEF_BUILTIN(BUILT_IN_STRCPY) -DEF_BUILTIN(BUILT_IN_STRNCPY) -DEF_BUILTIN(BUILT_IN_STRCMP) -DEF_BUILTIN(BUILT_IN_STRNCMP) -DEF_BUILTIN(BUILT_IN_STRLEN) -DEF_BUILTIN(BUILT_IN_STRSTR) -DEF_BUILTIN(BUILT_IN_STRPBRK) -DEF_BUILTIN(BUILT_IN_STRSPN) -DEF_BUILTIN(BUILT_IN_STRCSPN) -DEF_BUILTIN(BUILT_IN_STRCHR) -DEF_BUILTIN(BUILT_IN_STRRCHR) -DEF_BUILTIN(BUILT_IN_FSQRT) -DEF_BUILTIN(BUILT_IN_SIN) -DEF_BUILTIN(BUILT_IN_COS) -DEF_BUILTIN(BUILT_IN_GETEXP) -DEF_BUILTIN(BUILT_IN_GETMAN) -DEF_BUILTIN(BUILT_IN_SAVEREGS) -DEF_BUILTIN(BUILT_IN_CLASSIFY_TYPE) -DEF_BUILTIN(BUILT_IN_NEXT_ARG) -DEF_BUILTIN(BUILT_IN_ARGS_INFO) -DEF_BUILTIN(BUILT_IN_CONSTANT_P) -DEF_BUILTIN(BUILT_IN_FRAME_ADDRESS) -DEF_BUILTIN(BUILT_IN_RETURN_ADDRESS) -DEF_BUILTIN(BUILT_IN_AGGREGATE_INCOMING_ADDRESS) -DEF_BUILTIN(BUILT_IN_APPLY_ARGS) -DEF_BUILTIN(BUILT_IN_APPLY) -DEF_BUILTIN(BUILT_IN_RETURN) -DEF_BUILTIN(BUILT_IN_SETJMP) -DEF_BUILTIN(BUILT_IN_LONGJMP) -DEF_BUILTIN(BUILT_IN_TRAP) - - /* Stdio builtins. */ -DEF_BUILTIN(BUILT_IN_PUTCHAR) -DEF_BUILTIN(BUILT_IN_PUTS) -DEF_BUILTIN(BUILT_IN_PRINTF) -DEF_BUILTIN(BUILT_IN_FPUTC) -DEF_BUILTIN(BUILT_IN_FPUTS) -DEF_BUILTIN(BUILT_IN_FWRITE) +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_PTR_SIZE, + BT_FN_VOID_VAR, + true, true, true) +DEF_BUILTIN (BUILT_IN_BCMP, + "__builtin_bcmp", + BUILT_IN_NORMAL, + BT_FN_INT_CONST_PTR_CONST_PTR_SIZE, + 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_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_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_SIZE_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_BUILTIN(BUILT_IN_ISGREATER) -DEF_BUILTIN(BUILT_IN_ISGREATEREQUAL) -DEF_BUILTIN(BUILT_IN_ISLESS) -DEF_BUILTIN(BUILT_IN_ISLESSEQUAL) -DEF_BUILTIN(BUILT_IN_ISLESSGREATER) -DEF_BUILTIN(BUILT_IN_ISUNORDERED) - - /* Various hooks for the DWARF 2 __throw routine. */ -DEF_BUILTIN(BUILT_IN_UNWIND_INIT) -DEF_BUILTIN(BUILT_IN_DWARF_CFA) -DEF_BUILTIN(BUILT_IN_DWARF_FP_REGNUM) -DEF_BUILTIN(BUILT_IN_INIT_DWARF_REG_SIZES) -DEF_BUILTIN(BUILT_IN_FROB_RETURN_ADDR) -DEF_BUILTIN(BUILT_IN_EXTRACT_RETURN_ADDR) -DEF_BUILTIN(BUILT_IN_EH_RETURN) - -DEF_BUILTIN(BUILT_IN_VARARGS_START) -DEF_BUILTIN(BUILT_IN_STDARG_START) -DEF_BUILTIN(BUILT_IN_VA_END) -DEF_BUILTIN(BUILT_IN_VA_COPY) -DEF_BUILTIN(BUILT_IN_EXPECT) - - /* C++ extensions */ -DEF_BUILTIN(BUILT_IN_NEW) -DEF_BUILTIN(BUILT_IN_VEC_NEW) -DEF_BUILTIN(BUILT_IN_DELETE) -DEF_BUILTIN(BUILT_IN_VEC_DELETE) +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)