aboutsummaryrefslogtreecommitdiff
path: root/gcc/libgcc2.h
AgeCommit message (Collapse)AuthorFilesLines
2006-01-20libgcc2.c (__floatdisf, [...]): Don't use IBM Extended Double TFmode.Alan Modra1-0/+8
* libgcc2.c (__floatdisf, __floatdidf): Don't use IBM Extended Double TFmode. (__floatundisf, __floatundidf): Likewise. * libgcc2.h (IS_IBM_EXTENDED): Define. From-SVN: r110004
2005-12-15re PR other/25028 (TImode-to-floating conversions broken)Joseph Myers1-0/+38
PR other/25028 * libgcc2.h (SF_SIZE, DF_SIZE, XF_SIZE, TF_SIZE): Define. * libgcc2.c (__floatdixf, __floatundixf, __floatditf, __floatunditf): Use #error if type sizes don't match requirements of implementation. (__floatdisf, __floatdidf): Unify. Possibly use XFmode or TFmode as wider floating-point type. Use #error if type sizes don't match requirements of implementation. Avoid overflow in computing Wtype_MAXp1_F * Wtype_MAXp1_F. When special casing conversion, shift one more bit. Cast 1 to DWtype or UDWtype for shifting. (__floatundisf, __floatundidf): Likewise. * config/ia64/hpux.h (XF_SIZE, TF_SIZE): Define. * config/ia64/ia64.c (ia64_init_libfuncs): Use _U_Qfcnvfxt_quad_to_quad and _U_Qfcnvxf_quad_to_quad for TFmode-TImode conversions. * doc/tm.texi (SF_SIZE, DF_SIZE, XF_SIZE, TF_SIZE): Document. testsuite: * gcc.dg/torture/fp-int-convert-timode.c: Only XFAIL for LP64 IA64 HP-UX. From-SVN: r108598
2005-11-22fp-bit.c (clzusi): New function.Joseph Myers1-0/+8
* config/fp-bit.c (clzusi): New function. (si_to_float, usi_to_float): Use it to compute proper shift. (usi_to_float): Preserve guard bits when shifting right. * libgcc-std.ver (GCC_4.2.0): New version. * libgcc2.c (__floatundixf, __floatunditf, __floatundidf, __floatundisf): New functions. * libgcc2.h (__floatundixf, __floatunditf, __floatundidf, __floatundisf): Declare. * mklibgcc.in (lib2funcs): Add _floatundidf, _floatundisf, _floatundixf, and _floatunditf. * optabs.c (expand_float): If target does not define a pattern for signed or unsigned conversion, use an unsigned libcall instead of a signed one. (init_optabs): Initialize ufloat_optab. testsuite: * gcc.c-torture/execute/floatunsisf-1.c: New test. From-SVN: r107345
2005-09-09Makefile.in (LIBGCC_DEPS): Add libgcc2.h.Nick Clifton1-0/+10
* Makefile.in (LIBGCC_DEPS): Add libgcc2.h. * libgcc2.c (__clz_tab[], __popcount_tab[]): Set the fixed dimension of these arrays. * libgcc2.h (__clz_tab[], __popcount_tab[]): Add exports of these arrays. * longlong.h: Only provide a prototype for the __clz_tab[] array if this header has not been included from libgcc2.h. * config/stormy16/stormy16-lib2.c: Include libgcc2.h rather than defining own types. Provide prototypes for exported functions. Use the __clz_tab[] and __popcount_tab[] arrays provided by libgcc2.c. From-SVN: r104081
2005-07-02Makefile.def (target_modules): Add libssp.Jakub Jelinek1-5/+0
* Makefile.def (target_modules): Add libssp. * configure.in (target_libraries): Add target-libssp. * configure: Rebuilt. * Makefile.in: Rebuilt. gcc/ * gcc.c (LINK_SSP_SPEC): Define. (link_ssp_spec): New variable. (LINK_COMMAND_SPEC): Add %(link_ssp). (static_specs): Add link_ssp_spec. * configure.ac (TARGET_LIBC_PROVIDES_SSP): New test. * configure: Rebuilt. * config.in: Rebuilt. * config/rs6000/linux.h (TARGET_THREAD_SSP_OFFSET): Define. * config/rs6000/linux64.h (TARGET_THREAD_SSP_OFFSET): Likewise. * config/i386/linux.h (TARGET_THREAD_SSP_OFFSET): Likewise. * config/i386/linux64.h (TARGET_THREAD_SSP_OFFSET): Likewise. * config/rs6000/rs6000.md (stack_protect_set, stack_protect_test): If TARGET_THREAD_SSP_OFFSET is defined, use -0x7010(13) resp. -0x7008(2) instead of reading __stack_chk_guard variable. * config/i386/i386.md (UNSPEC_SP_SET, UNSPEC_SP_TEST): Change number. (UNSPEC_SP_TLS_SET, UNSPEC_SP_TLS_TEST): New constants. (stack_protect_set, stack_protect_test): Use *_tls* patterns if TARGET_THREAD_SSP_OFFSET is defined. (stack_tls_protect_set_si, stack_tls_protect_set_di, stack_tls_protect_test_si, stack_tls_protect_test_di): New insns. Revert: 2005-06-27 Richard Henderson <rth@redhat.com> * libgcc-std.ver (GCC_4.1.0): New. * libgcc.h (__stack_chk_guard): Declare. (__stack_chk_fail, __stack_chk_fail_local): Declare. * libgcc2.c (L_stack_chk, L_stack_chk_local): New. * mklibgcc.in (lib2funcs): Add them. From-SVN: r101531
2005-06-27c-cppbuiltin.c (c_cpp_builtins): Add __SSP_ALL__ and __SSP__.Richard Henderson1-0/+5
* c-cppbuiltin.c (c_cpp_builtins): Add __SSP_ALL__ and __SSP__. * cfgexpand.c: Include params.h. (has_protected_decls, has_short_buffer): New. (expand_stack_vars): Take a predicate to determine what to expand. (defer_stack_allocation): True when flag_stack_protect on. (SPCT_HAS_LARGE_CHAR_ARRAY, SPCT_HAS_SMALL_CHAR_ARRAY): New. (SPCT_HAS_ARRAY, SPCT_HAS_AGGREGATE): New. (stack_protect_classify_type, stack_protect_decl_phase): New. (stack_protect_decl_phase_1, stack_protect_decl_phase_2): New. (add_stack_protection_conflicts, create_stack_guard): New. (expand_used_vars): Add stack protection logic. (tree_expand_cfg): Likewise. * common.opt (Wstack-protector): New. (fstack-protector, fstack-protector-all): New. * function.c: Include predict.h. (assign_parm_adjust_stack_rtl): Zap stack_parm when stack protect wants to copy the parameter into the stack frame. (stack_protect_prologue, stack_protect_epilogue): New. (expand_function_end): Call stack_protect_epilogue. Do sjlj_emit_function_exit_after after naked_return_label. * function.h (struct function): Add stack_protect_guard. * params.def (PARAM_SSP_BUFFER_SIZE): New. * toplev.c (process_options): Disable flag_stack_protect and/or warn_stack_protect based on FRAME_GROWS_DOWNWARD. * tree.h (stack_protect_prologue): Declare. * target-def.h (TARGET_STACK_PROTECT_GUARD): New. (TARGET_STACK_PROTECT_FAIL): New. (TARGET_INITIALIZER): Add them. * target.h (struct gcc_target): Add stack_protect_guard and stack_protect_fail. * targhooks.c: Include ggc.h, gty header. (stack_chk_guard_decl, default_stack_protect_guard): New. (stack_chk_fail_decl, default_external_stack_protect_fail): New. (default_hidden_stack_protect_fail): New. * targhooks.h (default_stack_protect_guard): Declare. (default_external_stack_protect_fail): Declare. (default_hidden_stack_protect_fail): Declare. * config/i386/i386.c (TARGET_STACK_PROTECT_FAIL): New. * config/i386/i386.md (UNSPEC_SP_SET, UNSPEC_SP_TEST): New. (trap): Use ud2. (conditional_trap, conditional_trap_1): Remove. (stack_protect_set, stack_protect_set_si, stack_protect_set_di): New. (stack_protect_test, stack_protect_test_si, stack_protect_test_di): New. * doc/md.texi (stack_protect_set, stack_protect_test): New. * doc/tm.texi (TARGET_STACK_PROTECT_GUARD): New. (TARGET_STACK_PROTECT_FAIL): New. * libgcc-std.ver (GCC_4.1.0): New. * libgcc.h (__stack_chk_guard): Declare. (__stack_chk_fail, __stack_chk_fail_local): Declare. * libgcc2.c (L_stack_chk, L_stack_chk_local): New. * mklibgcc.in (lib2funcs): Add them. From-SVN: r101348
2005-06-25Update FSF address.Kelley Cook1-2/+2
From-SVN: r101317
2005-03-30Fix problem with calling powi* builtins.Fariborz Jahanian1-4/+6
OKed by Richard Henderson. From-SVN: r97278
2005-03-21libgcc2.h (LIBGCC2_HAS_SF_MODE): New macro.Richard Sandiford1-32/+15
* libgcc2.h (LIBGCC2_HAS_SF_MODE): New macro. (LIBGCC2_HAS_DF_MODE, LIBGCC2_HAS_TF_MODE, LIBGCC2_HAS_XF_MODE): Make the defaults false if BITS_PER_UNIT != 8. (SFtype, SCtype, __fixsfdi, __floatdisf, __fixunssfSI, __fixunssfDI) (__powisf2, __divsc3, __mulsc3): Guard with LIBGCC2_HAS_SF_MODE rather than BITS_PER_UNIT != 8. (L_fixdfdi, L_fixsfdi, L_fixtfdi, L_fixunsdfdi, L_fixunsdfsi) (L_fixunssfdi, L_fixunssfsi, L_fixunstfdi, L_fixunsxfdi, L_fixunsxfsi) (L_fixxfdi, L_floatdidf, L_floatdisf, L_floatditf, L_floatdixf): Remove #undefs. * libgcc2.c (__fixunssfDI, __fixsfdi, __floatdisf, __fixunssfSI) (__powisf2, __divsc3, __mulsc3): Guard with LIBGCC2_HAS_SF_MODE. From-SVN: r96778
2005-02-25re PR target/19930 (gcc.dg/pr19402-2.c fails on ia64-hpux)Steve Ellcey1-9/+19
PR target/19930 * doc/tm.texi (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Document. (LIBGCC2_HAS_DF_MODE): New. (LIBGCC2_HAS_XF_MODE): New. (LIBGCC2_HAS_TF_MODE): New. * libgcc2.h (LIBGCC2_HAS_XF_MODE): New name for HAVE_XFMODE. (LIBGCC2_HAS_TF_MODE): New name for HAVE_TFMODE. * libgcc2.c (LIBGCC2_HAS_XF_MODE): New name for HAVE_XFMODE. (LIBGCC2_HAS_TF_MODE): New name for HAVE_TFMODE. (LIBGCC2_HAS_DF_MODE): New name for HAVE_DFMODE. * config/ia64/t-ia64 (LIB1ASMFUNCS): Remove __compat and add _fixtfdi, _fixunstfdi, _floatditf * lib1funcs.asm: Remove L__compat. Add L_fixtfdi, L_fixunstfdi, L_floatditf. * config/ia64/hpux.h (LIBGCC2_HAS_XF_MODE): Define. (LIBGCC2_HAS_TF_MODE): Define. From-SVN: r95548
2005-02-16re PR middle-end/19920 (build broken on several targets due to recent 'DC' ↵Richard Henderson1-10/+32
type update to libgcc2) PR 19920 * libgcc2.c (WORD_SIZE): Remove all definitions; replace uses with W_TYPE_SIZE. (HIGH_WORD_COEFF, HIGH_HALFWORD_COEFF): Remove all definitions; replace uses with Wtype_MAXp1_F. (L_fixunstfdi, L_fixtfdi, L_floatditf, L_fixunsxfdi, L_fixxfdi, L_floatdixf, L_fixunsxfsi, L_fixunsdfdi, L_floatdidf, L_fixunsdfsi, L_powidf2, L_powixf2, L_powitf2, L_muldc3, L_divdc3, L_mulxc3, L_divxc3, L_multc3, L_divtc3): Protect with HAVE_DFMODE, HAVE_XFMODE, and HAVE_TFMODE as appropriate. (__fixunssfDI): Provide an implementation that doesn't need DFmode. (__floatdisf): Likewise. * libgcc2.h (LIBGCC2_DOUBLE_TYPE_SIZE): New. (HAVE_DFMODE, HAVE_XFMODE, HAVE_TFMODE): New. (Wtype_MAXp1_F): New. (DFtype, DCtype, __fixdfdi, __floatdidf, __fixunsdfSI, __fixunsdfDI, __powidf2, __divdc3, __muldc3): Protect with HAVE_DFMODE. From-SVN: r95121
2005-02-11tree-complex.c (expand_complex_libcall): New.Richard Henderson1-0/+13
* tree-complex.c (expand_complex_libcall): New. (expand_complex_multiplication): Use it for c99 compliance. (expand_complex_division): Likewise. * fold-const.c (fold_complex_add, fold_complex_mult): New. (fold): Call them. * builtins.c (built_in_names): Remove const. * tree.c (build_common_builtin_nodes): Build complex arithmetic builtins. * tree.h (BUILT_IN_COMPLEX_MUL_MIN, BUILT_IN_COMPLEX_MUL_MAX): New. (BUILT_IN_COMPLEX_DIV_MIN, BUILT_IN_COMPLEX_DIV_MAX): New. (built_in_names): Remove const. * c-common.c (c_common_type_for_mode): Handle complex modes. * flags.h, toplev.c (flag_complex_method): Rename from flag_complex_divide_method. * libgcc2.c (__divsc3, __divdc3, __divxc3, __divtc3, __mulsc3, __muldc3, __mulxc3, __multc3): New. * libgcc2.h: Declare them. * libgcc-std.ver: Export them. * mklibgcc.in (lib2funcs): Build them. From-SVN: r94909
2005-02-10builtins.def, [...]: Update copyright.Kazu Hirata1-1/+1
* builtins.def, haifa-sched.c, libgcc2.c, libgcc2.h, tree-ssa-loop-ivcanon.c, tree-ssa-loop-niter.c, config/cris/cris-protos.h, config/cris/cris.c: Update copyright. From-SVN: r94840
2005-02-09re PR middle-end/19402 (__builtin_powi? still missing)Richard Guenther1-0/+4
2005-02-09 Richard Guenther <rguenth@gcc.gnu.org> PR middle-end/19402 * builtins.def: New __builtin_powi[lf]. * builtins.c (mathfn_built_in): Handle BUILT_IN_POWI. (expand_builtin_powi): New function. (expand_builtin): Dispatch to expand_builtin_powi. * libgcc2.h: Add prototypes for __builtin_powi[lf]. * libgcc2.c: Add __builtin_powi[lf] implementation. * mklibgcc.in: Add __builtin_powi[lf] to lib2funcs. * optabs.h: Add powi_optab. * optabs.c (init_optabs): Initialize powi_optab. * doc/extend.texi: Document __builtin_powi[lf]. * gcc.dg/pr19402-1.c: New testcase. * gcc.dg/pr19402-2.c: likewise. From-SVN: r94774
2004-12-15re PR other/18665 (-ftrapv borks up simple integer arithmetic)Eric Botcazou1-10/+40
PR other/18665 * libgcc-std.ver (GCC_3.4.4): Inherit from GCC_3.4.2. Export __absvti2, __addvti3, __mulvti3, __negvti2 and __subvti3. * libgcc2.c (__addvsi3): Rename to __addvSI3. New version if COMPAT_SIMODE_TRAPPING_ARITHMETIC. (__addvdi3): Rename to __addvDI3. (__subvsi3): Rename to __subvSI3. Use word type for the result. New version if COMPAT_SIMODE_TRAPPING_ARITHMETIC. (__subvdi3): Rename to __subvDI3. (_mulvsi3): Rename to _mulvSI3. New version if COMPAT_SIMODE_TRAPPING_ARITHMETIC. (_mulvdi3): Rename to _mulvDI3. (__negvsi2): Rename to __negvSI2. New version if COMPAT_SIMODE_TRAPPING_ARITHMETIC. (__negvdi2): Rename to __negvDI2. (__absvsi2): Rename to __absvSI2. New version if COMPAT_SIMODE_TRAPPING_ARITHMETIC. (__absvdi2): Rename to __absvDI2. * libgcc2.h (64-bit targets): Define COMPAT_SIMODE_TRAPPING_ARITHMETIC. (__absvSI2, __addvSI3, __subvSI3, __mulvSI3, __negvSI2, __absvDI2, __addvDI3, __subvDI3, __mulvDI3, __negvDI2): Define to the appropriate symbol and declare. (__absvsi2, __addvsi3, __subvsi3, __mulvsi3, __negvsi2): Declare if COMPAT_SIMODE_TRAPPING_ARITHMETIC. From-SVN: r92187
2004-11-30* gthr-gnat.c, gthr-gnat.h, gthr.h, libgcc2.h, unwind-dw2-fde.hZack Weinberg1-0/+4
* unwind.h: Surround all visibility pragmas with #ifndef HIDE_EXPORTS. * mklibgcc.in: Drastic restructure for comprehensibility. Remove the old hidden-directive hack. Eliminate support for .txt files in LIB2ADD etc (never used). Eliminate support for assembly source files in LIB2ADDEH* and LIBUNWIND (also never used). Build up dependency lists for libraries incrementally. If we have SHLIB_LINK, compile each file twice, once for the static and once for the shared library; also probe for -fvisibility=hidden in the generated libgcc.mk. If found, pass that and -DHIDE_EXPORTS to the compilation of every C source file going into the static library. If found, generate hidden-directive lists for every assembly source file going into the static library, but incorporate them with -include instead of ld -r. Write comments into generated libgcc.mk to facilitate debugging. * Makefile.in: Pass ASM_HIDDEN_OP to mklibgcc. * config/t-slibgcc-darwin: Define ASM_HIDDEN_OP. * config/darwin.h (REAL_LIBGCC_SPEC): Put -lgcc back in -Zdynamiclib case. From-SVN: r91513
2004-10-22dwarf.h, [...]: Update copyright.Kazu Hirata1-1/+1
* dwarf.h, gthr-dce.h, gthr-single.h, gthr-solaris.h, gthr.h, libfuncs.h, libgcc2.h, stab.def, tsystem.h: Update copyright. From-SVN: r89446
2004-08-03gthr-gnat.c: Add visibility #pragmas.Mark Mitchell1-0/+19
* gthr-gnat.c: Add visibility #pragmas. * gthr-gnat.h : Likewise. * gthr.h: Likewise. * libgcc2.c (__ffsSI2): Move prototype to libgcc2.h. (__ffsDI2): Likewise. (__clzSI2): Likewise. (__ctzSI2): Likewise. (__ctzDI2): Likewise. (__popcountSI2): Likewise. (__popcountDI2): Likewise. (__paritySI2): Likewise. (__parityDI2): Likewise. * libgcc2.h: Add visibility #pragmas. (__clzDI2): Add prototype. (__clzSI2): Likewise. (__ctzSI2): Likewise. (__ffsDI2): Likewise. (__ffsSI2): Likewise. (__ctzDI2): Likewise. (__popcountSI2): Likewise. (__popcountDI2): Likewise. (__paritySI2): Likewise. (__parityDI2): Likewise. * unwind-dw2-fde.h: Add visibility #pragmas. * unwind.h: Likewise. From-SVN: r85489
2004-07-27libgcc2.c: Change all conditionals testing LIBGCC2_LONG_DOUBLE_TYPE_SIZE == ↵Zack Weinberg1-2/+2
96 to == 80. * libgcc2.c: Change all conditionals testing LIBGCC2_LONG_DOUBLE_TYPE_SIZE == 96 to == 80. * libgcc2.h: Likewise. * config/i386/i386.c (ix86_init_mmx_sse_builtins): Set TYPE_PRECISION of float80_type to 80. * config/ia64/ia64.c (ia64_init_builtins): Set TYPE_PRECISION of fpreg_type and float80_type to 80. * config/i386/i386.h, config/ia64/ia64.h, config/m68k/m68k.h * config/m68k/netbsd-elf.h: Change LONG_DOUBLE_TYPE_SIZE and possibly LIBGCC2_LONG_DOUBLE_TYPE_SIZE to evaluate to 80 whenever they would formerly have evaluated to 96. * config/i386/sco5.h: Remove unnecessary redefinition of LONG_DOUBLE_TYPE_SIZE. * doc/rtl.texi: Clarify uses of XFmode and TFmode. * config/i386/i386-modes.def: Use FRACTIONAL_FLOAT_MODE for XFmode, with a bitsize of 80. Update commentary. * config/ia64/ia64-modes.def: Likewise. * config/m68k/m68k-modes.def: Likewise. From-SVN: r85232
2003-12-21alias.c: Fix comment formatting.Kazu Hirata1-3/+3
* alias.c: Fix comment formatting. * alloc-pool.c: Likewise. * bitmap.c: Likewise. * bitmap.h: Likewise. * bt-load.c: Likewise. * c-common.c: Likewise. * c-common.h: Likewise. * c-decl.c: Likewise. * c-opts.c: Likewise. * c-pretty-print.c: Likewise. * caller-save.c: Likewise. * cfghooks.h: Likewise. * cgraph.c: Likewise. * collect2.c: Likewise. * cppfiles.c: Likewise. * cpplib.h: Likewise. * dwarf2out.c: Likewise. * dwarfout.c: Likewise. * emit-rtl.c: Likewise. * final.c: Likewise. * function.c: Likewise. * gcov.c: Likewise. * gcse.c: Likewise. * genemit.c: Likewise. * ggc.h: Likewise. * haifa-sched.c: Likewise. * ifcvt.c: Likewise. * libgcc2.h: Likewise. * loop.c: Likewise. * predict.h: Likewise. * unwind-libunwind.c: Likewise. * varasm.c: Likewise. From-SVN: r74907
2003-04-22gbl-ctors.h: Add special license exception.David Turner1-0/+8
* gbl-ctors.h: Add special license exception. * libgcc2.h: Likewise. * tsystem.h: Likewise. * gcov-io.h: Likewise. From-SVN: r65949
2003-02-09libgcc-std.ver (__clztf2): New.Richard Henderson1-14/+8
* libgcc-std.ver (__clztf2): New. (__ctztf2, __popcounttf2, __paritytf2): New. * libgcc2.c (__clzSI2, __clzDI2, __ctzSI2, __ctzDI2, __popcountSI2, __popcountDI2, __paritySI2, __parityDI2): Use UWmode and UDWmode; adjust code to match the different type sizes. * libgcc2.h (__clzSI2, __ctzSI2, __popcountSI2, __paritySI2, __clzDI2, __ctzDI2, __popcountDI2, __parityDI2): New macros. * optabs.c (init_integral_libfuncs): Don't hard-code SImode and TImode; select word_mode and twice that. (init_floating_libfuncs): Don't hard-code SFmode and TFmode; select the modes from float, double, and long double. (init_optabs): Remove duplicate initializations. From-SVN: r62606
2003-02-04libgcc2.h, libgcc2.c (__ffsSI2): New.Richard Henderson1-1/+3
* libgcc2.h, libgcc2.c (__ffsSI2): New. (__ffsDI2): Rename from __ffsdi2. * mklibgcc.in (lib2funcs): Add _ffssi2. From-SVN: r62422
2003-02-03libgcc2.c (__ffsdi2, [...]): Change return type to "int".Richard Henderson1-23/+11
* libgcc2.c (__ffsdi2, __clzsi2, __clzdi2, __ctzsi2, __ctzdi2, __popcountsi2, __popcountdi2, __paritysi2, __paritydi2): Change return type to "int". Shuffle declarations and undef int trap. * libgcc2.h: Remove their declarations. * optabs.c (expand_unop): Force outmode to int for bitops. From-SVN: r62353
2003-02-01[multiple changes]Richard Henderson1-1/+26
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
2002-12-16Merge basic-improvements-branch to trunkZack Weinberg1-13/+0
From-SVN: r60174
2002-05-09final.c (end_final): Use C trees to output data structures for profiling.Jan Hubicka1-3/+8
* final.c (end_final): Use C trees to output data structures for profiling. * Makefile.in (LIBGCC_DEPS): Added missing dependency on gcov-io.h (profile.o): New dependency profile.h (final.o): New dependency profile.h * profile.h: New file. New global structure profile_info. * final.h (count_edges_instrumented_now): Declare. (current_function_cfg_checksum): Declare. (function_list): New structure. (functions_head, functions_tail): New static variables. (end_final): Emits more data, removed some -ax stuff. (final): Stores function names and chcksums. * gcov-io.h (__write_gcov_string): New function. (__read_gcov_string): New function. * gcov.c (read_profile): New function. (create_program_flow_graph): Uses read_profile instead of reading da_file. (read_files): Removed da_file checking, it's done by read_profile now. * libgcc2.c (bb_function_info): New structure. (bb): New field in structure, removed some -ax stuff. (__bb_exit_func): Changed structure of da_file. * profile.c (count_edges_instrumented_now): New global variable. (current_function_cfg_checksum): New global variable. (max_counter_in_program): New global variable. (get_exec_counts): New function. (compute_checksum): New function. (instrument_edges): Sets count_edges_instrumented_now. (compute_branch_probabilities): Uses get_exec_counts instead of reading da_file. (branch_prob): Calls compute_checksum and writes extra data to bbg_file. (init_branch_prob): Removed da_file checking, done in get_exec_counts now. (end_branch_prob): Removed da_file checking, done in get_exec_counts now. * gcov.texi: Updated information about gcov file format. Co-Authored-By: Pavel Nejedly <bim@atrey.karlin.mff.cuni.cz> From-SVN: r53326
2001-08-22Makefile.in, [...]: replace "GNU CC" with "GCC".Lars Brinkhoff1-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
2001-05-25Standardize header guards.Richard Henderson1-3/+3
From-SVN: r42615
2001-05-14libgcc2.c, libgcc2.h: Restore __eprintf.Zack Weinberg1-0/+2
* libgcc2.c, libgcc2.h: Restore __eprintf. Label as used for binary backward compat only. * Makefile.in (LIB2FUNCS_ST): New. Put _eprintf here, not in LIB2FUNCS. Pass it to mklibgcc. * mklibgcc.in: Handle LIB2FUNCS_ST. * Makefile.in (installdirs): Don't create $(gcc_tooldir). From-SVN: r42057
2001-05-11Makefile.in: Exterminate all references to assert.h.Zack Weinberg1-2/+0
* Makefile.in: Exterminate all references to assert.h. * cross-make: Likewise. * assert.h: Delete. * configure.in: Correct commentary. * configure: Regenerate. * po/POTFILES.in: Remove assert.h. * libgcc-std.ver, libgcc2.c, libgcc2.h, sys-protos.h: Remove __eprintf. * config/t-freebsd, config/t-linux, config/t-linux-aout, config/t-netbsd, config/t-rtems, config/x-linux, config/i386/t-beos, config/mcore/t-mcore, config/mcore/t-mcore-pe: No need to override INSTALL_ASSERT_H. * fixinc/fixinc.dgux, fixinc/fixinc.interix, fixinc/fixinc.ptx, fixinc/fixinc.svr4, fixinc/fixinc.winnt, fixinc/fixinc.wrap, fixinc/fixincl.sh: Don't install assert.h into objdir/include. From-SVN: r41972
2001-04-25Makefile.in (LIB2FUNCS): Remove _varargs and __dummy.Zack Weinberg1-2/+0
* Makefile.in (LIB2FUNCS): Remove _varargs and __dummy. * libgcc-std.ver: Remove __builtin_saveregs, __dummy, and __empty. * libgcc2.c: Remove __dummy and __builtin_saveregs. * libgcc2.h: Don't prototype __builtin_saveregs or __dummy. * config/i860/varargs.asm: New file - preserve i860 __builtin_saveregs for future reference. From-SVN: r41529
2001-04-10libgcc2.h (__terminate_func_ptr): Remove typedef.Richard Henderson1-19/+0
* libgcc2.h (__terminate_func_ptr): Remove typedef. (__pure_virtual, __terminate, __terminate_set_func, __default_terminate, __throw_type_match, __empty, __get_eh_context, __get_eh_info, __get_dynamic_handler_chain, __eh_rtime_match, __unwinding_cleanup, __rethrow, __sjthrow, __sjpopnthrow, __eh_alloc, __eh_free): Remove prototypes of deleted functions. From-SVN: r41240
2001-01-31libgcc2.h (Wtype_MAX, Wtype_MIN): Define.Alexandre Oliva1-1/+4
* libgcc2.h (Wtype_MAX, Wtype_MIN): Define. * libgcc2.c (__fixunssfSI, __fixunsdfSI, __fixunsxfSI): Use Wtype_MIN instead of LONG_MIN. From-SVN: r39365
2001-01-23libgcc-std.ver (GCC_3.0): Add __terminate_func_set to list of EH symbols.Chris Demetriou1-0/+3
2001-01-23 Chris Demetriou <cgd@broadcom.com> * libgcc-std.ver (GCC_3.0): Add __terminate_func_set to list of EH symbols. * libgcc2.c (__terminate_func): Make variable static. (__terminate_set_func): New function to set __terminate_func. * libgcc2.h (__terminate_func_ptr): New typedef. (__terminate_set_func): New function. From-SVN: r39224
2001-01-07libgcc2.h (W_TYPE_SIZE): Fix case where MIN_UNITS_PER_WORD == 1 and ↵Michael Hayes1-1/+2
LONG_LONG_TYPE_SIZE > 32. * libgcc2.h (W_TYPE_SIZE): Fix case where MIN_UNITS_PER_WORD == 1 and LONG_LONG_TYPE_SIZE > 32. From-SVN: r38782
2000-12-16libgcc2.h: Use Wtype for SItype and DWtype for DItype in prototypes.Michael Hayes1-10/+10
* libgcc2.h: Use Wtype for SItype and DWtype for DItype in prototypes. * libgcc2.c (__absvsi2): Use Wtype and DWtype. (__absvdi2, __addvsi3, __addvdi3, __subvsi3): Likewise. (__subvdi3, __mulvsi3, __mulvdi3, __negvsi2, __negvdi2): Likewise. From-SVN: r38314
2000-10-20Warning fixes:Kaveh R. Ghazi1-0/+11
* mips.h (REG_CLASS_FROM_LETTER): Cast array arg to unsigned char. * sparc.c (load_pic_register): Delete unused varaible. * libgcc2.c (__addvsi3): Delete unused variable. * libgcc2.h (__absvsi2, __absvdi2, __addvsi3, __addvdi3, __subvsi3, __subvdi3, __mulvsi3, __mulvdi3, __negvsi2, __negvdi2): Prototype. * ssa.c (apply_delayed_renames): Avoid undefined operation. * toplev.c (display_target_options): Make static to match prototype. Delete empty declaration. From-SVN: r36987
2000-10-05Makefile.in (LIB2FUNCS): Add _clz.Richard Henderson1-6/+0
* Makefile.in (LIB2FUNCS): Add _clz. * libgcc2.c (__ffsdi2): Use count_trailing_zeros. (__clz_tab): Put in its own unit, non-static. * libgcc2.h: Always include longlong.h. From-SVN: r36744
2000-09-10libgcc2.h: Use LONG_LONG_TYPE_SIZE instead of MIN_UNITS_PER_WORD to decide ↵Stephane Carrez1-2/+2
whether 64-bit... * libgcc2.h: Use LONG_LONG_TYPE_SIZE instead of MIN_UNITS_PER_WORD to decide whether 64-bit support must be generated. From-SVN: r36298
2000-06-11Warning fixes:Kaveh R. Ghazi1-0/+2
* bb-reorder.c (build_scope_forest): Initialize variable `curr_scope'. * calls.c (expand_call): Likewise for variables `save_pending_stack_adjust' and `save_stack_pointer_delta'. * i386.c (function_arg_advance, function_arg): Cast to avoid signed/unsigned warnings. * i386.h (MEMORY_MOVE_COST): Likewise. * ifcvt.c (cond_exec_process_if_block): Initialize variables `else_start' and `else_end'. * libgcc2.h (__eh_alloc, __eh_free): Prototype. * regrename.c (rr_replace_reg): Initialize variable `dest_subregno'. ch: * Makefile.in (EXPR_H): New dependency variable. (actions.o, expr.o): Use EXPR_H. (lang.o): Depend on RTL_H and EXPR_H. * lang.c: Include rtl.h and expr.h. (lang_get_alias_set): Mark parameter with ATTRIBUTE_UNUSED. cp: * decl2.c (compare_options): Don't needlessly cast away const-ness. f: * com.c (lang_get_alias_set): Mark parameter with ATTRIBUTE_UNUSED. java: * decl.c (create_primitive_vtable): Prototype. * jcf-write.c (generate_bytecode_insns): Initialize variable `saved_context'. * lang.c (lang_get_alias_set): Mark parameter with ATTRIBUTE_UNUSED. From-SVN: r34490
2000-05-15Update to libgcc copyright exception clause.Jeff Law1-7/+0
From-SVN: r33916
2000-04-15configure.in (alpha*-*-*): Aad config/alpha/t-alpha.Richard Kenner1-38/+54
* configure.in (alpha*-*-*): Aad config/alpha/t-alpha. * configure: Rebuilt. * libgcc2.c (__fixunstfDI): Renamed from __fixunstfdi. (__fixunsxfDI): Renamed from __fixunsxfdi. (__fixunsdfDI): Renamed from __fixunsdfdi. (__fixunssfDI): Renamed from __fixunssfdi. (__floatdisf): Use proper type in REP_BIT macro. (__fixunsxfSI): Renamed from __fixunsxfsi. (__fixunsdfSI): Renamed from __fixunsdfsi. (__fixunssfSI): Renamed from __fixunssfsi. * libgcc2.h: Add cases for MIN_UNITS_PER_WORD > 4. Change location of macros and upper-case some names as above. * longlong.h ([alpha]): Use PARAMS, not __P in decl of __udiv__qrnnd. * config/alpha/t-alpha, config/alpha/qrnnd.asm: New files. From-SVN: r33166
2000-03-27libgcc2.h (MIN_UNITS_PER_WORD): Define to UNITS_PER_WORD if not defined.Jakub Jelinek1-0/+4
* libgcc2.h (MIN_UNITS_PER_WORD): Define to UNITS_PER_WORD if not defined. From-SVN: r32763
2000-03-27* libgcc2.h: Use MIN_UNITS_PER_WORD, not UNITS_PER_WORD.Richard Kenner1-4/+4
From-SVN: r32762
2000-03-16libgcc2.h: Move prototypes above macros with the same name.Kaveh R. Ghazi1-51/+54
* libgcc2.h: Move prototypes above macros with the same name. Wrap some function prototypes in the conditional which indicates whether they are supported, i.e. "BITS_PER_UNIT == 8". From-SVN: r32594
2000-03-09libgcc2.h: New file.Kaveh R. Ghazi1-0/+292
* libgcc2.h: New file. * libgcc2.c: Move macros, typedefs and prototypes to libgcc2.h. From-SVN: r32440