summaryrefslogtreecommitdiff
path: root/gcc/builtins.def
Commit message (Collapse)AuthorAgeFilesLines
...
* builtins.def (BUILT_IN_PRINTF, [...]): Changed from front-end builtins to ↵Roger Sayle2003-07-241-34/+19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | normal builtins, using DEF_LIB_BUILTIN. * builtins.def (BUILT_IN_PRINTF, BUILT_IN_FPRINTF): Changed from front-end builtins to normal builtins, using DEF_LIB_BUILTIN. (BUILT_IN_PRINTF_UNLOCKED, BUILT_IN_FPRINTF_UNLOCKED): Changed from front-end to normal builtins, using DEF_EXT_LIB_BUILTIN. (DEF_FRONT_END_LIB_BUILTIN): Delete. (DEF_EXT_FRONT_END_LIB_BUILTIN): Delete. (BUILT_IN_FWRITE_UNLOCKED): Wrap long line. * builtins.c (build_string_literal): New function to construct a char* pointer to a string literal. (expand_builtin_fputs): Change 2nd argument from "int ignore" to "rtx target" to be consistent with other expand_builtin_* functions. Change 3rd argument from "int unlocked" to "bool unlocked". (expand_builtin_printf): Rewrite of c_expand_builtin_printf from c-common.c to avoid front-end dependencies. Optimize printf("") as a no-op when the result isn't required. Handle embedded NULs in format string. (expand_builtin_fprintf): A rewrite of c_expand_builtin_fprintf from c-common.c to avoid front-end dependencies. Likewise, optimize fprintf(fp,"") as a no-op when the result isn't required, evaluating fp for side-effects. Handle embedded NULs in format string. (expand_builtin_sprintf): Fix typo. (expand_builtin): Don't expand BUILT_IN_FPRINT{,_UNLOCKED} when not optimizing. Adjust calls of expand_builtin_fputs to match the API change. Expand BUILT_IN_PRINTF and BUILT_IN_PRINTF_UNLOCKED using expand_builtin_printf. Likewise, expand BUILT_IN_FPRINTF_UNLOCKED and BUILT_IN_FPRINTF using expand_builtin_fprintf. * c-common.c (is_valid_printf_arglist): Delete. (c_expand_builtin): Delete. (c_expand_builtin_printf): Moved to builtins.c. Delete. (c_expand_builtin_fprintf): Moved to builtins.c. Delete. (c_expand_expr): No longer treat CALL_EXPRs specially. (CALLED_AS_BUILT_IN): Delete. From-SVN: r69760
* builtins.def (BUILT_IN_ALLOCA): Remove "#if SMALL_STACK" form.Roger Sayle2003-07-201-9/+0
| | | | | | | | * builtins.def (BUILT_IN_ALLOCA): Remove "#if SMALL_STACK" form. * system.h (SMALL_STACK): Poison obsolete target macro. * doc/tm.texi (SMALL_STACK): Remove target macro documentation. From-SVN: r69609
* builtins.def (BUILT_IN_CABS, [...]): New builtins representing ISO C99's ↵Roger Sayle2003-06-031-0/+12
| | | | | | | | | | | | | | | | | cabs, cabsf and cabsl. * builtins.def (BUILT_IN_CABS, BUILT_IN_CABSF, BUILT_IN_CABSL): New builtins representing ISO C99's cabs, cabsf and cabsl. * builtins.c (expand_builtin_fabs): New function. (expand_builtin_cabs): New function. (expand_builtin): Expand BUILT_IN_FABS{,F,L} and BUILT_IN_CABS{,F,L} using expand_builtin_fabs and expand_builtin_cabs respectively. * doc/extend.texi: Document new cabs, cabsf and cabsl builtins. * gcc.dg/builtins-16.c: New test case. From-SVN: r67368
* builtins.def: Defome atan...Roger Sayle2003-05-231-0/+30
| | | | | | | | | | | | | | | | * builtins.def: Defome atan, atanf, atanl, tan, tanf and tanl builtin functions (and their __builtin_* variants). * builtins.c (mathfn_built_in): Handle tan{,f,l} and atan{,f,l}. (expand_builtin): Don't expand tan{,f,l} or atan{,f,l} when not optimizing. * doc/extend.texi: Document new tan and atan builtins, and their float and long double variants. * gcc.dg/builtins-1.c: Add tests for tan and atan. * gcc.dg/builtins-4.c: Add test for fmod. From-SVN: r67137
* builtin-attrs.def (ATTR_NOTHROW_NONNULL_1, [...]): Renamed from ↵Kaveh R. Ghazi2003-05-041-41/+44
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ATTR_NONNULL_1, ATTR_NONNULL_2 and ATTR_NONNULL_3. gcc: * builtin-attrs.def (ATTR_NOTHROW_NONNULL_1, ATTR_NOTHROW_NONNULL_2, ATTR_NOTHROW_NONNULL_3): Renamed from ATTR_NONNULL_1, ATTR_NONNULL_2 and ATTR_NONNULL_3. (ATTR_NOTHROW_NONNULL_1_2, ATTR_NOTHROW_NONNULL_1_4, ATTR_CONST_NOTHROW_NONNULL_1, ATTR_PURE_NOTHROW_NONNULL_1, ATTR_PURE_NOTHROW_NONNULL_1_2, ATTR_MALLOC_NOTHROW_NONNULL_1): New. * builtins.def (DEF_EXT_FALLBACK_BUILTIN): Accept ATTRS argument. (BUILT_IN_BZERO, BUILT_IN_BCOPY, BUILT_IN_BCMP): Update comment (BUILT_IN_INDEX, BUILT_IN_RINDEX, BUILT_IN_MEMCPY, BUILT_IN_MEMMOVE, BUILT_IN_MEMCMP, BUILT_IN_MEMSET, BUILT_IN_MEMPCPY, BUILT_IN_STRCAT, BUILT_IN_STRNCAT, BUILT_IN_STPCPY, BUILT_IN_STRCPY, BUILT_IN_STRNCPY, BUILT_IN_STRCMP, BUILT_IN_STRNCMP, BUILT_IN_STRLEN, BUILT_IN_STRSTR, BUILT_IN_STRPBRK, BUILT_IN_STRSPN, BUILT_IN_STRCSPN, BUILT_IN_STRCHR, BUILT_IN_STRRCHR, BUILT_IN_NAN, BUILT_IN_NANF, BUILT_IN_NANL, BUILT_IN_NANS, BUILT_IN_NANSF, BUILT_IN_NANSL, BUILT_IN_PUTS, BUILT_IN_FPUTC, BUILT_IN_FPUTS, BUILT_IN_FWRITE, BUILT_IN_PUTS_UNLOCKED, BUILT_IN_FPUTC_UNLOCKED, BUILT_IN_FPUTS_UNLOCKED, BUILT_IN_FWRITE_UNLOCKED, BUILT_IN_STRDUP): Add "nonnull" attribute. testsuite: * gcc.dg/nonnull-3.c: New test. From-SVN: r66468
* builtins.c (expand_builtin): Remove.Richard Henderson2003-05-031-2/+2
| | | | | | | | | | | | | | | | | * builtins.c (expand_builtin) <BUILT_IN_DWARF_FP_REGNUM>: Remove. <BUILT_IN_DWARF_SP_COLUMN>: New. * builtins.def (BUILT_IN_DWARF_FP_REGNUM): Remove. (BUILT_IN_DWARF_SP_COLUMN): New. * dwarf2out.c (expand_builtin_dwarf_fp_regnum): Remove. (expand_builtin_dwarf_sp_column): New. * except.h: Update to match. * unwind-dw2.c (execute_stack_op): Correct stack push typo. (execute_cfa_program): Record location expression address before extracting length. (uw_update_context_1): Install old CFA into stack pointer column. (uw_init_context_1): Set cfa_reg to stack pointer column. From-SVN: r66447
* * builtins.def (BUILTIN_CONSTANT_P): Mark as constant.Diego Novillo2003-04-301-1/+1
| | | | From-SVN: r66316
* builtins.def (BUILT_IN_BCOPY, [...]): New.Jakub Jelinek2003-04-281-3/+14
| | | | | | | | | | | | * builtins.def (BUILT_IN_BCOPY, BUILT_IN_MEMMOVE): New. * builtin-types.def (BT_FN_VOID_CONST_PTR_PTR_SIZE): New. * builtins.c (expand_builtin_memmove, expand_builtin_bcopy): New functions. (expand_builtin): Handle BUILT_IN_BCOPY and BUILT_IN_MEMMOVE. * gcc.c-torture/execute/string-opt-19.c: New test. From-SVN: r66169
* builtin-types.def (BT_FN_STRING_CONST_STRING): New builtin type.Roger Sayle2003-04-141-0/+16
| | | | | | | | | | | | | | | | | | | | * builtin-types.def (BT_FN_STRING_CONST_STRING): New builtin type. (BT_FN_PTR_SIZE_SIZE): Likewise. * builtins.def (BUILT_IN_MALLOC, BUILT_IN_CALLOC, BUILT_IN_STRDUP): New built-in functions for malloc, calloc and strdup respectively. * calls.c (special_function_p): No need to handle malloc-like functions any longer. ECF_MALLOC is set via built-in attributes. * c-decl.c (duplicate_decls): Preserve pure and malloc attributes. * cp/decl.c (duplicate_decls): Preserve pure and malloc attributes. * f/com.c (duplicate_decls): Preserve pure and malloc attributes. * doc/extend.texi: Document these new built-in functions. * gcc.dg/builtins-13.c: New test case. * gcc.dg/builtins-14.c: New test case. From-SVN: r65560
* builtins.c (expand_builtin_memcpy): Add `endp' argument, use it.Kaveh R. Ghazi2003-04-131-0/+8
| | | | | | | | | | | | | | gcc: * builtins.c (expand_builtin_memcpy): Add `endp' argument, use it. (expand_builtin_stpcpy): New. (expand_builtin): Add BUILT_IN_MEMPCPY & BUILT_IN_STPCPY. * builtins.def: Add mempcpy & stpcpy support. * doc/extend.texi (mempcpy, stpcpy): Document new builtins. testsuite: * gcc.c-torture/execute/string-opt-18.c: New test. From-SVN: r65551
* builtins.def: Fix typo and improve grammar.Roger Sayle2003-03-091-1/+2
| | | | | | | * builtins.def: Fix typo and improve grammar. * loop-unroll.c (decide_peel_completely): Tidy log message. From-SVN: r64030
* re PR c++/9367 (error: nonnull argument with extern "C" snprintf prototype)Roger Sayle2003-03-021-17/+63
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | PR c++/9367 * builtin-types.def (DEF_FUNCTION_TYPE_VAR_3): New macro. (BT_FN_INT_CONST_STRING_VALIST_ARG, BT_FN_INT_STRING_CONST_STRING_VALIST_ARG, BT_FN_INT_CONST_STRING_CONST_STRING_VALIST_ARG, BT_FN_INT_STRING_SIZE_CONST_STRING_VALIST_ARG, BT_FN_INT_STRING_CONST_STRING_VAR, BT_FN_INT_CONST_STRING_CONST_STRING_VAR, BT_FN_INT_STRING_SIZE_CONST_STRING_VAR): New built-in types. * builtin-attrs.def (ATTR_NONNULL_1, ATTR_NONNULL_2, ATTR_NONNULL_3): Also include the nothrow attribute. (sprintf, scanf, sscanf, vprintf, vsprintf, snprintf, vsnprintf, vscanf, vsscanf): Don't define attributes here. * builtins.def (putchar, puts): Make full C89 built-ins. (snprintf, sprintf, scanf, sscanf, vprintf, vscanf, vsscanf, vsnprintf, vsprintf): New built-ins. * c-common.c (c_common_nodes_and_builtins): Handle new macro DEF_FUNCTION_TYPE_VAR_3. * doc/extend.texi: Document these new built-in functions. * java/builtins.c (builtin_type): Handle DEF_FUNCTION_TYPE_VAR_3. (initialize_builtins): Handle DEF_FUNCTION_TYPE_VAR_3. * g++.old-deja/g++.other/builtins10.C: New test for PR 9367. * gcc.dg/format/attr-5.c: Handle new conflicting types warning. From-SVN: r63650
* builtins.def (DEF_LIB_ALWAYS_BUILTIN, [...]): Delete.Roger Sayle2003-02-261-71/+56
| | | | | | | | | | | | | | * builtins.def (DEF_LIB_ALWAYS_BUILTIN, DEF_UNUSED_BUILTIN): Delete. (abs, labs, fabs, fabsf, fabsl, abort, exit, _exit, _Exit): Use the appropriate macro to define built-in function. (fmod,fmodf,fmodl): New built-in functions. * java/decl.c (java_init_decl_processing): Get soft_fmod_node from built_in_decls[BUILT_IN_FMOD] rather than define it ourselves. * doc/extend.texi (fmod,fmodf,fmodl): Document new built-ins. From-SVN: r63445
* builtin-types.def (BT_FN_FLOAT_FLOAT_FLOAT): New built-in type.Roger Sayle2003-02-071-1/+43
| | | | | | | | | | | | | | | | | | * builtin-types.def (BT_FN_FLOAT_FLOAT_FLOAT): New built-in type. (BT_FN_LONG_DOUBLE_LONG_DOUBLE_LONG_DOUBLE): Likewise. (BT_FN_DOUBLE_DOUBLE_DOUBLE): Likewise. * builtins.def: Define pow, powf, powl, atan2, atan2f and atan2l builtin functions (and their __builtin_* variants). * builtins.c (mathfn_built_in): Handle missing log{,f,l} cases. (expand_builtin): Don't expand log{,f,l}, pow{,f,l} or atan2{,f,l} when not optimizing. * doc/extend.texi: Document new pow and atan2 builtins, and their float and long double variants. Realphabetize builtins. * testsuite/gcc.dg/builtins-4.c: New test case. From-SVN: r62551
* [multiple changes]Richard Henderson2003-02-011-0/+59
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2003-02-01 Richard Henderson <rth@redhat.com> * optabs.c (expand_unop): Use word_mode for outmode of bit scaners. * libgcc2.c (__ffsdi2, __clzsi2, __clzdi2, __ctzsi2, __ctzdi2, __popcountsi2, __popcountdi2, __paritysi2 __paritydi2): Change return type to Wtype. * libgcc-std.ver (GCC_3.4): Fix inheritance. * config/i386/i386.md (ffssi2): Use nonimmediate_operand for expander input constraint. 2003-02-01 Falk Hueffner <falk.hueffner@student.uni-tuebingen.de> * optabs.h (optab_index): Add OTI_clz, OTI_ctz, OTI_popcount and OTI_parity. (clz_optab, ctz_optab, popcount_optab, parity_optab): New. * optabs.c (widen_clz, expand_parity): New. (expand_unop): Handle clz and parity. Hardcode SImode as outmode for libcalls to clz, ctz, popcount, and parity. (init_optabs): Init clz_optab, ctz_optab, popcount_optab and parity_optab, and set up libfunc handlers. * libgcc2.c (__clzsi2, __clzdi2, __ctzsi2, __ctzdi2, __popcountsi2, __popcountdi2, __paritysi2 __paritydi2, __popcount_tab): New. * libgcc2.h: Declare them. * libgcc-std.ver (GCC_3.4): Add new functions from libgcc2.c. * genopinit.c (optabs): Add clz_optab, ctz_optab, popcount_optab and parity_optab. * builtin-types.def (BT_FN_INT_LONG, BT_FN_INT_LONGLONG): New. * builtins.def (BUILT_IN_CLZ, BUILT_IN_CTZ, BUILT_IN_POPCOUNT, BUILT_IN_PARITY, BUILT_IN_FFSL, BUILT_IN_CLZL, BUILT_IN_CTZL, BUILT_IN_POPCOUNTL, BUILT_IN_PARITYL, BUILT_IN_FFSLL, BUILT_IN_CLZLL, BUILT_IN_CTZLL, BUILT_IN_POPCOUNTLL, BUILT_IN_PARITYLL): New. * builtins.c (expand_builtin_unop): Rename from expand_builtin_ffs and add optab argument. (expand_builtin): Expand BUILT_IN_{FFS,CLZ,POPCOUNT,PARITY}*. * tree.def (CLZ_EXPR, CTZ_EXPR, POPCOUNT_EXPR, PARITY_EXPR): New. * expr.c (expand_expr): Handle them. * fold-const.c (tree_expr_nonnegative_p): Likewise. * rtl.def (CLZ, CTZ, POPCOUNT, PARITY): New. * reload1.c (eliminate_regs): Handle them. (elimination_effects): Likewise. * function.c (instantiate_virtual_regs_1): Likewise * genattrtab.c (check_attr_value): Likewise. * simplify-rtx.c (simplify_unary_operation): Likewise. * c-common.c (c_common_truthvalue_conversion): Handle POPCOUNT_EXPR. * combine.c (combine_simplify_rtx): Handle POPCOUNT and PARITY. (nonzero_bits): Handle CLZ, CTZ, POPCOUNT and PARITY. * config/alpha/alpha.md (clzdi2, ctzdi2, popcountdi2): New. * config/arm/arm.c (arm_init_builtins): Rename __builtin_clz to __builtin_arm_clz. * Makefile.in (LIB2FUNCS_1, LIB2FUNCS_2): Move... * mklibgcc.in (lib2funcs): ...here and merge. Add new members. * doc/extend.texi (Other Builtins): Add new builtins. * doc/md.texi (Standard Names): Add new patterns. From-SVN: r62252
* builtins.c (DEF_BUILTIN): Accept 10 arguments.Jan Hubicka2003-01-241-98/+112
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * builtins.c (DEF_BUILTIN): Accept 10 arguments. (implicit_built_in_decls): New global array. (mathfn_built_in): New global function. (fold_trunc_transparent_mathfn): New static function (expand_builtin_strstr, expand_bultin_strchr, expand_builtin_strpbrk, expand_builtin_strcpy, expand_builtin_strncpy, expand_bultin_strcmp, expand_bultin_strncat, expand_builtin_fputs): Use implicint_built_in_decls. (fold_builtin): Fold floor/trunc/round/ceil/nearbyint. * builtins.def: Fix comments. (DEF_GCC_BUILTIN, DEF_FALLBACK_BUILTIN, DEF_EXT_FALLBACK_BUILTIN, DEF_LIB_BUILTIN, DEF_LIB_ALWAYS_BUILTIN, DEF_EXT_LIB_BUILTIN, DEF_C99_BULTIN, DEF_FRONT_END_LIB_BUILTIN, DEF_EXT_FRONT_END_LIB_BUILTIN): Pass implicit as needed. (DEF_C99_C90RES_BULTIN): New. (*f, *l builtins): Update. * c-common.c (DEF_BUILTIN): Initialize implicit array. (c_expand_builtin_printf, c_expand_builtin_fprintf): Update. * convert.c (strip_float_extensions): New global function. * tree.h (DEF_BUILTIN): Accept 10 arguments. (implicit_built_in_decls, mathfn_built_in, strip_float_extension): Declare. * java/builtins.c (define_builtin): Handle implicit. (DEF_BUILTIN): Update. * tm.texi (TARGET_C99_FUNCTIONS): Document. * defaults.h (TARGET_C99_FUNCTIONS): Default to 0. * config/linux.h (TARGET_C99_FUNCTIONS): Default to 1 when using glibc2. From-SVN: r61738
* Merge basic-improvements-branch to trunkZack Weinberg2002-12-161-13/+89
| | | | From-SVN: r60174
* * builtins.def (DEF_C99_BUILTIN): Fix.Jan Hubicka2002-11-271-1/+1
| | | | From-SVN: r59571
* builtins.def: Fix comment formatting.Kazu Hirata2002-09-291-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * builtins.def: Fix comment formatting. * c-common.def: Likewise. * cfgcleanup.c: Likewise. * combine.c: Likewise. * gengtype.c: Likewise. * params.def: Likewise. * predict.def: Likewise. * rtl.def: Likewise. * stab.def: Likewise. * stor-layout.c: Likewise. * tree.def: Likewise. * config/darwin.c: Likewise. * config/darwin.h: Likewise. * config/dbxcoff.h: Likewise. * config/elfos.h: Likewise. * config/fp-bit.c: Likewise. * config/freebsd-spec.h: Likewise. * config/interix.h: Likewise. * config/libgloss.h: Likewise. * config/linux-aout.h: Likewise. * config/linux.h: Likewise. * config/lynx-ng.h: Likewise. * config/lynx.h: Likewise. * config/netbsd-aout.h: Likewise. * config/netbsd.h: Likewise. * config/netware.h: Likewise. * config/psos.h: Likewise. * config/ptx4.h: Likewise. From-SVN: r57624
* builtin-types.def (BT_FN_FLOAT_CONST_STRING): New.Richard Henderson2002-09-161-0/+26
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | gcc/ * builtin-types.def (BT_FN_FLOAT_CONST_STRING): New. (BT_FN_DOUBLE_CONST_STRING, BT_FN_LONG_DOUBLE_CONST_STRING): New. * builtins.def (__builtin_nan, __builtin_nanf, __builtin_nanl): New. (__builtin_nans, __builtin_nansf, __builtin_nansl): New. * builtins.c (fold_builtin_nan): New. (fold_builtin): Call it. * real.c (real_nan): Parse a non-empty string. (round_for_format): Fix NaN significand truncation. * real.h (real_nan): Return bool. * doc/extend.texi: Document new builtins. libstdc++/ * include/std/std_limits.h (__glibcpp_f32_QNaN_bytes, __glibcpp_f32_has_QNaN, __glibcpp_f32_SNaN_bytes, __glibcpp_f32_has_SNaN, __glibcpp_f64_QNaN_bytes, __glibcpp_f64_has_QNaN, __glibcpp_f64_SNaN_bytes, __glibcpp_f64_has_SNaN, __glibcpp_f80_QNaN_bytes, __glibcpp_f80_has_QNaN, __glibcpp_f80_SNaN_bytes, __glibcpp_f80_has_SNaN, __glibcpp_f96_QNaN_bytes, __glibcpp_f96_has_QNaN, __glibcpp_f96_SNaN_bytes, __glibcpp_f96_has_SNaN, __glibcpp_f128_QNaN_bytes, __glibcpp_f128_has_QNaN, __glibcpp_f128_SNaN_bytes, __glibcpp_f128_has_SNaN, __glibcpp_float_QNaN_bytes, __glibcpp_float_has_QNaN, __glibcpp_float_SNaN_bytes, __glibcpp_float_has_SNaN, __glibcpp_double_QNaN_bytes, __glibcpp_double_has_QNaN, __glibcpp_double_SNaN_bytes, __glibcpp_double_has_SNaN, __glibcpp_long_double_QNaN_bytes, __glibcpp_long_double_has_QNaN, __glibcpp_long_double_SNaN_bytes, __glibcpp_long_double_has_SNaN): Remove. (__glibcpp_f128_is_iec559): True if IEEE. (__glibcpp_float_QNaN, __glibcpp_float_SNaN): Remove. (__glibcpp_double_QNaN, __glibcpp_double_SNaN): Remove. (__glibcpp_long_double_QNaN, __glibcpp_long_double_SNaN): Remove. (std::numeric_limits<float>::has_quiet_NaN): Use __builtin_nanf. (std::numeric_limits<float>::has_signaling_NaN): Mirror has_quiet_NaN. (std::numeric_limits<float>::quiet_NaN): Use __builtin_nanf. (std::numeric_limits<float>::signaling_NaN): Use __builtin_nansf. (std::numeric_limits<double>): Similarly. (std::numeric_limits<long double>): Similarly. * src/limits.cc (__glibcpp_float_QNaN, __glibcpp_float_SNaN): Remove. (__glibcpp_double_QNaN, __glibcpp_double_SNaN): Remove. (__glibcpp_long_double_QNaN, __glibcpp_long_double_SNaN): Remove. * testsuite/18_support/numeric_limits.cc (test_infinity): New. (test_denorm_min, test_qnan, test_is_iec559): New. From-SVN: r57221
* builtins.def (inf, inff, infl): Mark const.Richard Henderson2002-09-071-9/+6
| | | | | | | | * builtins.def (inf, inff, infl): Mark const. (huge_val, huge_valf, huge_vall): Likewise. (BUILT_IN_GETEXP, BUILT_IN_GETMAN): Remove. From-SVN: r56926
* builtin-types.def (BT_FN_FLOAT): New.Richard Henderson2002-09-041-0/+26
| | | | | | | | | | | | | | * builtin-types.def (BT_FN_FLOAT): New. (BT_FN_DOUBLE, BT_FN_LONG_DOUBLE): New. * builtins.def (BUILT_IN_INF, BUILT_IN_INFF, BUILT_IN_INFL, BUILT_IN_HUGE_VAL, BUILT_IN_HUGE_VALF, BUILT_IN_HUGE_VALL): New. * builtins.c (fold_builtin_inf): New. (fold_builtin): Call it. * real.c (ereal_inf): New. * real.h: Declare it. * doc/extend.texi: Document new builtins. From-SVN: r56820
* builtins.def: Define new builtin functions exp...Roger Sayle2002-08-031-0/+42
| | | | | | | | | | | | | | | | | | | | | * builtins.def: Define new builtin functions exp, expf, expl, log, logf and logl (and their __builtin_* variants). * optabs.h (enum optab_index): Add new OTI_exp and OTI_log. Define exp_optab and log_optab. * optabs.c (init_optans): Initialize exp_optab and log_optab. * genopinit.c (optabs): Implement exp_optab and log_optab using exp?f2 and log?f2 patterns. * builtins.c (expand_builtin_mathfn): Handle BUILT_IN_EXP* and BUILT_IN_LOG* using exp_optab and log_optab respectively. (expand_builtin): Ignore the new builtins (and all cos and sin variants) when not optimizing. Expand new builtins via expand_builtin_mathfn when flag_unsafe_math_optimizations. * doc/extend.texi: Document new exp and log builtins. * doc/md.texi: Document new exp?f2 and log?f2 patterns (and previously undocumented cos?f2 and sin?f2 patterns). From-SVN: r56010
* builtins.def [...]: Require an explicit ATTRS argument.Roger Sayle2002-07-281-36/+70
| | | | | | | | | | | | | | | | * builtins.def [DEF_GCC_BUILTIN]: Require an explicit ATTRS argument. Mark BUILT_IN_RETURN, BUILT_IN_EH_RETURN, BUILT_IN_LONGJMP and BUILT_IN_TRAP as noreturn, the ISO C99 floating point unordered comparisons (e.g. __builtin_isgreater) as const, and leave the remaining GCC_BUILTINs unchanged. * c-decl.c (builtin_function): No need to explicitly mark BUILT_IN_RETURN and BUILT_IN_EH_RETURN as noreturn. * cp/decl.c (builtin_function_1): No need to explicitly mark BUILT_IN_RETURN and BUILT_IN_EH_RETURN as noreturn. From-SVN: r55805
* varargs.h: Replace with stub which issues #error.Zack Weinberg2002-07-161-4/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * ginclude/varargs.h: Replace with stub which issues #error. * ginclude/stdarg.h: __builtin_stdarg_start is renamed __builtin_va_start. * builtins.def (BUILT_IN_VARARGS_START): Delete. (BUILT_IN_VA_START): New. * builtins.c (expand_builtin_va_start): Eliminate first argument and code to implement pre-ISO varargs. (std_expand_builtin_va_start): Ignore first argument; it is always 1. (expand_builtin): Handle BUILT_IN_VA_START and BUILT_IN_STDARG_START identically. Delete BUILT_IN_VARARGS_START case. * function.c (assign_parms): Delete hide_last_arg and all its uses. (mark_varargs): Delete function. * function.h (struct function): Delete 'varargs' bit. (current_function_varargs): Delete macro. * tree.h: Don't declare mark_varargs. * c-decl.c (c_function_varargs, c_mark_varargs): Delete. (c_expand_body): Don't call mark_varargs. * c-objc-common.c: Handle BUILT_IN_VA_START and BUILT_IN_STDARG_START identically. Delete BUILT_IN_VARARGS_START case. * c-tree.h: Don't declare c_mark_varargs. * c-parse.in: Remove grammar rules for '&...' (which has been commented out since before 2.7.2) and for '...' in K+R argument declarations. * builtins.c, function.c, integrate.c, sibcall.c, config/alpha/unicosmk.h, config/arc/arc.c, config/arc/arc.h, config/avr/avr.c, config/cris/cris.c, config/fr30/fr30.c, config/i960/i960.c, config/i960/i960.md, config/m32r/m32r.c, config/m32r/m32r.h, config/m88k/m88k.c, config/m88k/m88k.h, config/mips/mips.c, config/mmix/mmix.c, config/mmix/mmix.h, config/mn10300/mn10300.c, config/pa/som.h, config/s390/s390.c, config/sh/sh.c, config/sh/sh.h, config/sparc/sparc.h, config/stormy16/stormy16.c: Delete all references to current_function_varargs, and code predicated on that flag. * config/alpha/alpha.c (alpha_va_start), config/arc/arc.c (arc_va_start), config/i386/i386.c (ix86_va_start), config/mips/mips.c (mips_va_start), config/mn10300/mn10300.c (mn10300_va_start), config/rs6000/rs6000.c (rs6000_va_start), config/s390/s390.c (s390_va_start), config/sh/sh.c (sh_va_start), Ignore first argument; it is always 1. * config/c4x/c4x-protos.h, config/c4x/c4x.c: Delete c4x_va_start. * config/ia64/ia64-protos.h, config/ia64/ia64.c: Delete ia64_va_start. * config/m68hc11/m68hc11-protos.h, config/m68hc11/m68hc11.c: Delete m68hc11_va_start. * config/c4x/c4x.h, config/ia64/ia64.h, config/m68hc11/m68hc11.h: No need to define EXPAND_BUILTIN_VA_START. * doc/invoke.texi, doc/sourcebuild.texi, doc/tm.texi, doc/trouble.texi: Remove references to GCC-provided <varargs.h>. testsuite: * c-torture/execute/991216-3.c, c-torture/execute/strct-varg-1.c, c-torture/execute/va-arg-7.c, c-torture/execute/va-arg-8.c, c-torture/execute/va-arg-15.c, c-torture/execute/va-arg-16.c, c-torture/execute/va-arg-17.c, c-torture/execute/va-arg-19.c: Convert to use <stdarg.h>. * c-torture/execute/va-arg-3.c, c-torture/execute/va-arg-3.x: Delete. * gcc.dg/va-arg-2.c: New. * lib/gcc.exp, lib/objc.exp: Remove code to set -DNO_VARARGS. From-SVN: r55472
* builtins.def: Make the argument types of abort and exit independent of the ↵Roger Sayle2002-07-111-4/+4
| | | | | | | | | | | | | | | | | | | front-end. 2002-07-10 Roger Sayle <roger@eyesopen.com> Zack Weinberg <zack@codesourcery.com> * builtins.def: Make the argument types of abort and exit independent of the front-end. * java/builtins.c (initialize_builtins): Remove defines that handled C/C++ specific junk hereby removed from builtins.def. * gcc.c-torture/execute/20000217-1.c: Fix usage of "abort". Co-Authored-By: Zack Weinberg <zack@codesourcery.com> From-SVN: r55385
* re PR c++/7099 (G++ doesn't set the noreturn attribute on std::exit and ↵Roger Sayle2002-07-061-59/+151
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | std::abort) PR c++/7099 * builtin-attrs.def: Define new attribute lists for use in builtins.def. * builtins.def [DEF_BUILTIN]: Modify to take an additional ATTRS argument, an enumerated value defined in builtin-attrs.def that represents the attribute list for the builtins. Modify all builtin functions to pass an appropriate attribute list. Specify "abort", "exit", "_exit" and "_Exit" builtins here with their required noreturn attributes. * tree.h (enum_builtin_function): Ignore the additional parameter to DEF_BUILTIN. * builtins.c (built_in_names): Likewise. * c-common.c: (builtin_function_2): Replace the "int noreturn_p" argument with a tree representing the functions attribute list. Pass this "attrs" argument to builtin_function. No longer handle the noreturn_p processing manually. (built_in_attributes): Move the definitions from builtin-attrs.def before c_common_nodes_and_builtins. (c_common_nodes_and_builtins): Handle the new ATTRS parameter in DEF_BUILTIN, passing it to both builtin_function and the changed builtin_function_2. * doc/extend.texi: Document __builtin_abort, __builtin_exit, __builtin__exit and __builtin__Exit. * java/builtins.c (initialize_builtins): Ignore the additional parameter to DEF_BUILTIN. Handle more C/C++ specific junk in the builtins.def file. From-SVN: r55276
* c-common.c, [...]: Delete code implementing -traditional mode.Zack Weinberg2002-02-271-5/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * c-common.c, c-common.h, c-decl.c, c-lex.c, c-parse.in, c-tree.h, c-typeck.c, cppexp.c, cpplex.c, cpplib.c, cpplib.h, cppmacro.c, objc/lang-specs.h, objc/objc-act.c, builtin-types.def, builtins.def, dwarf2out.c, dwarfout.c, gcc.c, toplev.c: Delete code implementing -traditional mode. * ada/misc.c, ch/ch-tree.h, ch/decl.c, cp/decl2.c, f/com.c, f/lex.c, f/top.c, java/builtins.c, java/decl.c: Delete traditional-mode-related code copied from the C front end but not used, or used only to permit the compiler to link. * doc/bugreport.texi, doc/cpp.texi, doc/extend.texi, doc/invoke.texi, doc/standards.texi, doc/trouble.texi: Document removal of -traditional mode for compilation, and remove documentation only relevant to that mode. * config/nextstep.h, config/ptx4.h, config/svr4.h, config/convex/convex.h, config/d30v/d30v.h, config/i386/dgux.h, config/i386/osf1elf.h, config/i386/osfelf.h, config/i386/osfrose.h, config/i386/sco5.h, config/i386/sol2.h, config/m68k/a-ux.h, config/m68k/hp310.h, config/m88k/dgux.h, config/m88k/dguxbcs.h, config/m88k/luna.h, config/m88k/m88k.c, config/m88k/m88k.h, config/m88k/openbsd.h, config/mips/abi64.h, config/mips/osfrose.h, config/mips/svr4-5.h, config/mips/svr4-t.h, config/sparc/sol2-sld-64.h, config/sparc/sol2.h, config/stormy16/stormy16.h: Remove all references to -traditional from target specs. Delete all mention of the no-longer-necessary TRADITIONAL_RETURN_FLOAT macro. Also delete a couple of commented-out definitions of DOLLARS_IN_IDENTIFIERS, with (incorrect) commentary referring to -traditional. * system.h: Poison TRADITIONAL_RETURN_FLOAT. * doc/tm.texi: Remove mention of TRADITIONAL_RETURN_FLOAT macro. * testsuite/gcc.c-torture/execute/920730-1t.c, testsuite/gcc.c-torture/execute/920730-1t.x, testsuite/gcc.dg/ext-glob.c: Delete test cases, only relevant to -traditional. From-SVN: r50110
* builtin-types.def (BT_FN_VOID_CONST_PTR_VAR): Replace BT_FN_VOID_PTR_VAR.Paul Koning2002-01-281-1/+1
| | | | | | | | | | | | | * builtin-types.def (BT_FN_VOID_CONST_PTR_VAR): Replace BT_FN_VOID_PTR_VAR. * builtins.def (BUILT_IN_PREFETCH): Change first argument to be const. * doc/extend.texi (__builtin_prefetch): Update documentation: first argument is now const void ptr. * gcc.c-torture/execute/builtin-prefetch-1.c: Changed first argument to __builtin_prefetch to be const ptr. From-SVN: r49296
* builtin-attrs.def (__builtin_printf_unlocked, [...]): Mark with the ↵Kaveh R. Ghazi2001-12-211-0/+49
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | __printf__ attribute. * builtin-attrs.def (__builtin_printf_unlocked, __builtin_fprintf_unlocked, printf_unlocked, fprintf_unlocked): Mark with the __printf__ attribute. * builtins.c (expand_builtin_fputs): Add an `unlocked' parameter and set the replacement function depending on it. (expand_builtin): Skip BUILT_IN_*_UNLOCKED when not optimizing. Handle BUILT_IN_*_UNLOCKED when optimizing. * builtins.def (DEF_EXT_FALLBACK_BUILTIN, DEF_EXT_FRONT_END_LIB_BUILTIN): New macros. Declare the "unlocked" stdio functions. * c-common.c (c_expand_builtin_printf, c_expand_builtin_fprintf): Add an `unlocked' parameter and set the replacement function depending on it. (c_expand_builtin): Handle BUILT_IN_PRINTF_UNLOCKED and BUILT_IN_FPRINTF_UNLOCKED. * doc/extend.texi (printf_unlocked, fprintf_unlocked, fputs_unlocked): Document. testsuite: * gcc.dg/format/builtin-1.c: Test unlocked stdio. * gcc.dg/format/c90-printf-3.c: Likewise. * gcc.dg/format/c99-printf-3.c: Likewise. * gcc.dg/format/ext-1.c: Likewise. * gcc.dg/format/ext-6.c: Likewise. * gcc.dg/format/format.h: Prototype unlocked stdio. From-SVN: r48229
* builtins.def: Rename BUILT_IN_FSQRT to BUILT_IN_SQRT and __builtin_fsqrt to ↵Andreas Jaeger2001-12-141-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | __builtin_sqrt. 2001-12-14 Roger Sayle <roger@eyesopen.com> * builtins.def: Rename BUILT_IN_FSQRT to BUILT_IN_SQRT and __builtin_fsqrt to __builtin_sqrt. * builtins.c (expand_builtin_mathfn,expand_builtin): Same. * doc/extend.texi: Simplify documentation to match patch. f: * com-rt.def: Use __builtin_sqrt instead of __builtin_fsqrt. * com.c (ffecom_init_0): Same, and fixed enumeration usage. libstdc++-v3: * acconfig.h: Test for __builtin_sqrt instead of __builtin_fsqrt. * acinclude.m4: Same. * include/c_shadow/bits/std_cmath.h: Same. * aclocal.m4: Regenerated. * config.h.in: Regenerated. * configure: Regenerated. From-SVN: r48008
* builtin-types.def (BT_FN_VOID_PTR_VAR): New.Janis Johnson2001-12-071-1/+1
| | | | | | | | | | | * builtin-types.def (BT_FN_VOID_PTR_VAR): New. * builtins.def (BUILT_IN_PREFETCH): Change arguments. * builtins.c (expand_builtin_prefetch): Two arguments are now optional, with defaults for read prefetch with high degree of locality. * doc/extend.texi (__builtin_prefetch): Update documentation. * doc/md.texi (prefetch): Add documentation. From-SVN: r47741
* builtin-types.def (BT_FN_VOID_PTR_INT_INT): New.Janis Johnson2001-12-041-0/+3
| | | | | | | | | | * builtin-types.def (BT_FN_VOID_PTR_INT_INT): New. * builtins.def (BUILT_IN_PREFETCH): New. * builtins.c (expand_builtin_expect): New. (expand_builtin): Call it. * doc/extend.texi: Document __builtin_expect. From-SVN: r47582
* builtins.def: Fix comment typos.Kazu Hirata2001-10-311-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | 2001-10-31 Kazu Hirata <kazu@hxi.com> * builtins.def: Fix comment typos. * config/alpha.c: Likewise. * config/arm/arm.c: Likewise. * config/avr/avr.h: Likewise. * config/d30v/d30v.c: Likewise. * config/d30v/d30v.h: Likewise. * config/d30v/d30v.md: Likewise. * config/dsp16xx/dsp16xx.c: Likewise. * config/fr30/fr30.c: Likewise. * config/fr30/fr30.md: Likewise. * config/i386/i386.c: Likewise. * config/i860/i860.c: Likewise. * config/i960/i960.c: Likewise. * config/ia64/ia64.c: Likewise. * config/mips/mips.c: Likewise. * config/pa/pa.c: Likewise. * config/rs6000/rs6000.c: Likewise. * config/s390/s390.c: Likewise. * config/sparc/sparc.c: Likewise. From-SVN: r46676
* Makefile.in, [...]: replace "GNU CC" with "GCC".Lars Brinkhoff2001-08-221-12/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Makefile.in, alias.c, basic-block.h, bb-reorder.c, bitmap.c, bitmap.h, builtin-types.def, builtins.c, builtins.def, c-aux-info.c, c-common.c, c-common.def, c-common.h, c-convert.c, c-decl.c, c-dump.c, c-dump.h, c-errors.c, c-format.c, c-lang.c, c-lex.c, c-lex.h, c-parse.in, c-pragma.c, c-pragma.h, c-semantics.c, c-tree.h, c-typeck.c, caller-save.c, calls.c, collect2.c, collect2.h, combine.c, conditions.h, config.gcc, configure.frag, configure.in, conflict.c, convert.c, convert.h, cppspec.c, crtstuff.c, cse.c, cselib.c, cselib.h, dbxout.c, dbxout.h, defaults.h, dependence.c, df.c, df.h, diagnostic.c, diagnostic.h, doloop.c, dominance.c, dwarf.h, dwarf2.h, dwarf2asm.c, dwarf2asm.h, dwarf2out.c, dwarf2out.h, dwarfout.c, emit-rtl.c, errors.c, errors.h, except.c, except.h, exgettext, explow.c, expmed.c, expr.c, expr.h, final.c, fixproto, flags.h, flow.c, fold-const.c, fp-test.c, function.c, function.h, gbl-ctors.h, gcc.c, gcc.h, gcc.hlp, gccspec.c, gcov-io.h, gcse.c, genattr.c, genattrtab.c, gencheck.c, gencodes.c, genconfig.c, genemit.c, genextract.c, genflags.c, gengenrtl.c, genmultilib, genopinit.c, genoutput.c, genpeep.c, genrecog.c, gensupport.c, gensupport.h, ggc-callbacks.c, ggc-common.c, ggc-none.c, ggc-page.c, ggc-simple.c, ggc.h, global.c, graph.c, graph.h, gthr-aix.h, gthr-dce.h, gthr-posix.h, gthr-rtems.h, gthr-single.h, gthr-solaris.h, gthr-vxworks.h, gthr-win32.h, gthr.h, haifa-sched.c, halfpic.c, halfpic.h, hard-reg-set.h, hwint.h, ifcvt.c, input.h, insn-addr.h, integrate.c, integrate.h, jump.c, lcm.c, libgcc2.c, libgcc2.h, lists.c, local-alloc.c, loop.c, loop.h, machmode.def, machmode.h, main.c, mbchar.c, mbchar.h, mips-tdump.c, mips-tfile.c, mklibgcc.in, mkmap-flat.awk, mkmap-symver.awk, optabs.c, output.h, params.c, params.def, params.h, predict.c, predict.def, predict.h, prefix.c, prefix.h, print-rtl.c, print-tree.c, profile.c, protoize.c, read-rtl.c, real.c, real.h, recog.c, recog.h, reg-stack.c, regclass.c, regmove.c, regrename.c, regs.h, reload.c, reload.h, reload1.c, reorg.c, resource.c, resource.h, rtl.c, rtl.def, rtl.h, rtlanal.c, sbitmap.c, sbitmap.h, sched-deps.c, sched-ebb.c, sched-int.h, sched-rgn.c, sched-vis.c, sdbout.c, sdbout.h, sibcall.c, simplify-rtx.c, ssa-ccp.c, ssa-dce.c, ssa.c, ssa.h, stmt.c, stor-layout.c, stringpool.c, system.h, timevar.c, timevar.def, timevar.h, tlink.c, toplev.c, toplev.h, tree.c, tree.def, tree.h, tsystem.h, unroll.c, unwind-dw2-fde.c, unwind-dw2-fde.h, unwind-dw2.c, unwind-pe.h, unwind-sjlj.c, unwind.h, unwind.inc, varasm.c, varray.c, varray.h, xcoffout.c, xcoffout.h: replace "GNU CC" with "GCC". From-SVN: r45105
* builtins.def: Fix definition of __builtin_cosf, it uses float as parameter ↵Andreas Jaeger2001-06-051-1/+1
| | | | | | | | | and return value. * builtins.def: Fix definition of __builtin_cosf, it uses float as parameter and return value. From-SVN: r42911
* builtins.def: Encode additional information, such as names and types, here.Mark Mitchell2001-05-251-89/+413
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | * builtins.def: Encode additional information, such as names and types, here. * builtin-types.def: New file. * builtins.c (built_in_names): Adjust use of DEF_BUILTIN. (built_in_decls): Likewise. Don't explicitly initialize global data to NULL. (expand_builtin_mathfn): Handle float and long double variants of math builtins. (expand_builtin): Likewise. * c-common.c (c_common_nodes_and_builtins): Make it table-driven. (expand_tree_builtin): Handle long, long long, float, and long double variants of math functions. * c-common.h (c_tree_index): Remove some unused nodes. (void_ftype): Remove. (void_type_ptr): Likewise. (int_ftype_int): Likewise. (ptr_ftype_sizetype): Likewise. * c-decl.c (init_decl_processing): Remove creation of DWARF builtins. * defaults.h (MD_INIT_BUILTINS): Provide default definition. * tree.h (built_in_function): Adjust definition of DEF_BUILTIN. * Makefile.in (c-common.o): Depend on builtin-types.def. * decl.c (init_decl_processing): Tweak. From-SVN: r42583
* IA-64 ABI Exception Handling.Richard Henderson2001-03-281-0/+1
| | | | From-SVN: r40924
* builtins.def (BUILT_IN_FPRINTF): New entry.Kaveh R. Ghazi2001-01-071-0/+1
| | | | | | | | | | | | | | | | | | * builtins.def (BUILT_IN_FPRINTF): New entry. * c-common.c (c_expand_builtin_fprintf): New function. (init_function_format_info): Handle __builtin_fprintf. (c_common_nodes_and_builtins): Declare fprintf/__builtin_fprintf. (c_expand_builtin): Handle BUILT_IN_FPRINTF. * c-decl.c (duplicate_decls): Adjust comment. * extend.texi (fprintf): Document new builtin. testsuite: * gcc.c-torture/execute/stdio-opt-3.c: New test. From-SVN: r38788
* builtins.def (BUILT_IN_CONJ, [...]): Define.Joseph Myers2001-01-051-1/+4
| | | | | | | | | | | | | | | | | * builtins.def (BUILT_IN_CONJ, BUILT_IN_CREAL, BUILT_IN_CIMAG): Define. * builtins.c (expand_builtin): Abort on BUILT_IN_CONJ, BUILT_IN_CREAL and BUILT_IN_CIMAG. * c-common.c (c_common_nodes_and_builtins): Create builtin conjf, conj, conjl, crealf, creal, creall, cimagf, cimag and cimagl. (expand_tree_builtin): Handle BUILT_IN_CONJ, BUILT_IN_CREAL and BUILT_IN_CIMAG. * extend.texi: Document these builtins. testsuite: * gcc.c-torture/execute/builtin-complex-1.c: New test. From-SVN: r38716
* builtins.def (BUILT_IN_LABS, [...]): Don't define.Joseph Myers2000-12-231-3/+0
| | | | | | | | | | | | | * builtins.def (BUILT_IN_LABS, BUILT_IN_LLABS, BUILT_IN_IMAXABS): Don't define. * builtins.c (expand_builtin): Don't handle BUILT_IN_LABS, BUILT_IN_LLABS and BUILT_IN_IMAXABS. * c-common.c (c_common_nodes_and_builtins): Use BUILT_IN_ABS for builtin labs, llabs and imaxabs. (expand_tree_builtin): Don't handle BUILT_IN_LABS, BUILT_IN_LLABS and BUILT_IN_IMAXABS. From-SVN: r38475
* builtins.c (expand_builtin_strcat, [...]): New functions.Kaveh R. Ghazi2000-12-031-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | * builtins.c (expand_builtin_strcat, expand_builtin_strncat, expand_builtin_strspn, expand_builtin_strcspn): New functions. (expand_builtin): Handle BUILT_IN_STRCAT, BUILT_IN_STRNCAT, BUILT_IN_STRSPN and BUILT_IN_STRCSPN. * builtins.def (BUILT_IN_STRCAT, BUILT_IN_STRNCAT, BUILT_IN_STRSPN, BUILT_IN_STRCSPN): New entries. * c-common.c (c_common_nodes_and_builtins): Declare builtin strcat, strncat, strspn and strcspn. (string_ftype_string_cstring): Renamed from `string_ftype_ptr_ptr'. * extend.texi (strcat, strcspn, strncat, strspn): Document new builtins. testsuite: * gcc.c-torture/execute/string-opt-9.c: New test. * gcc.c-torture/execute/string-opt-10.c: Likewise. * gcc.c-torture/execute/string-opt-11.c: Likewise. * gcc.c-torture/execute/string-opt-12.c: Likewise. From-SVN: r37964
* builtins.def (BUILT_IN_IMAXABS): Add.Joseph Myers2000-12-011-0/+1
| | | | | | | | | | | | * builtins.def (BUILT_IN_IMAXABS): Add. * builtins.c (expand_builtin): Also abort on BUILT_IN_IMAXABS. * c-common.c (c_common_nodes_and_builtins): Create builtin functions __builtin_imaxabs, and plain imaxabs unless flag_no_nonansi_builtin outside C99 mode. (expand_tree_builtin): Handle BUILT_IN_IMAXABS. * extend.texi: Document builtin imaxabs. From-SVN: r37932
* builtins.c (expand_builtin_strncmp, [...]): New functions.Kaveh R. Ghazi2000-11-271-0/+2
| | | | | | | | | | | | | | | | | | | * builtins.c (expand_builtin_strncmp, expand_builtin_strncpy): New functions. (expand_builtin): Handle BUILT_IN_STRNCPY and BUILT_IN_STRNCMP. * builtins.def (BUILT_IN_STRNCPY, BUILT_IN_STRNCMP): New entries. * c-common.c (c_common_nodes_and_builtins): Declare builtin strncpy and strncmp. * extend.texi (strncmp, strncpy): Document new builtins. testsuite: * gcc.c-torture/execute/string-opt-7.c: New test. * gcc.c-torture/execute/string-opt-8.c: Likewise. From-SVN: r37777
* builtins.c (expand_builtin): Handle BUILT_IN_INDEX and BUILT_IN_RINDEX.Kaveh R. Ghazi2000-11-131-0/+2
| | | | | | | | | | | | | | | | | | | * builtins.c (expand_builtin): Handle BUILT_IN_INDEX and BUILT_IN_RINDEX. Add missing checks for BUILT_IN_STRCHR and BUILT_IN_STRRCHR. * builtins.def (BUILT_IN_INDEX, BUILT_IN_RINDEX): New entries. * c-common.c (c_common_nodes_and_builtins): Declare index and rindex when nonansi builtins are allowed. * extend.texi (index, rindex): Document new builtins. testsuite: * gcc.c-torture/execute/string-opt-3.c: Also test builtin rindex. * gcc.c-torture/execute/string-opt-4.c: Also test builtin index. From-SVN: r37416
* builtins.c (c_strlen): Use TREE_STRING_LENGTH - 1 for max.Jakub Jelinek2000-11-091-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | * builtins.c (c_strlen): Use TREE_STRING_LENGTH - 1 for max. (c_getstr): New function. (expand_builtin_strstr): Do nothing if -fcheck-memory-usage. If both arguments are constant string, optimize out. (expand_builtin_strchr, expand_builtin_strrchr): New functions. (expand_builtin_strpbrk): Use c_getstr, do nothing if -fcheck-memory-usage. (expand_builtin_fputs): Likewise. (expand_builtin_strcmp): Add MODE argument. Use even if !HAVE_cmpstrsi. Optimize the case when both arguments are constant strings. (expand_builtin): Adjust expand_builtin_strcmp caller. Call expand_builtin_strchr and expand_builtin_strrchr. * c-common.c (c_common_nodes_and_builtins): Add strchr and strrchr builtins. * builtins.def (BUILT_IN_STRRCHR): Add. * gcc.c-torture/execute/string-opt-1.c: Add test for strstr with both arguments constant strings. * gcc.c-torture/execute/string-opt-3.c: New test. * gcc.c-torture/execute/string-opt-4.c: New test. * gcc.c-torture/execute/string-opt-5.c: New test. From-SVN: r37338
* builtins.c (expand_builtin_strpbrk): New function.Kaveh R. Ghazi2000-11-071-0/+1
| | | | | | | | | | | | | | | * builtins.c (expand_builtin_strpbrk): New function. (expand_builtin): Handle BUILT_IN_STRPBRK. * builtins.def (BUILT_IN_STRPBRK): New entry. * c-common.c (c_common_nodes_and_builtins): Declare builtin strpbrk. testsuite: * gcc.c-torture/execute/string-opt-2.c: New test. From-SVN: r37291
* builtins.c (expand_builtin_strstr): New function.Kaveh R. Ghazi2000-11-011-0/+2
| | | | | | | | | | | | * builtins.c (expand_builtin_strstr): New function. (expand_builtin): Handle BUILT_IN_STRSTR and BUILT_IN_STRCHR. * builtins.def (BUILT_IN_STRSTR, BUILT_IN_STRCHR): New entries. * c-common.c (c_common_nodes_and_builtins): Declare builtin strstr and builtin strchr. From-SVN: r37181
* builtins.def (BUILT_IN_LLABS): Add.Joseph Myers2000-09-241-0/+1
| | | | | | | | | | | * builtins.def (BUILT_IN_LLABS): Add. * builtins.c (expand_builtin): Also abort on BUILT_IN_LLABS. * c-common.c (c_common_nodes_builtins): Create builtin functions __builtin_llabs, and plain llabs unless no_nonansi_builtins outside of C99 mode. (expand_tree_builtin): Handle BUILT_IN_LLABS. From-SVN: r36585
* builtins.c (expand_builtin_fputs): Also expand when length!=1.Kaveh R. Ghazi2000-09-211-0/+1
| | | | | | | | | | | * builtins.c (expand_builtin_fputs): Also expand when length!=1. (expand_builtin): Handle BUILT_IN_FWRITE. * builtins.def (BUILT_IN_FWRITE): New entry. * c-common.c (c_common_nodes_and_builtins): Declare __builtin_fwrite. From-SVN: r36556