Commit Graph

44 Commits

Author SHA1 Message Date
Nick Clifton
dcfae47c5e Makefile.in (LIBGCC_DEPS): Add libgcc2.h.
* 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-09-09 08:39:18 +00:00
Jakub Jelinek
7700825281 Makefile.def (target_modules): Add libssp.
* 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-07-02 10:52:21 +02:00
Richard Henderson
7d69de618e c-cppbuiltin.c (c_cpp_builtins): Add __SSP_ALL__ and __SSP__.
* 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-27 09:41:16 +02:00
Kelley Cook
366ccddb2b Update FSF address.
From-SVN: r101317
2005-06-25 02:02:01 +00:00
Fariborz Jahanian
0b8495ae45 Fix problem with calling powi* builtins.
OKed by Richard Henderson.

From-SVN: r97278
2005-03-30 20:59:21 +00:00
Richard Sandiford
cfa7bd9ca2 libgcc2.h (LIBGCC2_HAS_SF_MODE): New macro.
* 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-03-21 07:22:22 +00:00
Steve Ellcey
4e9db8b235 re PR target/19930 (gcc.dg/pr19402-2.c fails on ia64-hpux)
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-25 21:34:49 +00:00
Richard Henderson
4f2e0d5ecc re PR middle-end/19920 (build broken on several targets due to recent 'DC' 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-16 14:55:33 -08:00
Richard Henderson
7e7e470f9b tree-complex.c (expand_complex_libcall): New.
* 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-11 16:26:57 -08:00
Kazu Hirata
c486021de8 builtins.def, [...]: Update copyright.
* 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-10 18:59:07 +00:00
Richard Guenther
17684d4629 re PR middle-end/19402 (__builtin_powi? still missing)
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
2005-02-09 20:58:13 +00:00
Eric Botcazou
0aec601466 re PR other/18665 (-ftrapv borks up simple integer arithmetic)
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-12-15 12:30:46 +00:00
Zack Weinberg
7370bebd3f * gthr-gnat.c, gthr-gnat.h, gthr.h, libgcc2.h, unwind-dw2-fde.h
* 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-11-30 08:15:42 +00:00
Kazu Hirata
279b5b3c95 dwarf.h, [...]: Update copyright.
* 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-10-22 15:03:23 +00:00
Mark Mitchell
3fc1f660b2 gthr-gnat.c: Add visibility #pragmas.
* 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-08-03 16:57:40 +00:00
Zack Weinberg
968a7562a6 libgcc2.c: Change all conditionals testing LIBGCC2_LONG_DOUBLE_TYPE_SIZE == 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
2004-07-27 21:41:23 +00:00
Kazu Hirata
6614fd40d2 alias.c: Fix comment formatting.
* 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-12-21 14:08:35 +00:00
David Turner
77c915d879 gbl-ctors.h: Add special license exception.
* gbl-ctors.h: Add special license exception.
	* libgcc2.h: Likewise.
	* tsystem.h: Likewise.
	* gcov-io.h: Likewise.

From-SVN: r65949
2003-04-22 17:21:04 +00:00
Richard Henderson
8275b011ca libgcc-std.ver (__clztf2): New.
* 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-09 10:35:22 -08:00
Richard Henderson
dfff898c27 libgcc2.h, libgcc2.c (__ffsSI2): New.
* libgcc2.h, libgcc2.c (__ffsSI2): New.
        (__ffsDI2): Rename from __ffsdi2.
        * mklibgcc.in (lib2funcs): Add _ffssi2.

From-SVN: r62422
2003-02-04 16:52:24 -08:00
Richard Henderson
dabb3f04da libgcc2.c (__ffsdi2, [...]): Change return type to "int".
* 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-03 14:42:20 -08:00
Richard Henderson
2928cd7aac [multiple changes]
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
2003-02-01 11:00:02 -08:00
Zack Weinberg
4977bab6ed Merge basic-improvements-branch to trunk
From-SVN: r60174
2002-12-16 18:23:00 +00:00
Jan Hubicka
b7c9bf289f final.c (end_final): Use C trees to output data structures for profiling.
* 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
2002-05-09 12:54:19 +00:00
Lars Brinkhoff
1322177dbd Makefile.in, [...]: replace "GNU CC" with "GCC".
* 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-08-22 14:35:51 +00:00
Richard Henderson
88657302b7 Standardize header guards.
From-SVN: r42615
2001-05-25 18:31:47 -07:00
Zack Weinberg
3fe68d0af3 libgcc2.c, libgcc2.h: Restore __eprintf.
* 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-14 02:46:22 +00:00
Zack Weinberg
fecd6201e6 Makefile.in: Exterminate all references to assert.h.
* 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-05-11 17:03:02 +00:00
Zack Weinberg
0f976b4577 Makefile.in (LIB2FUNCS): Remove _varargs and __dummy.
* 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-25 00:58:04 +00:00
Richard Henderson
706701afa0 libgcc2.h (__terminate_func_ptr): Remove typedef.
* 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-04-10 23:16:18 -07:00
Alexandre Oliva
5d0e648684 libgcc2.h (Wtype_MAX, Wtype_MIN): Define.
* libgcc2.h (Wtype_MAX, Wtype_MIN): Define.
* libgcc2.c (__fixunssfSI, __fixunsdfSI, __fixunsxfSI): Use
Wtype_MIN instead of LONG_MIN.

From-SVN: r39365
2001-01-31 03:53:32 +00:00
Chris Demetriou
8a1894ac7b libgcc-std.ver (GCC_3.0): Add __terminate_func_set to list of EH symbols.
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-23 19:03:12 -08:00
Michael Hayes
a8b462be08 libgcc2.h (W_TYPE_SIZE): Fix case where MIN_UNITS_PER_WORD == 1 and 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
2001-01-07 20:54:35 +00:00
Michael Hayes
66f7715434 libgcc2.h: Use Wtype for SItype and DWtype for DItype in prototypes.
* 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-12-16 22:43:58 +00:00
Kaveh R. Ghazi
8f54374ed3 Warning fixes:
* 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-20 23:32:10 +00:00
Richard Henderson
d6eacd4836 Makefile.in (LIB2FUNCS): Add _clz.
* 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-10-05 22:29:56 -07:00
Stephane Carrez
a746dbf5d7 libgcc2.h: Use LONG_LONG_TYPE_SIZE instead of MIN_UNITS_PER_WORD to decide 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-09-10 15:02:52 +02:00
Kaveh R. Ghazi
5ac9118ef9 Warning fixes:
* 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-06-11 04:29:49 +00:00
Jeff Law
f7af368f25 Update to libgcc copyright exception clause.
From-SVN: r33916
2000-05-15 17:14:17 -06:00
Richard Kenner
6da9c622a6 configure.in (alpha*-*-*): Aad config/alpha/t-alpha.
* 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-04-15 12:34:38 -04:00
Jakub Jelinek
32b32c8f62 libgcc2.h (MIN_UNITS_PER_WORD): Define to UNITS_PER_WORD if not defined.
* libgcc2.h (MIN_UNITS_PER_WORD): Define to UNITS_PER_WORD
	if not defined.

From-SVN: r32763
2000-03-27 13:43:01 +02:00
Richard Kenner
aa63d24463 * libgcc2.h: Use MIN_UNITS_PER_WORD, not UNITS_PER_WORD.
From-SVN: r32762
2000-03-27 06:03:26 -05:00
Kaveh R. Ghazi
d30d6e76fd libgcc2.h: Move prototypes above macros with the same name.
* 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-16 22:14:08 +00:00
Kaveh R. Ghazi
299b83b7fb libgcc2.h: New file.
* libgcc2.h: New file.
	* libgcc2.c: Move macros, typedefs and prototypes to libgcc2.h.

From-SVN: r32440
2000-03-09 03:39:09 +00:00