Skip to content
Snippets Groups Projects
  1. Feb 01, 2024
    • Jakub Jelinek's avatar
      libgcc: Avoid warnings on __gcc_nested_func_ptr_created [PR113402] · e9b2f15d
      Jakub Jelinek authored
      I'm seeing hundreds of
      In file included from ../../../libgcc/libgcc2.c:56:
      ../../../libgcc/libgcc2.h:32:13: warning: conflicting types for built-in function ‘__gcc_nested_func_ptr_created’; expected ‘void(void *, void *, void *)’
      +[-Wbuiltin-declaration-mismatch]
         32 | extern void __gcc_nested_func_ptr_created (void *, void *, void **);
            |             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      warnings.
      
      Either we need to add like in r14-6218
        #pragma GCC diagnostic ignored "-Wbuiltin-declaration-mismatch"
      (but in that case because of the libgcc2.h prototype (why is it there?)
      it would need to be also with #pragma GCC diagnostic push/pop around),
      or we could go with just following how the builtins are prototyped on the
      compiler side and only cast to void ** when dereferencing (which is in
      a single spot in each TU).
      
      2024-02-01  Jakub Jelinek  <jakub@redhat.com>
      
      	PR libgcc/113402
      	* libgcc2.h (__gcc_nested_func_ptr_created): Change type of last
      	argument from void ** to void *.
      	* config/i386/heap-trampoline.c (__gcc_nested_func_ptr_created):
      	Change type of dst from void ** to void * and cast dst to void **
      	before dereferencing it.
      	* config/aarch64/heap-trampoline.c (__gcc_nested_func_ptr_created):
      	Likewise.
      e9b2f15d
  2. Jan 28, 2024
    • Iain Sandoe's avatar
      Fix __builtin_nested_func_ptr_{created,deleted} symbol versions [PR113402] · 837827f8
      Iain Sandoe authored
      
      The symbols for the functions supporting heap-based trampolines were
      exported at an incorrect symbol version, the following patch fixes that.
      
      As requested in the PR, this also renames __builtin_nested_func_ptr* to
      __gcc_nested_func_ptr*.  In carrying our the rename, we move the builtins
      to use DEF_EXT_LIB_BUILTIN.
      
      	PR libgcc/113402
      
      gcc/ChangeLog:
      
      	* builtins.cc (expand_builtin): Handle BUILT_IN_GCC_NESTED_PTR_CREATED
      	and BUILT_IN_GCC_NESTED_PTR_DELETED.
      	* builtins.def (BUILT_IN_GCC_NESTED_PTR_CREATED,
      	BUILT_IN_GCC_NESTED_PTR_DELETED): Make these builtins LIB-EXT and
      	rename the library fallbacks to __gcc_nested_func_ptr_created and
      	__gcc_nested_func_ptr_deleted.
      	* doc/invoke.texi: Rename these to __gcc_nested_func_ptr_created
      	and __gcc_nested_func_ptr_deleted.
      	* tree-nested.cc (finalize_nesting_tree_1): Use builtin_explicit for
      	BUILT_IN_GCC_NESTED_PTR_CREATED and BUILT_IN_GCC_NESTED_PTR_DELETED.
      	* tree.cc (build_common_builtin_nodes): Build the
      	BUILT_IN_GCC_NESTED_PTR_CREATED and BUILT_IN_GCC_NESTED_PTR_DELETED local
      	builtins only for non-explicit.
      
      libgcc/ChangeLog:
      
      	* config/aarch64/heap-trampoline.c: Rename
      	__builtin_nested_func_ptr_created to __gcc_nested_func_ptr_created and
      	__builtin_nested_func_ptr_deleted to __gcc_nested_func_ptr_deleted.
      	* config/i386/heap-trampoline.c: Likewise.
      	* libgcc2.h: Likewise.
      	* libgcc-std.ver.in (GCC_7.0.0): Likewise and then move
      	__gcc_nested_func_ptr_created and
      	__gcc_nested_func_ptr_deleted from this symbol version to ...
      	(GCC_14.0.0): ... this one.
      
      Signed-off-by: default avatarIain Sandoe <iain@sandoe.co.uk>
      Co-authored-by: default avatarJakub Jelinek <jakub@redhat.com>
      837827f8
  3. Jan 12, 2024
    • Jakub Jelinek's avatar
      libgcc: Use may_alias attribute in bitint handlers · 6dece991
      Jakub Jelinek authored
      As discussed on IRC, the following patch uses may_alias attribute, so that
      on targets like aarch64 where abi_limb_mode != limb_mode the library
      accesses the limbs (half limbs of the ABI) in the arrays with conservative
      alias set.
      
      2024-01-12  Jakub Jelinek  <jakub@redhat.com>
      
      	* libgcc2.h (UBILtype): New typedef with may_alias attribute.
      	(__mulbitint3, __divmodbitint4): Use UBILtype * instead of
      	UWtype * and const UBILtype * instead of const UWtype *.
      	* libgcc2.c (bitint_reduce_prec, bitint_mul_1, bitint_addmul_1,
      	__mulbitint3, bitint_negate, bitint_submul_1, __divmodbitint4):
      	Likewise.
      	* soft-fp/bitint.h (UBILtype): Change define into a typedef with
      	may_alias attribute.
      6dece991
  4. Jan 03, 2024
  5. Dec 06, 2023
    • Alexandre Oliva's avatar
      Introduce strub: machine-independent stack scrubbing · f0a90c7d
      Alexandre Oliva authored
      This patch adds the strub attribute for function and variable types,
      command-line options, passes and adjustments to implement it,
      documentation, and tests.
      
      Stack scrubbing is implemented in a machine-independent way: functions
      with strub enabled are modified so that they take an extra stack
      watermark argument, that they update with their stack use, and the
      caller can then zero it out once it regains control, whether by return
      or exception.  There are two ways to go about it: at-calls, that
      modifies the visible interface (signature) of the function, and
      internal, in which the body is moved to a clone, the clone undergoes
      the interface change, and the function becomes a wrapper, preserving
      its original interface, that calls the clone and then clears the stack
      used by it.
      
      Variables can also be annotated with the strub attribute, so that
      functions that read from them get stack scrubbing enabled implicitly,
      whether at-calls, for functions only usable within a translation unit,
      or internal, for functions whose interfaces must not be modified.
      
      There is a strict mode, in which functions that have their stack
      scrubbed can only call other functions with stack-scrubbing
      interfaces, or those explicitly marked as callable from strub
      contexts, so that an entire call chain gets scrubbing, at once or
      piecemeal depending on optimization levels.  In the default mode,
      relaxed, this requirement is not enforced by the compiler.
      
      The implementation adds two IPA passes, one that assigns strub modes
      early on, another that modifies interfaces and adds calls to the
      builtins that jointly implement stack scrubbing.  Another builtin,
      that obtains the stack pointer, is added for use in the implementation
      of the builtins, whether expanded inline or called in libgcc.
      
      There are new command-line options to change operation modes and to
      force the feature disabled; it is enabled by default, but it has no
      effect and is implicitly disabled if the strub attribute is never
      used.  There are also options meant to use for testing the feature,
      enabling different strubbing modes for all (viable) functions.
      
      
      for  gcc/ChangeLog
      
      	* Makefile.in (OBJS): Add ipa-strub.o.
      	(GTFILES): Add ipa-strub.cc.
      	* builtins.def (BUILT_IN_STACK_ADDRESS): New.
      	(BUILT_IN___STRUB_ENTER): New.
      	(BUILT_IN___STRUB_UPDATE): New.
      	(BUILT_IN___STRUB_LEAVE): New.
      	* builtins.cc: Include ipa-strub.h.
      	(STACK_STOPS, STACK_UNSIGNED): Define.
      	(expand_builtin_stack_address): New.
      	(expand_builtin_strub_enter): New.
      	(expand_builtin_strub_update): New.
      	(expand_builtin_strub_leave): New.
      	(expand_builtin): Call them.
      	* common.opt (fstrub=*): New options.
      	* doc/extend.texi (strub): New type attribute.
      	(__builtin_stack_address): New function.
      	(Stack Scrubbing): New section.
      	* doc/invoke.texi (-fstrub=*): New options.
      	(-fdump-ipa-*): New passes.
      	* gengtype-lex.l: Ignore multi-line pp-directives.
      	* ipa-inline.cc: Include ipa-strub.h.
      	(can_inline_edge_p): Test strub_inlinable_to_p.
      	* ipa-split.cc: Include ipa-strub.h.
      	(execute_split_functions): Test strub_splittable_p.
      	* ipa-strub.cc, ipa-strub.h: New.
      	* passes.def: Add strub_mode and strub passes.
      	* tree-cfg.cc (gimple_verify_flow_info): Note on debug stmts.
      	* tree-pass.h (make_pass_ipa_strub_mode): Declare.
      	(make_pass_ipa_strub): Declare.
      	(make_pass_ipa_function_and_variable_visibility): Fix
      	formatting.
      	* tree-ssa-ccp.cc (optimize_stack_restore): Keep restores
      	before strub leave.
      	* attribs.cc: Include ipa-strub.h.
      	(decl_attributes): Support applying attributes to function
      	type, rather than pointer type, at handler's request.
      	(comp_type_attributes): Combine strub_comptypes and target
      	comp_type results.
      	* doc/tm.texi.in (TARGET_STRUB_USE_DYNAMIC_ARRAY): New.
      	(TARGET_STRUB_MAY_USE_MEMSET): New.
      	* doc/tm.texi: Rebuilt.
      	* cgraph.h (symtab_node::reset): Add preserve_comdat_group
      	param, with a default.
      	* cgraphunit.cc (symtab_node::reset): Use it.
      
      for  gcc/c-family/ChangeLog
      
      	* c-attribs.cc: Include ipa-strub.h.
      	(handle_strub_attribute): New.
      	(c_common_attribute_table): Add strub.
      
      for  gcc/ada/ChangeLog
      
      	* gcc-interface/trans.cc: Include ipa-strub.h.
      	(gigi): Make internal decls for targets of compiler-generated
      	calls strub-callable too.
      	(build_raise_check): Likewise.
      	* gcc-interface/utils.cc: Include ipa-strub.h.
      	(handle_strub_attribute): New.
      	(gnat_internal_attribute_table): Add strub.
      
      for  gcc/testsuite/ChangeLog
      
      	* c-c++-common/strub-O0.c: New.
      	* c-c++-common/strub-O1.c: New.
      	* c-c++-common/strub-O2.c: New.
      	* c-c++-common/strub-O2fni.c: New.
      	* c-c++-common/strub-O3.c: New.
      	* c-c++-common/strub-O3fni.c: New.
      	* c-c++-common/strub-Og.c: New.
      	* c-c++-common/strub-Os.c: New.
      	* c-c++-common/strub-all1.c: New.
      	* c-c++-common/strub-all2.c: New.
      	* c-c++-common/strub-apply1.c: New.
      	* c-c++-common/strub-apply2.c: New.
      	* c-c++-common/strub-apply3.c: New.
      	* c-c++-common/strub-apply4.c: New.
      	* c-c++-common/strub-at-calls1.c: New.
      	* c-c++-common/strub-at-calls2.c: New.
      	* c-c++-common/strub-defer-O1.c: New.
      	* c-c++-common/strub-defer-O2.c: New.
      	* c-c++-common/strub-defer-O3.c: New.
      	* c-c++-common/strub-defer-Os.c: New.
      	* c-c++-common/strub-internal1.c: New.
      	* c-c++-common/strub-internal2.c: New.
      	* c-c++-common/strub-parms1.c: New.
      	* c-c++-common/strub-parms2.c: New.
      	* c-c++-common/strub-parms3.c: New.
      	* c-c++-common/strub-relaxed1.c: New.
      	* c-c++-common/strub-relaxed2.c: New.
      	* c-c++-common/strub-short-O0-exc.c: New.
      	* c-c++-common/strub-short-O0.c: New.
      	* c-c++-common/strub-short-O1.c: New.
      	* c-c++-common/strub-short-O2.c: New.
      	* c-c++-common/strub-short-O3.c: New.
      	* c-c++-common/strub-short-Os.c: New.
      	* c-c++-common/strub-strict1.c: New.
      	* c-c++-common/strub-strict2.c: New.
      	* c-c++-common/strub-tail-O1.c: New.
      	* c-c++-common/strub-tail-O2.c: New.
      	* c-c++-common/torture/strub-callable1.c: New.
      	* c-c++-common/torture/strub-callable2.c: New.
      	* c-c++-common/torture/strub-const1.c: New.
      	* c-c++-common/torture/strub-const2.c: New.
      	* c-c++-common/torture/strub-const3.c: New.
      	* c-c++-common/torture/strub-const4.c: New.
      	* c-c++-common/torture/strub-data1.c: New.
      	* c-c++-common/torture/strub-data2.c: New.
      	* c-c++-common/torture/strub-data3.c: New.
      	* c-c++-common/torture/strub-data4.c: New.
      	* c-c++-common/torture/strub-data5.c: New.
      	* c-c++-common/torture/strub-indcall1.c: New.
      	* c-c++-common/torture/strub-indcall2.c: New.
      	* c-c++-common/torture/strub-indcall3.c: New.
      	* c-c++-common/torture/strub-inlinable1.c: New.
      	* c-c++-common/torture/strub-inlinable2.c: New.
      	* c-c++-common/torture/strub-ptrfn1.c: New.
      	* c-c++-common/torture/strub-ptrfn2.c: New.
      	* c-c++-common/torture/strub-ptrfn3.c: New.
      	* c-c++-common/torture/strub-ptrfn4.c: New.
      	* c-c++-common/torture/strub-pure1.c: New.
      	* c-c++-common/torture/strub-pure2.c: New.
      	* c-c++-common/torture/strub-pure3.c: New.
      	* c-c++-common/torture/strub-pure4.c: New.
      	* c-c++-common/torture/strub-run1.c: New.
      	* c-c++-common/torture/strub-run2.c: New.
      	* c-c++-common/torture/strub-run3.c: New.
      	* c-c++-common/torture/strub-run4.c: New.
      	* c-c++-common/torture/strub-run4c.c: New.
      	* c-c++-common/torture/strub-run4d.c: New.
      	* c-c++-common/torture/strub-run4i.c: New.
      	* g++.dg/strub-run1.C: New.
      	* g++.dg/torture/strub-init1.C: New.
      	* g++.dg/torture/strub-init2.C: New.
      	* g++.dg/torture/strub-init3.C: New.
      	* gnat.dg/strub_attr.adb, gnat.dg/strub_attr.ads: New.
      	* gnat.dg/strub_ind.adb, gnat.dg/strub_ind.ads: New.
      
      for  libgcc/ChangeLog
      
      	* Makefile.in (LIB2ADD): Add strub.c.
      	* libgcc2.h (__strub_enter, __strub_update, __strub_leave):
      	Declare.
      	* strub.c: New.
      	* libgcc-std.ver.in (__strub_enter): Add to GCC_14.0.0.
      	(__strub_update, __strub_leave): Likewise.
      f0a90c7d
  6. Oct 22, 2023
    • Andrew Burgess's avatar
      libgcc: support heap-based trampolines · 8abddb18
      Andrew Burgess authored
      
      Add support for heap-based trampolines on x86_64-linux, aarch64-linux,
      and x86_64-darwin. Implement the __builtin_nested_func_ptr_created and
      __builtin_nested_func_ptr_deleted functions for these targets.
      
      Co-Authored-By: default avatarMaxim Blinov <maxim.blinov@embecosm.com>
      Co-Authored-By: default avatarIain Sandoe <iain@sandoe.co.uk>
      Co-Authored-By: default avatarFrancois-Xavier Coudert <fxcoudert@gcc.gnu.org>
      
      libgcc/ChangeLog:
      
      	* libgcc2.h (__builtin_nested_func_ptr_created): Declare.
      	(__builtin_nested_func_ptr_deleted): Declare.
      	* libgcc-std.ver.in: Add the new symbols.
      	* config/aarch64/heap-trampoline.c: Implement heap-based
      	trampolines for aarch64.
      	* config/aarch64/t-heap-trampoline: Add rule to build
      	config/aarch64/heap-trampoline.c
      	* config/i386/heap-trampoline.c: Implement heap-based
      	trampolines for x86_64.
      	* config/i386/t-heap-trampoline: Add rule to build
      	config/i386/heap-trampoline.cc
      	* config.host: Handle --enable-heap-trampolines on
      	x86_64-*-linux*, aarch64-*-linux*, x86_64-*-darwin*.
      8abddb18
  7. Sep 06, 2023
    • Jakub Jelinek's avatar
      libgcc _BitInt support [PR102989] · 2ce182e2
      Jakub Jelinek authored
      This patch adds the library helpers for multiplication, division + modulo
      and casts from and to floating point (both binary and decimal).
      As described in the intro, the first step is try to reduce further the
      passed in precision by skipping over most significant limbs with just zeros
      or sign bit copies.  For multiplication and division I've implemented
      a simple algorithm, using something smarter like Karatsuba or Toom N-Way
      might be faster for very large _BitInts (which we don't support right now
      anyway), but could mean more code in libgcc, which maybe isn't what people
      are willing to accept.
      For the to/from floating point conversions the patch uses soft-fp, because
      it already has tons of handy macros which can be used for that.  In theory
      it could be implemented using {,unsigned} long long or {,unsigned} __int128
      to/from floating point conversions with some frexp before/after, but at that
      point we already need to force it into integer registers and analyze it
      anyway.  Plus, for 32-bit arches there is no __int128 that could be used
      for XF/TF mode stuff.
      I know that soft-fp is owned by glibc and I think the op-common.h change
      should be propagated there, but the bitint stuff is really GCC specific
      and IMHO doesn't belong into the glibc copy.
      
      2023-09-06  Jakub Jelinek  <jakub@redhat.com>
      
      	PR c/102989
      libgcc/
      	* config/aarch64/t-softfp (softfp_extras): Use += rather than :=.
      	* config/i386/64/t-softfp (softfp_extras): Likewise.
      	* config/i386/libgcc-glibc.ver (GCC_14.0.0): Export _BitInt support
      	routines.
      	* config/i386/t-softfp (softfp_extras): Add fixxfbitint and
      	bf, hf and xf mode floatbitint.
      	(CFLAGS-floatbitintbf.c, CFLAGS-floatbitinthf.c): Add -msse2.
      	* config/riscv/t-softfp32 (softfp_extras): Use += rather than :=.
      	* config/rs6000/t-e500v1-fp (softfp_extras): Likewise.
      	* config/rs6000/t-e500v2-fp (softfp_extras): Likewise.
      	* config/t-softfp (softfp_floatbitint_funcs): New.
      	(softfp_bid_list): New.
      	(softfp_func_list): Add sf and df mode from and to _BitInt libcalls.
      	(softfp_bid_file_list): New.
      	(LIB2ADD_ST): Add $(softfp_bid_file_list).
      	* config/t-softfp-sfdftf (softfp_extras): Add fixtfbitint and
      	floatbitinttf.
      	* config/t-softfp-tf (softfp_extras): Likewise.
      	* libgcc2.c (bitint_reduce_prec): New inline function.
      	(BITINT_INC, BITINT_END): Define.
      	(bitint_mul_1, bitint_addmul_1): New helper functions.
      	(__mulbitint3): New function.
      	(bitint_negate, bitint_submul_1): New helper functions.
      	(__divmodbitint4): New function.
      	* libgcc2.h (LIBGCC2_UNITS_PER_WORD): When building _BitInt support
      	libcalls, redefine depending on __LIBGCC_BITINT_LIMB_WIDTH__.
      	(__mulbitint3, __divmodbitint4): Declare.
      	* libgcc-std.ver.in (GCC_14.0.0): Export _BitInt support routines.
      	* Makefile.in (lib2funcs): Add _mulbitint3.
      	(LIB2_DIVMOD_FUNCS): Add _divmodbitint4.
      	* soft-fp/bitint.h: New file.
      	* soft-fp/fixdfbitint.c: New file.
      	* soft-fp/fixsfbitint.c: New file.
      	* soft-fp/fixtfbitint.c: New file.
      	* soft-fp/fixxfbitint.c: New file.
      	* soft-fp/floatbitintbf.c: New file.
      	* soft-fp/floatbitintdf.c: New file.
      	* soft-fp/floatbitinthf.c: New file.
      	* soft-fp/floatbitintsf.c: New file.
      	* soft-fp/floatbitinttf.c: New file.
      	* soft-fp/floatbitintxf.c: New file.
      	* soft-fp/op-common.h (_FP_FROM_INT): Add support for rsize up to
      	4 * _FP_W_TYPE_SIZE rather than just 2 * _FP_W_TYPE_SIZE.
      	* soft-fp/bitintpow10.c: New file.
      	* soft-fp/fixsdbitint.c: New file.
      	* soft-fp/fixddbitint.c: New file.
      	* soft-fp/fixtdbitint.c: New file.
      	* soft-fp/floatbitintsd.c: New file.
      	* soft-fp/floatbitintdd.c: New file.
      	* soft-fp/floatbitinttd.c: New file.
      2ce182e2
  8. Mar 06, 2023
    • Michael Meissner's avatar
      PR target/107299: Fix build issue when long double is IEEE 128-bit · 306c7b1a
      Michael Meissner authored
      This patch updates the IEEE 128-bit types used in libgcc.
      
      At the moment, we cannot build GCC when the target uses IEEE 128-bit long
      doubles, such as building the compiler for a native Fedora 36 system.  The
      build dies when it is trying to build the _mulkc3.c and _divkc3 modules.
      
      This patch changes libgcc to use long double for the IEEE 128-bit base type if
      long double is IEEE 128-bit, and it uses _Float128 otherwise.  The built-in
      functions are adjusted to be the correct version based on the IEEE 128-bit base
      type used.
      
      While it is desirable to ultimately have __float128 and _Float128 use the same
      internal type and mode within GCC, at present if you use the option
      -mabi=ieeelongdouble, the __float128 type will use the long double type and not
      the _Float128 type.  We get an internal compiler error if we combine the
      signbitf128 built-in with a long double type.
      
      I've gone through several iterations of trying to fix this within GCC, and
      there are various problems that have come up.  I developed this alternative
      patch that changes libgcc so that it does not tickle the issue.  I hope we can
      fix the compiler at some point, but right now, this is preventing people on
      Fedora 36 systems from building compilers where the default long double is IEEE
      128-bit.
      
      2023-03-06   Michael Meissner  <meissner@linux.ibm.com>
      
      libgcc/
      
      	PR target/107299
      	* config/rs6000/_divkc3.c (COPYSIGN): Use the correct built-in based on
      	whether long double is IBM or IEEE.
      	(INFINITY): Likewise.
      	(FABS): Likewise.
      	* config/rs6000/_mulkc3.c (COPYSIGN): Likewise.
      	(INFINITY): Likewise.
      	* config/rs6000/quad-float128.h (TF): Remove definition.
      	(TFtype): Define to be long double or _Float128.
      	(TCtype): Define to be _Complex long double or _Complex _Float128.
      	* libgcc2.h (TFtype): Allow machine config files to override this.
      	(TCtype): Likewise.
      	* soft-fp/quad.h (TFtype): Likewise.
      306c7b1a
  9. Jan 16, 2023
  10. Jan 03, 2022
  11. Jan 04, 2021
  12. Nov 10, 2020
    • Stefan Kanthak's avatar
      Improve generated code for various libgcc2.c routines · ebc4cd54
      Stefan Kanthak authored
      libgcc/
      
      	* libgcc2.c (__addvSI3): Use overflow builtins.
      	(__addvsi3, __addvDI3 ,__subvSI3, __subvsi3): Likewise.
      	(__subvDI3 __mulvSI3, __mulvsi3, __negvSI2): Likewise.
      	(__negvsi2, __negvDI2): Likewise.
      	(__cmpdi2, __ucmpdi2): Adjust implementation to improve
      	generated code.
      	* libgcc2.h (__ucmpdi2): Adjust prototype.
      ebc4cd54
  13. Jan 01, 2020
  14. Feb 21, 2019
    • Martin Sebor's avatar
      extend.texi (__clear_cache): Correct signature. · a90b0cdd
      Martin Sebor authored
      gcc/ChangeLog:
      
      	* doc/extend.texi (__clear_cache): Correct signature.
      
      libgcc/ChangeLog:
      
      	* libgcc2.h (__clear_cache): Correct signature.
      	* libgcc2.c (__clear_cache): Same.
      
      gcc/testsuite/ChangeLog:
      
      	* gcc.dg/Wbuiltin-declaration-mismatch-12.c: New test.
      
      From-SVN: r269082
      a90b0cdd
  15. Jan 01, 2019
  16. Jan 03, 2018
  17. Jan 01, 2017
  18. Nov 02, 2016
    • Uros Bizjak's avatar
      Makefile.in (LIB2_DIVMOD_FUNCS): Add _divmoddi4. · 18362447
      Uros Bizjak authored
      	* Makefile.in (LIB2_DIVMOD_FUNCS): Add _divmoddi4.
      	* libgcc2.c (__divmoddi4): New function.
      	* libgcc2.h (__divmoddi4): Declare.
      	* libgcc-std.ver.in (GCC_7.0.0): New. Add __PFX_divmoddi4
      	and __PFX_divmodti4.
      
      From-SVN: r241804
      18362447
  19. Sep 09, 2016
    • James Greenhalgh's avatar
      [Patch libgcc] Enable HCmode multiply and divide (mulhc3/divhc3) · 0abcd6cc
      James Greenhalgh authored
      This patch arranges for half-precision complex multiply and divide
      routines to be built if __LIBGCC_HAS_HF_MODE__.  This will be true
      if the target supports the _Float16 type.
      
      libgcc/
      
      	PR target/63250
      	*  Makefile.in (lib2funcs): Build _mulhc3 and _divhc3.
      	* libgcc2.h (LIBGCC_HAS_HF_MODE): Conditionally define.
      	(HFtype): Likewise.
      	(HCtype): Likewise.
      	(__divhc3): Likewise.
      	(__mulhc3): Likewise.
      	* libgcc2.c: Support _mulhc3 and _divhc3.
      
      From-SVN: r240043
      0abcd6cc
  20. Jan 04, 2016
  21. Nov 07, 2015
    • Trevor Saunders's avatar
      replace BITS_PER_UNIT with __CHAR_BIT__ in target libs · a153644f
      Trevor Saunders authored
      libgcc/ChangeLog:
      
      2015-11-07  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
      
      	* config/visium/lib2funcs.c (__set_trampoline_parity): Use
      	__CHAR_BIT__ instead of BITS_PER_UNIT.
      	* fixed-bit.h: Likewise.
      	* fp-bit.h: Likewise.
      	* libgcc2.c (__popcountSI2): Likewise.
      	(__popcountDI2): Likewise.
      	* libgcc2.h: Likewise.
      	* libgcov.h: Likewise.
      
      libobjc/ChangeLog:
      
      2015-11-07  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
      
      	PR libobjc/24775
      	* encoding.c (_darwin_rs6000_special_round_type_align): Use
      	__CHAR_BIT__ instead of BITS_PER_UNIT.
      	(objc_sizeof_type): Likewise.
      	(objc_layout_structure): Likewise.
      	(objc_layout_structure_next_member): Likewise.
      	(objc_layout_finish_structure): Likewise.
      	(objc_layout_structure_get_info): Likewise.
      
      From-SVN: r229936
      a153644f
  22. Jan 05, 2015
  23. Sep 23, 2014
    • Joseph Myers's avatar
      Remove LIBGCC2_LONG_DOUBLE_TYPE_SIZE target macro. · 9a79452d
      Joseph Myers authored
      This patch removes the target macro LIBGCC2_LONG_DOUBLE_TYPE_SIZE.
      
      After recent changes, this macro was used in two ways in libgcc: to
      determine the mode of long double in dfp-bit.h, and to determine
      whether a particular mode has excess precision for use in complex
      multiplication.
      
      The former is concerned specifically with long double: it relates to
      use of strtold for converting between decimal and binary floating
      point.  This is replaced by comparing __LDBL_MANT_DIG__ with the
      appropriate __LIBGCC_*_MANT_DIG__ macro.  The latter is replaced
      __LIBGCC_*_EXCESS_PRECISION__ predefined macros.
      
      Remarks:
      
      * Comparing (__LDBL_MANT_DIG__ == __LIBGCC_XF_MANT_DIG__) is more
        fragile than it looks; it's possible for XFmode to have 53-bit
        mantissa (TARGET_96_ROUND_53_LONG_DOUBLE, on FreeBSD and
        DragonFlyBSD 32-bit), in which case such a comparison would not
        distinguish XFmode and DFmode as possible modes for long double.
        Fortunately, no target supporting that form of XFmode also supports
        long double = double (but if some target did, we'd need e.g. an
        additional macro giving the exponent range of each mode).
      
        Furthermore, this code doesn't actually get used for x86 (or any
        other target with XFmode support), because x86 uses BID not DPD and
        BID has its own conversion code (which handles conversions for both
        XFmode and TFmode without needing to go via strtold).  And FreeBSD
        and DragonFlyBSD aren't among the targets with DFP support.  So
        while in principle this code is fragile and it's a deficiency that
        it can't support both XFmode and TFmode at once (something that
        can't be solved with the string conversion approach without libc
        having TS 18661 functions such as strtof128), all these issues
        should not be a problem in practice.
      
      * If other cases of excess precision are supported in future, the code
        for defining __LIBGCC_*_EXCESS_PRECISION__ may need updating.
        Although the most likely such cases might not actually involve
        excess precision for any mode used in libgcc - FLT_EVAL_METHOD being
        32 to do _Float16 arithmetic on _Float32 should have the effect of
        _Complex _Float16 arithmetic using __mulsc3 and __divsc3, rather
        than currently nonexistent __mulhc3 and __divhc3 as in bug 63250 for
        ARM.
      
      * As has been noted in the context of simultaneous support for
        __float128 and __ibm128 on Power, the semantics of macros such as
        LONG_DOUBLE_TYPE_SIZE are problematic because they rely on a
        poorly-defined precision value for floating-point modes (which seems
        to be intended as the number of significant bits in the
        representation, e.g. 80 for XFmode which may be either 12 or 16
        bytes) uniquely identifying a mode (although defining an arbitrarily
        different value for one of the modes you wish to distinguish may
        work as a hack).  It would be cleaner to have a target hook that
        gives a machine mode directly for float, double and long double,
        rather than going via these precision values.  By eliminating all
        use of these macros (FLOAT_TYPE_SIZE, DOUBLE_TYPE_SIZE,
        LONG_DOUBLE_TYPE_SIZE) from code built for the target, this patch
        facilitates such a conversion to a hook (which I suppose would take
        some suitable enum as an argument to identify which of the three
        types to return a mode for).
      
        (The issue of multiple type support for DFP conversions would apply
        in that Power case.
        <https://gcc.gnu.org/ml/gcc-patches/2014-07/msg01084.html> doesn't
        seem to touch on it, but it would seem reasonable to punt on it
        initially as hard to fix.  There would also be the issue of getting
        functions such as __powikf2, __mulkc3, __divkc3 defined, but that's
        rather easier to address.)
      
      Bootstrapped with no regressions on x86_64-unknown-linux-gnu.
      
      gcc:
      	* doc/tm.texi.in (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Remove.
      	* doc/tm.texi: Regenerate.
      	* system.h (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Poison.
      	* config/alpha/alpha.h (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Remove.
      	* config/i386/i386-interix.h (LIBGCC2_LONG_DOUBLE_TYPE_SIZE):
      	Remove.
      	* config/i386/i386.h (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Remove.
      	* config/i386/rtemself.h (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Remove.
      	* config/ia64/ia64.h (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Remove.
      	* config/m68k/m68k.h (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Remove.
      	* config/m68k/netbsd-elf.h (LIBGCC2_LONG_DOUBLE_TYPE_SIZE):
      	Remove.
      	* config/mips/mips.h (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Remove.
      	* config/mips/n32-elf.h (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Remove.
      	* config/msp430/msp430.h (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Remove.
      	* config/rl78/rl78.h (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Remove.
      	* config/rs6000/rs6000.h (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Remove.
      	* config/rx/rx.h (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Remove.
      	* config/s390/s390.h (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Remove.
      	* config/sparc/freebsd.h (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Remove.
      	* config/sparc/linux.h (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Remove.
      	* config/sparc/linux64.h (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Remove.
      	* config/sparc/netbsd-elf.h (LIBGCC2_LONG_DOUBLE_TYPE_SIZE):
      	Remove.
      
      gcc/c-family:
      	* c-cppbuiltin.c (c_cpp_builtins): Define
      	__LIBGCC_*_EXCESS_PRECISION__ macros for supported floating-point
      	modes.
      
      libgcc:
      	* dfp-bit.h (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Remove.
      	(__LIBGCC_XF_MANT_DIG__): Define if not already defined.
      	(LONG_DOUBLE_HAS_XF_MODE): Define in terms of
      	__LIBGCC_XF_MANT_DIG__.
      	(__LIBGCC_TF_MANT_DIG__): Define if not already defined.
      	(LONG_DOUBLE_HAS_TF_MODE): Define in terms of
      	__LIBGCC_TF_MANT_DIG__.
      	* libgcc2.c (NOTRUNC): Define in terms of
      	__LIBGCC_*_EXCESS_PRECISION__, not LIBGCC2_LONG_DOUBLE_TYPE_SIZE.
      	* libgcc2.h (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Remove.
      
      From-SVN: r215491
      9a79452d
  24. Sep 12, 2014
    • Joseph Myers's avatar
      Remove LIBGCC2_HAS_?F_MODE target macros. · 8cc4b7a2
      Joseph Myers authored
      This patch removes the LIBGCC2_HAS_{SF,DF,XF,TF}_MODE target macros,
      replacing them by predefines with -fbuilding-libgcc, together with a
      target hook that can influence those predefines when needed.
      
      The new default is that a floating-point mode is supported in libgcc
      if (a) it passes the scalar_mode_supported_p hook (otherwise it's not
      plausible for it to be supported in libgcc) and (b) it's one of those
      four modes (since those are the modes for which libgcc hardcodes the
      possibility of support).  The target hook can override the default
      choice (in either direction) for modes that pass
      scalar_mode_supported_p (although overriding in the direction of
      returning true when the default would return false only makes sense if
      all relevant functions are specially defined in libgcc for that
      particular target).
      
      The previous default settings depended on various settings such as
      LIBGCC2_LONG_DOUBLE_TYPE_SIZE, as well as targets defining the above
      target macros if the default wasn't correct.
      
      The default scalar_mode_supported_p only declares a floating-point
      mode to be supported if it matches one of float / double / long
      double.  This means that in most cases where a mode is only supported
      conditionally in libgcc (TFmode only supported if it's the mode of
      long double, most commonly), the default gets things right.  Overrides
      were needed in the following cases:
      
      * SFmode would always have been supported in libgcc (the condition was
        BITS_PER_UNIT == 8, true for all current targets), but pdp11
        defaults to 64-bit float, and in that case SFmode would fail
        scalar_mode_supported_p.  I don't know if libgcc actually built for
        pdp11 (and the port may well no longer be being used), but this
        patch adds a scalar_mode_supported_p hook to it to ensure SFmode is
        treated as supported.
      
      * Certain i386 and ia64 targets need the new hook to match the
        existing cases for when XFmode or TFmode support is present in
        libgcc.  For i386, the hook can always declare XFmode to be
        supported - the cases where it's not are the cases where long double
        is TFmode, in which case XFmode fails scalar_mode_supported_p[*] -
        but TFmode support needs to be conditional.  (And of the targets not
        defining LIBGCC2_HAS_TF_MODE before this patch, some defined
        LONG_DOUBLE_TYPE_SIZE to 64, so ensuring LIBGCC2_HAS_TF_MODE would
        always be false, while others did not define it, so allowing it to
        be true in the -mlong-double-128 case.  This patch matches that
        logic, although I suspect all the latter targets would have been
        broken if you tried to enable -mlong-double-128 by default, for lack
        of the soft-fp TFmode support in libgcc, which is separately
        configured.)
      
        [*] I don't know if it's deliberate not to support __float80 at all
        with -mlong-double-128.
      
      In order to implement the default version of the new hook,
      insn-modes.h was made to contain macros such as HAVE_TFmode for each
      machine mode, so the default hook can contain conditionals on whether
      XFmode and TFmode exist (to match the hardcoding of a list of modes in
      libgcc).  This is also used in fortran/trans-types.c; previously it
      had a conditional on defined(LIBGCC2_HAS_TF_MODE) (a bit dubious,
      since it ignored the value of the macro), which is replaced by testing
      defined(HAVE_TFmode), in conjunction with requiring
      targetm.libgcc_floating_mode_supported_p.
      
      (Fortran is testing something stronger than that hook: not only is
      libgcc support required, but also libm or equivalent.  Thus, it has a
      test for ENABLE_LIBQUADMATH_SUPPORT in the case that the mode is
      TFmode and that's not the same as any of the three standard types.
      The old and new tests are intended to accept exactly the same set of
      modes for all targets.)
      
      Apart from the four target macros eliminated by this patch, it gets us
      closer to eliminating LIBGCC2_LONG_DOUBLE_TYPE_SIZE as well, though a
      few more places using that macro need changing first.
      
      Bootstrapped with no regressions on x86_64-unknown-linux-gnu; also
      built cc1 for crosses to ia64-elf and pdp11-none as a minimal test of
      changes for those targets.
      
      gcc:
      	* target.def (libgcc_floating_mode_supported_p): New hook.
      	* targhooks.c (default_libgcc_floating_mode_supported_p): New
      	function.
      	* targhooks.h (default_libgcc_floating_mode_supported_p): Declare.
      	* doc/tm.texi.in (LIBGCC2_HAS_DF_MODE, LIBGCC2_HAS_XF_MODE)
      	(LIBGCC2_HAS_TF_MODE): Remove.
      	(TARGET_LIBGCC_FLOATING_MODE_SUPPORTED_P): New @hook.
      	* doc/tm.texi: Regenerate.
      	* genmodes.c (emit_insn_modes_h): Define HAVE_%smode for each
      	machine mode.
      	* system.h (LIBGCC2_HAS_SF_MODE, LIBGCC2_HAS_DF_MODE)
      	(LIBGCC2_HAS_XF_MODE, LIBGCC2_HAS_TF_MODE): Poison.
      	* config/i386/cygming.h (LIBGCC2_HAS_TF_MODE): Remove.
      	* config/i386/darwin.h (LIBGCC2_HAS_TF_MODE): Remove.
      	* config/i386/djgpp.h (IX86_MAYBE_NO_LIBGCC_TFMODE): Define.
      	* config/i386/dragonfly.h (LIBGCC2_HAS_TF_MODE): Remove.
      	* config/i386/freebsd.h (LIBGCC2_HAS_TF_MODE): Remove.
      	* config/i386/gnu-user-common.h (LIBGCC2_HAS_TF_MODE): Remove.
      	* config/i386/i386-interix.h (IX86_NO_LIBGCC_TFMODE): Define.
      	* config/i386/i386.c (ix86_libgcc_floating_mode_supported_p): New
      	function.
      	(TARGET_LIBGCC_FLOATING_MODE_SUPPORTED_P): Define.
      	* config/i386/i386elf.h (IX86_MAYBE_NO_LIBGCC_TFMODE): Define.
      	* config/i386/lynx.h (IX86_MAYBE_NO_LIBGCC_TFMODE): Define.
      	* config/i386/netbsd-elf.h (IX86_MAYBE_NO_LIBGCC_TFMODE): Define.
      	* config/i386/netbsd64.h (IX86_MAYBE_NO_LIBGCC_TFMODE): Define.
      	* config/i386/nto.h (IX86_MAYBE_NO_LIBGCC_TFMODE): Define.
      	* config/i386/openbsd.h (IX86_MAYBE_NO_LIBGCC_TFMODE): Define.
      	* config/i386/openbsdelf.h (LIBGCC2_HAS_TF_MODE): Remove.
      	* config/i386/rtemself.h (IX86_NO_LIBGCC_TFMODE): Define.
      	* config/i386/sol2.h (LIBGCC2_HAS_TF_MODE): Remove.
      	* config/i386/vx-common.h (IX86_MAYBE_NO_LIBGCC_TFMODE): Define.
      	* config/ia64/elf.h (IA64_NO_LIBGCC_TFMODE): Define.
      	* config/ia64/freebsd.h (IA64_NO_LIBGCC_TFMODE): Define.
      	* config/ia64/hpux.h (LIBGCC2_HAS_XF_MODE, LIBGCC2_HAS_TF_MODE):
      	Remove.
      	* config/ia64/ia64.c (TARGET_LIBGCC_FLOATING_MODE_SUPPORTED_P):
      	New macro.
      	(ia64_libgcc_floating_mode_supported_p): New function.
      	* config/ia64/linux.h (LIBGCC2_HAS_TF_MODE): Remove.
      	* config/ia64/vms.h (IA64_NO_LIBGCC_XFMODE)
      	(IA64_NO_LIBGCC_TFMODE): Define.
      	* config/msp430/msp430.h (LIBGCC2_HAS_DF_MODE): Remove.
      	* config/pdp11/pdp11.c (TARGET_SCALAR_MODE_SUPPORTED_P): New
      	macro.
      	(pdp11_scalar_mode_supported_p): New function.
      	* config/rl78/rl78.h (LIBGCC2_HAS_DF_MODE): Remove.
      	* config/rx/rx.h (LIBGCC2_HAS_DF_MODE): Remove.
      
      gcc/c-family:
      	* c-cppbuiltin.c (c_cpp_builtins): Define __LIBGCC_HAS_%s_MODE__
      	macros for floating-point modes.
      
      gcc/fortran:
      	* trans-types.c (gfc_init_kinds): Check
      	targetm.libgcc_floating_mode_supported_p for floating-point
      	modes.  Check HAVE_TFmode instead of LIBGCC2_HAS_TF_MODE.
      
      libgcc:
      	* libgcc2.h (LIBGCC2_HAS_SF_MODE): Define using
      	__LIBGCC_HAS_SF_MODE__.
      	(LIBGCC2_HAS_DF_MODE): Define using __LIBGCC_HAS_DF_MODE__.
      	(LIBGCC2_HAS_XF_MODE): Define using __LIBGCC_HAS_XF_MODE__.
      	(LIBGCC2_HAS_TF_MODE): Define using __LIBGCC_HAS_TF_MODE__.
      	* config/libbid/bid_gcc_intrinsics.h
      	(LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Do not define.
      	(LIBGCC2_HAS_XF_MODE): Define using __LIBGCC_HAS_XF_MODE__.
      	(LIBGCC2_HAS_TF_MODE): Define using __LIBGCC_HAS_TF_MODE__.
      	* fixed-bit.h (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Do not define.
      	(LIBGCC2_HAS_SF_MODE): Define using __LIBGCC_HAS_SF_MODE__.
      	(LIBGCC2_HAS_DF_MODE): Define using __LIBGCC_HAS_DF_MODE__.
      
      From-SVN: r215215
      8cc4b7a2
  25. Sep 08, 2014
    • Joseph Myers's avatar
      Remove SF_SIZE etc. target macros. · 66bb34c0
      Joseph Myers authored
      gcc:
      	* config/i386/cygming.h (TF_SIZE): Remove.
      	* config/i386/darwin.h (TF_SIZE): Remove.
      	* config/i386/dragonfly.h (TF_SIZE): Remove.
      	* config/i386/freebsd.h (TF_SIZE): Remove.
      	* config/i386/gnu-user-common.h (TF_SIZE): Remove.
      	* config/i386/openbsdelf.h (TF_SIZE): Remove.
      	* config/i386/sol2.h (TF_SIZE): Remove.
      	* config/ia64/hpux.h (XF_SIZE, TF_SIZE): Remove.
      	* config/ia64/linux.h (TF_SIZE): Remove.
      	* doc/tm.texi.in (SF_SIZE, DF_SIZE, XF_SIZE, TF_SIZE): Remove.
      	* doc/tm.texi: Regenerate.
      	* system.h (SF_SIZE, DF_SIZE, XF_SIZE, TF_SIZE): Poison.
      
      gcc/c-family:
      	* c-cppbuiltin.c (c_cpp_builtins): Define macros for mantissa
      	digits of floating-point modes if -fbuilding-libgcc.
      
      libgcc:
      	* libgcc2.c (SF_SIZE): Change all uses to __LIBGCC_SF_MANT_DIG__.
      	(DF_SIZE): Change all uses to __LIBGCC_DF_MANT_DIG__.
      	(XF_SIZE): Change all uses to __LIBGCC_XF_MANT_DIG__.
      	(TF_SIZE): Change all uses to __LIBGCC_TF_MANT_DIG__.
      	* libgcc2.h (SF_SIZE): Change to __LIBGCC_SF_MANT_DIG__.  Give
      	error if not defined and LIBGCC2_HAS_SF_MODE is defined.
      	(DF_SIZE): Change to __LIBGCC_DF_MANT_DIG__.  Give error if not
      	defined and LIBGCC2_HAS_DF_MODE is defined.
      	(XF_SIZE): Change to __LIBGCC_XF_MANT_DIG__.  Give error if not
      	defined and LIBGCC2_HAS_XF_MODE is defined.
      	(TF_SIZE): Change to __LIBGCC_TF_MANT_DIG__.  Give error if not
      	defined and LIBGCC2_HAS_TF_MODE is defined.
      
      From-SVN: r215014
      66bb34c0
  26. Jan 02, 2014
  27. Feb 04, 2013
  28. Nov 02, 2011
    • Rainer Orth's avatar
      Move libgcc2 to toplevel libgcc · f9989b51
      Rainer Orth authored
      	toplevel:
      	* Makefile.tpl (EXTRA_GCC_FLAGS): Remove LIBGCC2_CFLAGS,
      	LIBGCC2_DEBUG_CFLAGS, LIBGCC2_INCLUDES.
      	* Makefile.in: Regenerate.
      
      	config:
      	* mh-interix (LIBGCC2_DEBUG_CFLAGS): Remove.
      
      	gcc:
      	* Makefile.in (LIBGCC2_DEBUG_CFLAGS LIBGCC2_CFLAGS)
      	(LIBGCC2_INCLUDES, TARGET_LIBGCC2_CFLAGS, LIB2FUNCS_EXTRA)
      	(LIB2FUNCS_STATIC_EXTRA, LIB2FUNCS_EXCLUDE, T, T_TARGET)
      	(INCLUDES_FOR_TARGET): Remove.
      	(LIBGCC2_CFLAGS): Don't export.
      	(LIB2FUNCS_ST, LIB2_DIVMOD_FUNCS, LIB2ADD, LIB2ADD_ST, srcdirify):
      	Remove.
      	(libgcc-support): Remove $(LIB2ADD), $(LIB2ADD_ST) dependencies.
      	(libgcc.mvars): Likewise.
      	Don't emit LIB2FUNCS_ST, LIB2FUNCS_EXCLUDE, LIB2ADD, LIB2ADD_ST,
      	LIB2_SIDITI_CONV_FUNCS, LIB2_DIVMOD_FUNCS, LIBGCC2_CFLAGS,
      	TARGET_LIBGCC2_CFLAGS.
      	Emit GTHREAD_FLAGS.
      	* libgcc2.c, libgcc2.h, gbl-ctors.h, longlong.h: Move to ../libgcc.
      	* config/darwin-64.c: Move to ../libgcc/config.
      	* config/divmod.c, config/floatunsidf.c, config/floatunsisf.c,
      	config/floatunsitf.c, config/floatunsixf.c, config/udivmod.c,
      	config/udivmodsi4.c: Move to ../libgcc/config.
      	* config/gthr-posix.c: Move to ../libgcc/config/alpha.
      	* config/memcmp.c, config/memcpy.c, config/memmove.c,
      	config/memset.c: Move to ../libgcc/config.
      	* config/t-darwin (TARGET_LIBGCC2_CFLAGS): Remove.
      	* config/t-freebsd: Remove.
      	* config/t-freebsd-thread: Move to ../libgcc/config.
      	* config/t-libgcc-pic: Move to ../libgcc/config.
      	* config/t-libunwind (TARGET_LIBGCC2_CFLAGS): Remove.
      	* config/t-linux: Remove.
      	* config/t-lynx (TARGET_LIBGCC2_CFLAGS, LIBGCC, INSTALL_LIBGCC):
      	Remove
      	* config/t-openbsd-thread: Move to ../libgcc/config.
      	* config/t-rtems (LIBGCC2_INCLUDES): Remove.
      	* config/t-sol2 (TARGET_LIBGCC2_CFLAGS): Remove.
      	* config/t-svr4: Remove.
      	* config/t-vxworks (LIBGCC, INSTALL_LIBGCC, TARGET_LIBGCC2_CFLAGS)
      	(LIBGCC2_DEBUG_CFLAGS, LIB2FUNCS_EXTRA, LIBGCC2_INCLUDES): Remove.
      	* config/vxlib.c, config/vxlib-tls.c: Move to ../libgcc/config.
      	* config/alpha/qrnnd.asm: Move to ../libgcc/config/alpha/qrnnd.S.
      	* config/alpha/t-alpha, config/alpha/t-ieee: Remove.
      	* config/alpha/t-vms (LIB2FUNCS_EXTRA, LIBGCC, INSTALL_LIBGCC):
      	Remove.
      	* config/alpha/vms-gcc_shell_handler.c: Move to ../libgcc/config/alpha.
      	* config/arm/bpabi.c, config/arm/unaligned-funcs.c,
      	config/arm/fp16.c, config/arm/linux-atomic.c,
      	config/arm/linux-atomic-64bit.c: Move to ../libgcc/config/arm.
      	* config/arm/t-arm-elf (LIBGCC, INSTALL_LIBGCC)
      	(TARGET_LIBGCC2_CFLAGS): Remove.
      	* config/arm/t-bpabi, config/arm/t-linux: Remove.
      	* config/arm/t-linux-eabi (TARGET_LIBGCC2_CFLAGS)
      	(LIB2FUNCS_STATIC_EXTRA): Remove.
      	* config/arm/t-netbsd: Remove.
      	* config/arm/t-strongarm-elf (LIBGCC, INSTALL_LIBGCC)
      	(TARGET_LIBGCC2_CFLAGS): Remove.
      	* config/arm/t-symbian (LIB2FUNCS_STATIC_EXTRA): Remove.
      	* config/arm/t-wince-pe (LIBGCC, INSTALL_LIBGCC)
      	(TARGET_LIBGCC2_CFLAGS): Remove.
      	* config/avr/t-avr (LIB2FUNCS_EXCLUDE, TARGET_LIBGCC2_CFLAGS)
      	(LIBGCC, INSTALL_LIBGCC): Remove.
      	* config/bfin/t-bfin-elf (TARGET_LIBGCC2_CFLAGS): Remove.
      	* config/bfin/t-bfin-linux: Likewise.
      	* config/bfin/t-bfin-uclinux: Likewise.
      	* config/c6x/eqd.c, config/c6x/eqf.c, config/c6x/ged.c,
      	config/c6x/gef.c, config/c6x/gtd.c, config/c6x/gtf.c,
      	config/c6x/led.c, config/c6x/lef.c, config/c6x/ltd.c,
      	config/c6x/ltf.c: Move to ../libgcc/config/c6x.
      	* config/c6x/t-c6x-elf (LIB2FUNCS_EXCLUDE, LIB2FUNCS_EXTRA):
      	Remove.
      	* config/c6x/t-c6x-uclinux (TARGET_LIBGCC2_CFLAGS): Remove.
      	* config/cris/arit.c: Move to ../libgcc/config/cris.
      	* config/cris/cris_abi_symbol.c: Remove.
      	* config/cris/cris.h: Remove obsolete comment.
      	* config/cris/mulsi3.asm: Move to ../libgcc/config/cris/mulsi3.S.
      	* config/cris/t-cris (LIB2FUNCS_EXTRA, CRIS_LIB1CSRC)
      	($(LIB2FUNCS_EXTRA)): Remove.
      	* config/cris/t-elfmulti (LIB2FUNCS_STATIC_EXTRA, INSTALL_LIBGCC)
      	(LIBGCC): Remove.
      	* config/cris/t-linux (TARGET_LIBGCC2_CFLAGS): Remove.
      	* config/fr30/t-fr30: Remove.
      	* config/frv/cmovd.c, config/frv/cmovh.c, config/frv/cmovw.c,
      	config/frv/modi.c, config/frv/uitod.c, config/frv/uitof.c,
      	config/frv/ulltod.c, config/frv/ulltof.c, config/frv/umodi.c: Move
      	to ../libgcc/config/frv.
      	* config/frv/t-frv (LIB2FUNCS_EXTRA, TARGET_LIBGCC2_CFLAGS)
      	(cmovh.c, cmovw.c, cmovd.c, modi.c, umodi.c, uitof.c, uitod.c)
      	(ulltof.c, LIBGCC, INSTALL_LIBGCC): Remove.
      	* config/frv/t-linux (TARGET_LIBGCC2_CFLAGS): Remove.
      	* config/h8300/clzhi2.c, config/h8300/ctzhi2.c,
      	config/h8300/fixunssfsi.c, config/h8300/parityhi2.c,
      	config/h8300/popcounthi2.c: Move to ../libgcc/config/h8300.
      	* config/h8300/t-h8300 (LIB2FUNCS_EXTRA, TARGET_LIBGCC2_CFLAGS)
      	(LIBGCC, INSTALL_LIBGCC): Remove.
      	* config/i386/gthr-win32.c: Move to ../libgcc/config/i386.
      	* config/i386/t-cygming (LIBGCC2_INCLUDES): Remove.
      	* config/i386/t-cygwin: Remove.
      	* config/i386/t-darwin (LIB2_SIDITI_CONV_FUNCS, LIB2FUNCS_EXTRA)
      	(LIB2FUNCS_EXCLUDE): Remove.
      	* config/i386/t-darwin64 (LIB2_SIDITI_CONV_FUNCS, LIB2FUNCS_EXTRA)
      	(LIBGCC, INSTALL_LIBGCC): Remove.
      	* config/i386/t-gthr-win32: Move to ../libgcc/config/i386.
      	* config/i386/t-linux64 (LIBGCC, INSTALL_LIBGCC): Remove.
      	* config/i386/t-mingw-w32: Likewise.
      	* config/i386/t-mingw-w64: Likewise.
      	* config/i386/t-openbsd: Likewise.
      	* config/i386/t-nto: Remove.
      	* config/ia64/quadlib.c: Move to ../libgcc/config/ia64.
      	* config/ia64/t-hpux (LIBGCC, INSTALL_LIBGCC, LIB2FUNCS_EXTRA)
      	(quadlib.c): Remove.
      	* config/ia64/t-ia64: Remove comment.
      	* config/iq2000/lib2extra-funcs.c: Move to
      	../libgcc/config/iq2000/lib2funcs.c.
      	* config/iq2000/t-iq2000: Remove.
      	* config/m32c/m32c-lib2.c: Move to ../libgcc/config/m32c/lib2funcs.c.
      	* config/m32c/m32c-lib2-trapv.c: Move to ../libgcc/config/m32c/trapv.c.
      	* config/m32r/t-linux (TARGET_LIBGCC2_CFLAGS): Remove.
      	* config/m32c/t-m32c (LIB2FUNCS_EXTRA): Remove.
      	* config/m32r/t-m32r (TARGET_LIBGCC2_CFLAGS, LIBGCC)
      	(INSTALL_LIBGCC): Remove.
      	* config/m68k/fpgnulib.c: Move to ../libgcc/config/m68k.
      	* config/m68k/t-floatlib: Remove.
      	* config/m68k/t-mlibs (LIBGCC, INSTALL_LIBGCC): Remove.
      	* config/mcore/t-mcore (TARGET_LIBGCC2_CFLAGS): Remove.
      	Fix typo.
      	(LIBGCC, INSTALL_LIBGCC): Remove.
      	* config/mep/mep-lib2.c: Move to ../libgcc/config/mep/lib2funcs.c.
      	* config/mep/mep-tramp.c: Move to ../libgcc/config/mep/tramp.c.
      	* config/mep/t-mep (LIB2FUNCS_EXTRA): Remove.
      	* config/mips/t-elf (TARGET_LIBGCC2_CFLAGS, LIBGCC)
      	(INSTALL_LIBGCC): Remove.
      	* config/mips/t-isa3264: Likewise.
      	* config/mips/t-mips (LIB2_SIDITI_CONV_FUNCS): Remove.
      	* config/mips/t-r3900 (TARGET_LIBGCC2_CFLAGS, LIBGCC)
      	(INSTALL_LIBGCC): Remove.
      	* config/mips/t-sde (LIBGCC, INSTALL_LIBGCC): Remove.
      	* config/mips/t-sr71k (TARGET_LIBGCC2_CFLAGS, LIBGCC)
      	(INSTALL_LIBGCC): Remove.
      	* config/mips/t-vr (TARGET_LIBGCC2_CFLAGS)
      	(LIB2FUNCS_STATIC_EXTRA): Remove.
      	* config/mips/vr4120-div.S: Move to ../libgcc/config/mips.
      	* config/mmix/t-mmix (TARGET_LIBGCC2_CFLAGS): Remove.
      	* config/mn10300/t-mn10300 (LIBGCC, INSTALL_LIBGCC): Remove.
      	* config/pa/fptr.c, config/pa/linux-atomic.c: Move to
      	../libgcc/config/pa.
      	* config/pa/lib2funcs.asm: Move to ../libgcc/config/pa/lib2funcs.S.
      	* config/pa/quadlib.c: Move to ../libgcc/config/pa.
      	* config/pa/t-dce-thr (LIBGCC, INSTALL_LIBGCC): Remove.
      	* config/pa/t-linux, config/pa/t-linux64: Remove.
      	* config/pa/t-pa-hpux, config/pa/t-pa-hpux10,
      	config/pa/t-pa-hpux11, config/pa/t-pa64: Remove.
      	* config/pdp11/t-pdp11 (TARGET_LIBGCC2_CFLAGS, LIB2FUNCS_EXTRA):
      	Remove.
      	* config/picochip/libgccExtras: Move to ../libgcc/config/picochip.
      	* config/picochip/t-picochip (LIB2FUNCS_EXTRA, RANLIB_FOR_TARGET)
      	(TARGET_LIBGCC2_CFLAGS, LIBGCC2_DEBUG_CFLAGS): Remove.
      	* config/rs6000/crtresfpr.asm: Move to
      	../libgcc/config/rs6000/crtresfpr.S.
      	* config/rs6000/crtresgpr.asm: Move to
      	../libgcc/config/rs6000/crtresgpr.S.
      	* config/rs6000/crtresxfpr.asm: Move to
      	../libgcc/config/rs6000/crtresxfpr.S.
      	* config/rs6000/crtresxgpr.asm: Move to
      	../libgcc/config/rs6000/crtresxgpr.S.
      	* config/rs6000/crtsavfpr.asm: Move to
      	../libgcc/config/rs6000/crtsavfpr.S.
      	* config/rs6000/crtsavgpr.asm: Move to
      	../libgcc/config/rs6000/crtsavgpr.S.
      	* config/rs6000/darwin-asm.h: Move to ../libgcc/config/rs6000.
      	* config/rs6000/darwin-fpsave.asm: Move to
      	../libgcc/config/rs6000/darwin-fpsave.S.
      	* config/rs6000/darwin-gpsave.asm: Move to
      	../libgcc/config/rs6000/darwin-gpsave.S.
      	* config/rs6000/darwin-tramp.asm: Move to
      	../libgcc/config/rs6000/darwin-tramp.S.
      	* config/rs6000/darwin-vecsave.asm: Move to
      	../libgcc/config/rs6000/darwin-vecsave.S.
      	* config/rs6000/darwin-world.asm: Move to
      	../libgcc/config/rs6000/darwin-world.S.
      	* config/rs6000/e500crtres32gpr.asm: Move to
      	../libgcc/config/rs6000/e500crtres32gpr.S.
      	* config/rs6000/e500crtres64gpr.asm: Move to
      	../libgcc/config/rs6000/e500crtres64gpr.S.
      	* config/rs6000/e500crtres64gprctr.asm: Move to
      	../libgcc/config/rs6000/e500crtres64gprctr.S.
      	* config/rs6000/e500crtrest32gpr.asm: Move to
      	../libgcc/config/rs6000/e500crtrest32gpr.S.
      	* config/rs6000/e500crtrest64gpr.asm: Move to
      	../libgcc/config/rs6000/e500crtrest64gpr.S.
      	* config/rs6000/e500crtresx32gpr.asm: Move to
      	../libgcc/config/rs6000/e500crtresx32gpr.S.
      	* config/rs6000/e500crtresx64gpr.asm: Move to
      	../libgcc/config/rs6000/e500crtresx64gpr.S.
      	* config/rs6000/e500crtsav32gpr.asm: Move to
      	../libgcc/config/rs6000/e500crtsav32gpr.S.
      	* config/rs6000/e500crtsav64gpr.asm: Move to
      	../libgcc/config/rs6000/e500crtsav64gpr.S.
      	* config/rs6000/e500crtsav64gprctr.asm: Move to
      	../libgcc/config/rs6000/e500crtsav64gprctr.S.
      	* config/rs6000/e500crtsavg32gpr.asm: Move to
      	../libgcc/config/rs6000/e500crtsavg32gpr.S.
      	* config/rs6000/e500crtsavg64gpr.asm: Move to
      	../libgcc/config/rs6000/e500crtsavg64gpr.S.
      	* config/rs6000/e500crtsavg64gprctr.asm: Move to
      	../libgcc/config/rs6000/e500crtsavg64gprctr.S.
      	* config/rs6000/eabi.asm: Move to ../libgcc/config/rs6000/eabi.S.
      	* config/rs6000/t-aix43 (LIBGCC, INSTALL_LIBGCC, LIB2FUNCS_EXTRA)
      	(TARGET_LIBGCC2_CFLAGS): Remove.
      	* config/rs6000/t-aix52: Likewise.
      	* config/rs6000/t-darwin: Remove.
      	* config/rs6000/t-darwin64 (LIB2_SIDITI_CONV_FUNCS)
      	(LIB2FUNCS_EXTRA): Remove.
      	* config/rs6000/t-fprules (LIBGCC, INSTALL_LIBGCC): Remove.
      	* config/rs6000/t-linux64 (TARGET_LIBGCC2_CFLAGS): Remove.
      	* config/rs6000/t-lynx (LIB2FUNCS_EXTRA, tramp.S, LIBGCC)
      	(INSTALL_LIBGCC): Remove.
      	* config/rs6000/t-netbsd (LIB2FUNCS_EXTRA)
      	(LIB2FUNCS_STATIC_EXTRA, tramp.S, crtsavfpr.S, crtresfpr.S)
      	(crtsavgpr.S, crtresgpr.S, crtresxfpr.S, crtresxgpr.S, LIBGCC)
      	(INSTALL_LIBGCC, $(T)crtsavfpr$(objext), $(T)crtresfpr$(objext))
      	(($(T)crtsavgpr$(objext), $(T)crtresgpr$(objext),
      	$(T)crtresxfpr$(objext), $(T)crtresxgpr$(objext)): Remove.
      	* config/rs6000/t-ppccomm (LIB2FUNCS_EXTRA)
      	(LIB2FUNCS_STATIC_EXTRA, eabi.S, tramp.S): Remove.
      	* config/rs6000/t-spe (LIBGCC, INSTALL_LIBGCC): Remove.
      	* config/rs6000/t-vxworks: Remove comment.
      	* config/rs6000/tramp.asm: Move to ../libgcc/config/rs6000/tramp.S.
      	* config/rx/t-rx (LIBGCC, INSTALL_LIBGCC): Remove.
      	* config/sh/linux-atomic.asm: Move to
      	../libgcc/config/sh/linux-atomic.S.
      	* config/sh/t-linux (LIB2FUNCS_EXTRA): Remove.
      	* config/sh/t-netbsd: Remove.
      	* config/sh/t-sh (TARGET_LIBGCC2_CFLAGS, LIBGCC, INSTALL_LIBGCC):
      	Remove.
      	* config/sparc/t-elf (LIBGCC, INSTALL_LIBGCC): Remove.
      	* config/sparc/t-leon: Likewise.
      	* config/sparc/t-leon3: Likewise.
      	* config/sparc/t-linux64: Likewise.
      	* config/sparc/t-netbsd64: Fix typo.
      	Remove comment.
      	* config/spu/divmodti4.c, config/spu/divv2df3.c,
      	config/spu/float_disf.c, config/spu/float_unsdidf.c,
      	config/spu/float_unsdisf.c, config/spu/float_unssidf.c,
      	config/spu/mfc_multi_tag_release.c,
      	config/spu/mfc_multi_tag_reserve.c, config/spu/mfc_tag_release.c,
      	config/spu/mfc_tag_reserve.c, config/spu/mfc_tag_table.c,
      	config/spu/multi3.c: Move to ../libgcc/config/spu.
      	* config/spu/t-spu-elf (TARGET_LIBGCC2_CFLAGS, LIB2FUNCS_EXCLUDE)
      	(LIB2FUNCS_STATIC_EXTRA, LIB2_SIDITI_CONV_FUNCS, LIBGCC)
      	(INSTALL_LIBGCC): Remove.
      	* config/stormy16/stormy16-lib2.c: Move to
      	../libgcc/config/stormy16/lib2.c.
      	* config/stormy16/stormy16-lib2-ashlsi3.c: Move to
      	../libgcc/config/stormy16/ashlsi3.c.
      	* config/stormy16/stormy16-lib2-ashrsi3.c: Move to
      	../libgcc/config/stormy16/ashrsi3.c.
      	* config/stormy16/stormy16-lib2-clzhi2.c: Move to
      	../libgcc/config/stormy16/clzhi2.c.
      	* config/stormy16/stormy16-lib2-cmpsi2.c: Move to
      	../libgcc/config/stormy16/cmpsi2.c.
      	* config/stormy16/stormy16-lib2-ctzhi2.c: Move to
      	../libgcc/config/stormy16/ctzhi2.c.
      	* config/stormy16/stormy16-lib2-divsi3.c: Move to
      	../libgcc/config/stormy16/divsi3.c.
      	* config/stormy16/stormy16-lib2-ffshi2.c: Move to
      	../libgcc/config/stormy16/ffshi2.c.
      	* config/stormy16/stormy16-lib2-lshrsi3.c: Move to
      	../libgcc/config/stormy16/lshrsi3.c.
      	* config/stormy16/stormy16-lib2-modsi3.c: Move to
      	../libgcc/config/stormy16/modsi3.c.
      	* config/stormy16/stormy16-lib2-parityhi2.c: Move to
      	../libgcc/config/stormy16/parityhi2.c.
      	* config/stormy16/stormy16-lib2-popcounthi2.c: Move to
      	../libgcc/config/stormy16/popcounthi2.c.
      	* config/stormy16/stormy16-lib2-ucmpsi2.c: Move to
      	../libgcc/config/stormy16/ucmpsi2.c.
      	* config/stormy16/stormy16-lib2-udivmodsi4.c: Move to
      	../libgcc/config/stormy16/udivmodsi4.c.
      	* config/stormy16/stormy16-lib2-udivsi3.c: Move to
      	../libgcc/config/stormy16/udivsi3.c.
      	* config/stormy16/stormy16-lib2-umodsi3.c: Move to
      	../libgcc/config/stormy16/umodsi3.c.
      	* config/stormy16/t-stormy16: Move to ../libgcc/config/t-stormy16.
      	* config/v850/t-v850 (INSTALL_LIBGCC): Remove.
      	* config/xtensa/lib2funcs.S: Move to ../libgcc/config/xtensa.
      	* config/xtensa/t-elf: Remove.
      	* config/xtensa/t-xtensa (LIB2FUNCS_EXTRA): Remove.
      	* config.gcc (*-*-freebsd*): Remove t-freebsd, t-freebsd-thread
      	from tmake_file.
      	(*-*-linux*, frv-*-*linux*, *-*-kfreebsd*-gnu, *-*-knetbsd*-gnu,
      	*-*-gnu*, *-*-kopensolaris*-gnu): Remove t-linux from tmake_file.
      	(*-*-netbsd*): Remove t-libgcc-pic from tmake_file.
      	(*-*-openbsd*): Likewise.
      	Remove t-openbsd-thread for posix threads.
      	(alpha*-*-linux*): Remove alpha/t-alpha, alpha/t-ieee
      	from tmake_file.
      	(alpha*-*-freebsd*): Likewise.
      	(alpha*-*-netbsd*): Likewise.
      	(alpha*-*-openbsd*): Likewise.
      	(alpha64-dec-*vms*): Likewise.
      	(alpha*-dec-*vms*): Likewise.
      	(arm*-*-netbsdelf*): Remove arm/t-netbsd from tmake_file.
      	(arm*-*-linux*): Remove t-linux from tmake_file.
      	Remove arm/t-bpabi from tmake_file for arm*-*-linux-*eabi.
      	(arm*-*-uclinux*): Remove arm/t-bpabi from tmake_file for
      	arm*-*-uclinux*eabi.
      	(arm*-*-eabi*, arm*-*-symbianelf* ): Remove arm/t-bpabi from
      	tmake_file for arm*-*-eabi*.
      	(fr30-*-elf): Remove tmake_file.
      	(hppa*64*-*-linux*): Remove tmake_file.
      	(hppa*-*-linux*): Likewise.
      	(hppa[12]*-*-hpux10*): Remove pa/t-pa-hpux10, pa/t-pa-hpux from
      	tmake_file.
      	(hppa*64*-*-hpux11*): Remove pa/t-pa64, pa/t-pa-hpux from tmake_file.
      	(hppa[12]*-*-hpux11*): Remove pa/t-pa-hpux11, pa/t-pa-hpux from
      	tmake_file.
      	(i[34567]86-*-elf*): Remove tmake_file.
      	(x86_64-*-elf*): Likewise.
      	(i[34567]86-*-nto-qnx*): Likewise.
      	(i[34567]86-*-cygwin*): Remove i386/t-cygwin from tmake_file.
      	(i[34567]86-*-mingw*, x86_64-*-mingw*): Remove i386/t-gthr-win32
      	from tmake_file if using win32 threads.
      	(iq2000*-*-elf*): Remove tmake-file.
      	(microblaze*-linux*): Likewise.
      	(sh-*-elf*, sh[12346l]*-*-elf*, sh-*-linux*)
      	(sh[2346lbe]*-*-linux*, sh-*-netbsdelf*, shl*-*-netbsdelf*)
      	(sh5-*-netbsd*, sh5l*-*-netbsd*, sh64-*-netbsd*)
      	(sh64l*-*-netbsd*): Remove sh/t-netbsd from tmake_file for
      	sh5*-*-netbsd*, sh64*-netbsd*, *-*-netbsd.
      	(xtensa*-*-elf*): Remove tmake_file.
      
      	gcc/po:
      	* EXCLUDES (config/vxlib.c, gbl-ctors.h, libgcc2.c, libgcc2.h)
      	(longlong.h): Remove.
      
      	libgcc:
      	* configure.ac: Include ../config/picflag.m4.
      	(GCC_PICFLAG): Call it.
      	Substitute.
      	* configure: Regenerate.
      	* Makefile.in (gcc_srcdir): Remove.
      	(LIBGCC2_DEBUG_CFLAGS, LIBGCC2_CFLAGS, LIBGCC2_INCLUDES)
      	(HOST_LIBGCC2_CFLAGS, PICFLAG, LIB2FUNCS_ST, LIB2FUNCS_EXCLUDE)
      	(LIB2_DIVMOD_FUNCS, LIB2ADD, LIB2ADD_ST): Set.
      	($(lib2funcs-o), $(lib2funcs-s-o), $(lib2-divmod-o))
      	($(lib2-divmod-s-o)): Use $(srcdir) to refer to libgcc2.c.
      	Use $<.
      	Remove comment.
      	* libgcc2.c, libgcc2.h, gbl-ctors.h, longlong.h: New files.
      	* siditi-object.mk ($o$(objext), $(o)_s$(objext)): Use $(srcdir)
      	to refer to libgcc2.c.
      	Use $<.
      	* config/darwin-64.c: New file.
      	* config/darwin-crt3.c: Remove comment.
      	* config/divmod.c, config/floatunsidf.c, config/floatunsisf.c,
      	config/floatunsitf.c, config/floatunsixf.c, config/udivmod.c,
      	config/udivmodsi4.c: New files.
      	* config/memcmp.c, config/memcpy.c, config/memmove.c,
      	config/memset.c: New files.
      	* config/t-crtstuff-pic (CRTSTUFF_T_CFLAGS_S): Use $(PICFLAG).
      	* config/t-darwin (HOST_LIBGCC2_CFLAGS): Set.
      	* config/t-freebsd-thread, config/t-libgcc-pic: New files.
      	* config/t-libunwind (HOST_LIBGCC2_CFLAGS): Set.
      	* config/t-openbsd-thread: New file.
      	* config/t-sol2 (HOST_LIBGCC2_CFLAGS): Remove.
      	* config/t-vxworks, config/vxlib-tls.c, config/vxlib.c: New files.
      	* config/alpha/gthr-posix.c, config/alpha/qrnnd.S: New files.
      	* config/alpha/t-alpha (LIB2ADD): Use $(srcdir) to refer to
      	qrnnd.S.
      	Adapt filename.
      	* config/alpha/t-osf-pthread (LIB2ADD): Use $(srcdir)/config/alpha
      	to refer to gthr-posix.c.
      	* config/alpha/t-vms (LIB2ADD): Set.
      	* config/alpha/vms-gcc_shell_handler.c: New file.
      	* config/arm/bpabi.c, config/arm/fp16.c,
      	config/arm/linux-atomic.c, config/arm/linux-atomic-64bit.c,
      	config/arm/unaligned-funcs.c: New files.
      	* config/arm/t-bpabi (LIB2ADD, LIB2ADD_ST): Set.
      	* config/arm/t-elf (HOST_LIBGCC2_CFLAGS): Set.
      	* config/arm/t-linux: Likewise.
      	* config/arm/t-linux-eabi (LIB2ADD_ST): Add.
      	* config/arm/t-netbsd: New file.
      	* config/arm/t-strongarm-elf (HOST_LIBGCC2_CFLAGS): Set.
      	* config/arm/t-symbian (LIB2ADD_ST): Set.
      	* config/avr/t-avr (LIB2FUNCS_EXCLUDE, HOST_LIBGCC2_CFLAGS): Set.
      	* config/bfin/t-crtstuff (CRTSTUFF_T_CFLAGS): Use $(PICFLAG).
      	* config/bfin/t-elf: New file.
      	* config/c6x/eqd.c, config/c6x/eqf.c, config/c6x/ged.c,
      	config/c6x/gef.c, config/c6x/gtd.c, config/c6x/gtf.c,
      	config/c6x/led.c, config/c6x/lef.c, config/c6x/ltd.c,
      	config/c6x/ltf.c: New files.
      	* config/c6x/t-elf (LIB2FUNCS_EXCLUDE, LIB2ADD)
      	(HOST_LIBGCC2_CFLAGS): Set.
      	* config/c6x/t-uclinux (HOST_LIBGCC2_CFLAGS): Set.
      	(CRTSTUFF_T_CFLAGS): Use $(PICFLAG).
      	* config/cris/arit.c, config/cris/mulsi3.S, config/cris/t-cris:
      	New files.
      	* config/cris/t-elfmulti (LIB2ADD_ST): Set.
      	* config/cris/t-linux (HOST_LIBGCC2_CFLAGS): Remove.
      	* config/frv/cmovd.c, config/frv/cmovh.c, config/frv/cmovw.c,
      	config/frv/modi.c, config/frv/uitod.c, config/frv/uitof.c,
      	config/frv/ulltod.c, config/frv/ulltof.c, config/frv/umodi.c: New
      	files.
      	* config/frv/t-frv (LIB2ADD): Set.
      	* config/frv/t-linux (CRTSTUFF_T_CFLAGS): Use $(PICFLAG).
      	* config/h8300/clzhi2.c, config/h8300/ctzhi2.c,
      	config/h8300/fixunssfsi.c, config/h8300/parityhi2.c,
      	config/h8300/popcounthi2.c: New files.
      	* config/h8300/t-h8300 (LIB2ADD, HOST_LIBGCC2_CFLAGS): Set.
      	* config/i386/gthr-win32.c: New file.
      	* config/i386/t-cygming (LIBGCC2_INCLUDES): Set.
      	* config/i386/t-cygwin: Likewise.
      	* config/i386/t-darwin, config/i386/t-darwin64,
      	config/i386/t-gthr-win32, config/i386/t-interix: New files.
      	* config/i386/t-nto (HOST_LIBGCC2_CFLAGS): Set.
      	(CRTSTUFF_T_CFLAGS): Use $(PICFLAG).
      	* config/i386/t-sol2 (CRTSTUFF_T_CFLAGS): Use $(PICFLAG).
      	* config/ia64/quadlib.c: New file.
      	* config/ia64/t-hpux (LIB2ADD): Set.
      	* config/ia64/t-ia64: Add comment.
      	* config/iq2000/lib2funcs.c, config/iq2000/t-iq2000: New files.
      	* config/lm32/t-uclinux (CRTSTUFF_T_CFLAGS): Use $(PICFLAG).
      	(HOST_LIBGCC2_CFLAGS): Append, remove -fPIC.
      	* config/m32c/lib2funcs.c, config/m32c/trapv.c: New files.
      	* config/m32c/t-m32c (LIB2ADD): Set.
      	* config/m32r/t-linux (HOST_LIBGCC2_CFLAGS): Set.
      	* config/m32r/t-m32r: Likewise.
      	* config/m68k/fpgnulib.c: New file.
      	* config/m68k/t-floatlib (LIB2ADD): Set.
      	(xfgnulib.c): New target.
      	* config/mcore/t-mcore (HOST_LIBGCC2_CFLAGS): Set.
      	* config/mep/lib2funcs.c, config/mep/tramp.c: New files.
      	* config/mep/t-mep (LIB2ADD): Set.
      	* config/microblaze/divsi3.asm: Rename to divsi3.S.
      	* config/microblaze/moddi3.asm: Rename to moddi3.S.
      	* config/microblaze/modsi3.asm: Rename to modsi3.S.
      	* config/microblaze/muldi3_hard.asm: Rename to hard.S.
      	* config/microblaze/mulsi3.asm: Rename to mulsi3.S.
      	* config/microblaze/stack_overflow_exit.asm: Rename to exit.S.
      	* config/microblaze/udivsi3.asm: Rename to udivsi3.S.
      	* config/microblaze/umodsi3.asm: Rename to umodsi3.S.
      	* config/microblaze/t-microblaze (LIB2ADD): Reflect this.
      	* config/mips/t-elf, config/mips/t-vr, config/mips/vr4120-div.S:
      	New files.
      	* config/mips/t-mips (LIB2_SIDITI_CONV_FUNCS): Set.
      	* config/mmix/t-mmix (HOST_LIBGCC2_CFLAGS): Set.
      	* config/pa/fptr.c, config/pa/lib2funcs.S,
      	config/pa/linux-atomic.c, config/pa/quadlib.c: New files.
      	* config/pa/t-linux (HOST_LIBGCC2_CFLAGS): Set.
      	(LIB2ADD, LIB2ADD_ST): Set.
      	* config/pa/t-hpux, config/pa/t-hpux10, config/pa/t-pa64: New files.
      	* config/pa/t-linux (HOST_LIBGCC2_CFLAGS, LIB2ADD, LIB2ADD_ST):
      	Set.
      	* config/pa/t-linux64 (LIB2ADD_ST, HOST_LIBGCC2_CFLAGS): Set.
      	* config/pdp11/t-pdp11: New file.
      	* config/picochip/libgccExtras/adddi3.S,
      	config/picochip/libgccExtras/ashlsi3.S,
      	config/picochip/libgccExtras/ashrsi3.S,
      	config/picochip/libgccExtras/clzsi2.S,
      	config/picochip/libgccExtras/cmpsi2.S,
      	config/picochip/libgccExtras/divmod15.S,
      	config/picochip/libgccExtras/divmodhi4.S,
      	config/picochip/libgccExtras/divmodsi4.S,
      	config/picochip/libgccExtras/lshrsi3.S,
      	config/picochip/libgccExtras/parityhi2.S,
      	config/picochip/libgccExtras/popcounthi2.S,
      	config/picochip/libgccExtras/subdi3.S,
      	config/picochip/libgccExtras/ucmpsi2.S,
      	config/picochip/libgccExtras/udivmodhi4.S,
      	config/picochip/libgccExtras/udivmodsi4.S: New files.
      	* config/picochip/t-picochip (LIB2ADD, HOST_LIBGCC2_CFLAGS)
      	(LIBGCC2_DEBUG_CFLAGS, RANLIB_FOR_TARGET): Set.
      	* config/rs6000/crtresfpr.S, config/rs6000/crtresgpr.S,
      	config/rs6000/crtresxfpr.S, config/rs6000/crtresxgpr.S,
      	config/rs6000/crtsavfpr.S, config/rs6000/crtsavgpr.S)
      	config/rs6000/darwin-asm.h, config/rs6000/darwin-fpsave.S,
      	config/rs6000/darwin-gpsave.S, 	config/rs6000/darwin-tramp.S,
      	config/rs6000/darwin-vecsave.S, config/rs6000/darwin-world.S: New
      	files.
      	* config/rs6000/t-darwin (LIB2ADD, LIB2ADD_ST)
      	(HOST_LIBGCC2_CFLAGS): Set.
      	* config/rs6000/t-darwin64: New file.
      	* config/rs6000/t-linux64 (HOST_LIBGCC2_CFLAGS): Set.
      	* config/rs6000/t-lynx, config/rs6000/t-netbsd: New files.
      	* config/rs6000/t-ppccomm (LIB2ADD): Add
      	$(srcdir)/config/rs6000/tramp.S.
      	(LIB2ADD_ST): Use $(srcdir)/config/rs6000 to refer to sources.
      	Add  $(srcdir)/config/rs6000/eabi.S.
      	(crtsavfpr.S, crtresfpr.S, crtsavgpr.S, crtresgpr.S, crtresxfpr.S)
      	(crtresxgpr.S, e500crtres32gpr.S, e500crtres64gpr.S)
      	(e500crtres64gprctr.S, e500crtrest32gpr.S, e500crtrest64gpr.S)
      	(e500crtresx32gpr.S, e500crtresx64gpr.S, e500crtsav32gpr.S)
      	(e500crtsav64gpr.S, e500crtsav64gprctr.S, e500crtsavg32gpr.S)
      	(e500crtsavg64gpr.S, e500crtsavg64gprctr.S): Remove.
      	* config/rs6000/tramp.S: New file.
      	* config/s390/t-tpf: Remove.
      	* config/sh/linux-atomic.S: New file.
      	* config/sh/t-linux (LIB2ADD): Set.
      	(HOST_LIBGCC2_CFLAGS): Append, remove -fpic.
      	* config/sh/t-netbsd (LIB2ADD, HOST_LIBGCC2_CFLAGS): Set.
      	* config/sh/t-sh (unwind-dw2-Os-4-200.o): Use $(srcdir) to refer
      	to unwind-dw2.c.
      	(HOST_LIBGCC2_CFLAGS): Set.
      	* config/sparc/t-sol2 (CRTSTUFF_T_CFLAGS): Use $(PICFLAG).
      	* config/spu/divmodti4.c, config/spu/divv2df3.c,
      	config/spu/float_disf.c, config/spu/float_unsdidf.c,
      	config/spu/float_unsdisf.c, config/spu/float_unssidf.c,
      	config/spu/mfc_multi_tag_release.c,
      	config/spu/mfc_multi_tag_reserve.c, config/spu/mfc_tag_release.c,
      	config/spu/mfc_tag_reserve.c, config/spu/mfc_tag_table.c,
      	config/spu/multi3.c: New files.
      	* config/spu/t-elf (LIB2ADD, LIB2ADD_ST, LIB2_SIDITI_CONV_FUNCS)
      	(HOST_LIBGCC2_CFLAGS): Set.
      	* config/stormy16/ashlsi3.c, config/stormy16/ashrsi3.c,
      	config/stormy16/clzhi2.c, config/stormy16/cmpsi2.c,
      	config/stormy16/ctzhi2.c, config/stormy16/divsi3.c,
      	config/stormy16/ffshi2.c, config/stormy16/lib2.c,
      	config/stormy16/lshrsi3.c, config/stormy16/modsi3.c,
      	config/stormy16/parityhi2.c, config/stormy16/popcounthi2.c,
      	config/stormy16/t-stormy16, config/stormy16/ucmpsi2.c,
      	config/stormy16/udivmodsi4.c, config/stormy16/udivsi3.c,
      	config/stormy16/umodsi3.c: New files.
      	* config/xtensa/lib2funcs.S: New file.
      	* config/xtensa/t-elf (HOST_LIBGCC2_CFLAGS): Set.
      	* config/xtensa/t-xtensa (LIB2ADD): Set.
      	* config.host (*-*-darwin*): Add t-libgcc-pic to tmake_file.
      	(*-*-freebsd*): Add t-freebsd, t-libgcc-pic to tmake_file.
      	Add t-freebsd-thread to tmake_file for posix threads.
      	(*-*-linux*, frv-*-*linux*, *-*-kfreebsd*-gnu, *-*-knetbsd*-gnu)
      	(*-*-gnu*, *-*-kopensolaris*-gnu): Add t-libgcc-pic to tmake_file.
      	(*-*-lynxos*): Likewise.
      	(*-*-netbsd*): Likewise.
      	(*-*-openbsd*): Likewise.
      	Add t-openbsd-thread to tmake_file for posix threads.
      	(*-*-solaris2*): Add t-libgcc-pic to tmake_file.
      	(*-*-vxworks*): Set tmake_file.
      	(alpha*-*-linux*): Add alpha/t-alpha, alpha/t-ieee to tmake_file.
      	(alpha*-*-freebsd*): Likewise.
      	(alpha*-*-netbsd*): Likewise.
      	(alpha*-*-openbsd*): Likewise.
      	(alpha*-dec-osf5.1*): Remove qrnnd.o, gthr-posix.o from extra_parts.
      	(alpha64-dec-*vms*): Add alpha/t-alpha, alpha/t-ieee to tmake_file.
      	(alpha*-dec-*vms*): Likewise.
      	(arm*-*-netbsdelf*): Add arm/t-netbsd to tmake_file.
      	(bfin*-elf*): Add bfin/t-elf to tmake_file.
      	(bfin*-uclinux*): Likewise.
      	(bfin*-linux-uclibc*): Likewise.
      	(crisv32-*-elf): Add cris/t-cris to tmake_file.
      	(crisv32-*-none): Likewise.
      	(cris-*-elf): Likewise.
      	(cris-*-none): Likewise.
      	(cris-*-linux*, crisv32-*-linux*): Likewise.
      	(hppa[12]*-*-hpux10*): Add pa/t-hpux pa/t-hpux10, t-libgcc-pic to
      	tmake_file.
      	(hppa*64*-*-hpux11*): Add pa/t-hpux, pa/t-pa64, t-libgcc-pic to
      	tmake_file.
      	(hppa[12]*-*-hpux11*): Add pa/t-hpux, t-libgcc-pic to tmake_file.
      	(i[34567]86-*-elf*): Add t-libgcc-pic to tmake_file.
      	(x86_64-*-elf*): Likewise.
      	(i[34567]86-*-nto-qnx*): Likewise.
      	(i[34567]86-*-mingw*): Add i386/t-gthr-win32 to tmake_file for
      	win32 threads.
      	(x86_64-*-mingw*): Likewise.
      	(i[34567]86-*-interix3*): Add i386/t-interix to tmake_file.
      	(lm32-*-uclinux*): Add t-libgcc-pic to tmake_file.
      	(mipsisa32-*-elf*, mipsisa32el-*-elf*, mipsisa32r2-*-elf*)
      	(mipsisa32r2el-*-elf*, mipsisa64-*-elf*, mipsisa64el-*-elf*)
      	(mipsisa64r2-*-elf*, mipsisa64r2el-*-elf*): Add mips/t-elf to
      	tmake_file.
      	(mipsisa64sr71k-*-elf*): Likewise.
      	(mipsisa64sb1-*-elf*, mipsisa64sb1el-*-elf*): Likewise.
      	(mips-*-elf*, mipsel-*-elf*): Likewise.
      	(mips64-*-elf*, mips64el-*-elf*): Likewise.
      	(mips64orion-*-elf*, mips64orionel-*-elf*): Likewise.
      	(mips*-*-rtems*): Likewise.
      	(mips64vr-*-elf*, mips64vrel-*-elf*): Add mips/t-elf, mips/t-vr
      	to tmake_file.
      	(pdp11-*-*): Add pdp11/t-pdp11 to tmake_file.
      	(powerpc64-*-darwin*): Add rs6000/t-darwin64 to tmake_file.
      	(s390x-ibm-tpf*): Add t-libgcc-pic to tmake_file.
      	(spu-*-elf*): Likewise.
      	(tic6x-*-uclinux): Add t-libgcc-pic to tmake_file.
      
      	libquadmath:
      	* printf/gmp-impl.h: Adapt path to longlong.h.
      
      From-SVN: r180774
      f9989b51
  29. Jun 21, 2011
    • Bernd Schmidt's avatar
      Makefile.in (lib2funcs): Add _clrsbsi2 and _clrsbdi2. · 3801c801
      Bernd Schmidt authored
      	libgcc/
      	* Makefile.in (lib2funcs): Add _clrsbsi2 and _clrsbdi2.
      	* libgcc-std.ver.in (GCC_4.7.0): New section.
      
      	gcc/
      	* doc/extend.texi (__builtin_clrsb, __builtin_clrsbl,
      	__builtin_clrsbll): Document.
      	* doc/rtl.texi (clrsb): New entry.
      	* optabs.c (widen_leading): Renamed from widen_clz.  New argument
      	UNOPTAB.  All callers changed.  Use UNOPTAB instead of clz_optab.
      	(expand_unop): Handle clrsb_optab.
      	(init_optabs): Initialize it.
      	* optabs.h (enum optab_index): New entry OTI_clrsb.
      	(clrsb_optab): Define.
      	* genopinit.c (optabs): Add an entry for it.
      	* builtins.c (expand_builtin): Handle clrsb builtin functions.
      	* builtins.def (BUILT_IN_CLRSB, BUILT_IN_CLRSBIMAX, BUILT_IN_CLRSBL,
      	BUILT_IN_CLRSBLL): New.
      	* rtl.def (CLRSB): New code.
      	* dwarf2out.c (mem_loc_descriptor): Handle it.
      	* simplify-rtx.c (simplify_const_unary_operation): Likewise.
      	Use op_mode rather than mode when optimizing ffs, clz, ctz, parity
      	and popcount.
      	* libgcc2.c (__clrsbSI2, __clrsbDI2): New functions.
      	* libgcc2.h (__clrsbSI2, __clrsbDI2): Define and declare.
      	(__ctzDI2): Move declaration.
      	* config/bfin/bfin.md (clrsbsi2): New expander.
      	(signbitssi2): Use the CLRSB rtx.
      	(clrsbhi2): Renamed from signbitshi2.  Use the CLRSB rtx.
      	* config/bfin/bfin.c (bdesc_1arg): Changed accordingly.
      
      	gcc/testsuite/
      	* gcc.c-torture/excute/builtin-bitops-1.c (MAKE_FUNS): Make
      	my_clrsb test functions.
      	(main): Test clrsb.
      	* gcc.dg/builtin-protos-1.c (test_s, test_u, test_sl, test_ul,
      	test_sll, test_ull): Add clrsb tests.
      	* gcc.dg/torture/builtin-attr-1.c: Add tests for clrsb, clrsbl,
      	clrsbll.
      
      From-SVN: r175261
      3801c801
  30. May 25, 2011
    • Bernd Schmidt's avatar
      re PR bootstrap/49160 (Bootstrap failure) · 0c007eb2
      Bernd Schmidt authored
      	PR bootstrap/49160
      	* libgcc2.h (__powisf2, __powidf2, __powitf2, __powixf2,
      	__mulsc3, __muldc3, __mulxc3, __multc3, __divsc3, __divdc3,
      	__divxc3, __divtc3): Wrap definitions in #ifndef.
      
      From-SVN: r174216
      0c007eb2
    • Bernd Schmidt's avatar
      libgcc2.h (__NW, __NDW): Define using a __gnu_ prefix if LIBGCC2_GNU_PREFIX is defined. · cdbf4541
      Bernd Schmidt authored
      	gcc/
      	* libgcc2.h (__NW, __NDW): Define using a __gnu_ prefix if
      	LIBGCC2_GNU_PREFIX is defined.
      	(__N): New macro.
      	(__powisf2, __powidf2, __powitf2, __powixf2, __bswapsi2, __bswapdi2,
      	__mulsc3, __muldc3, __mulxc3, __multc3, __divsc3, __divdc3, __divxc3,
      	__divtc3, __udiv_w_sdiv, __clear_cache, __enable_execute_stack,
      	__clz_tab): Define using __N.
      	(__absvsi2, __negvsi2, __addvsi3, __subvsi3, __mulvsi3): Likewise if
      	COMPAT_SIMODE_TRAPPING_ARITHMETIC.
      	* target.def (libfunc_gnu_prefix): New hook.
      	* doc/tm.texi.in (LIBGCC2_GNU_PREFIX): Document.
      	(TARGET_LIBFUNC_GNU_PREFIX): Add hook.
      	* doc/tm.texi: Regenerate.
      	* system.h (LIBGCC2_GNU_PREFIX): Poison.
      	* optabs.c (gen_libfunc): Take the libfunc_gnu_prefix hook into
      	account.
      	(gen_interclass_conv_libfunc, gen_intraclass_conv_libfunc): Likewise.
      	(init_optabs): Likewise for the bswap libfuncs.
      	* tree.c (build_common_builtin_nodes): Likewise for complex multiply
      	and divide.
      	* config/t-slibgcc-elf-ver (SHLIB_MAPFILES): Use $$(libgcc_objdir).
      	* config/t-slibgcc-sld (SHLIB_MAPFILES): Likewise.
      	* libgcc-std.ver: Remove.
      	* Makefile.in (srcdirify): Handle $$(libgcc_objdir).
      	* config/frv/t-linux (SHLIB_MAPFILES): Use $$(libgcc_objdir) for
      	libgcc-std.ver.
      	* config/i386/t-linux (SHLIB_MAPFILES): Likewise.
      	* config/mips/t-slibgcc-irix (SHLIB_MAPFILES): Likewise.
      	* config/rs6000/t-aix43 (SHLIB_MAPFILES): Likewise.
      	* config/rs6000/t-aix52 (SHLIB_MAPFILES): Likewise.
      	* config/sparc/t-linux (SHLIB_MAPFILES): Likewise.
      	* config/i386/t-linux (SHLIB_MAPFILES): Likewise.
      	* config/i386/t-linux (SHLIB_MAPFILES): Likewise.
      	* config/fixed-bit.h (FIXED_OP): Define differently depending on
      	LIBGCC2_GNU_PREFIX. All uses changed not to pass leading underscores.
      	(FIXED_CONVERT_OP, FIXED_CONVERT_OP2): Likewise.
      
      	libgcc/
      	* libgcc-std.ver.in: New file.
      	* Makefile.in (LIBGCC_VER_GNU_PREFIX, LIBGCC_VER_SYMBOLS_PREFIX): New
      	variables.
      	(libgcc-std.ver): New rule.
      	* config/t-gnu-prefix: New file.
      
      From-SVN: r174187
      cdbf4541
  31. Jan 03, 2011
  32. Oct 23, 2010
    • Nathan Froyd's avatar
      cppbuiltin.c (define_builtin_macros_for_type_sizes): Define __BYTE_ORDER__... · 18ed6ee4
      Nathan Froyd authored
      gcc/
      	* cppbuiltin.c (define_builtin_macros_for_type_sizes): Define
      	__BYTE_ORDER__, __ORDER_LITTLE_ENDIAN__, __ORDER_BIG_ENDIAN__, and
      	__ORDER_PDP_ENDIAN__.
      	* libgcc2.h (LIBGCC2_WORDS_BIG_ENDIAN): Delete.
      	(struct DWstruct): Define based on __BYTE_ORDER__.
      	* config/fixed-bit.h (LIBGCC2_WORDS_BIG_ENDIAN): Delete.
      	(struct INTstruct): Define based on __BYTE_ORDER__.
      	* config/dfp-bit.h (LIBGCC2_WORDS_BIG_ENDIAN): Delete.
      	(LIBGCC2_FLOAT_WORDS_BIG_ENDIAN): Test __BYTE_ORDER__.
      	* system.h (LIBGCC2_WORDS_BIG_ENDIAN): Poison identifier.
      	* config/arc/arc.h (LIBGCC2_WORDS_BIG_ENDIAN): Delete.
      	* config/arm/arm.h (LIBGCC2_WORDS_BIG_ENDIAN): Delete.
      	* config/ia64/ia64.h (LIBGCC2_WORDS_BIG_ENDIAN): Delete.
      	* config/iq2000/iq2000.h (LIBGCC2_WORDS_BIG_ENDIAN): Delete.
      	* config/lm32/lm32.h (LIBGCC2_WORDS_BIG_ENDIAN): Delete.
      	* config/m32r/m32r.h (LIBGCC2_WORDS_BIG_ENDIAN): Delete.
      	* config/mcore/mcore.h (LIBGCC2_WORDS_BIG_ENDIAN): Delete.
      	* config/mep/mep.h (LIBGCC2_WORDS_BIG_ENDIAN): Delete.
      	* config/mips/mips.h (LIBGCC2_WORDS_BIG_ENDIAN): Delete.
      	* config/rs6000/sysv4.h (LIBGCC2_WORDS_BIG_ENDIAN): Delete.
      	* config/rx/rx.h (LIBGCC2_WORDS_BIG_ENDIAN): Delete.
      	* config/score/score.h (LIBGCC2_WORDS_BIG_ENDIAN): Delete.
      	* config/sh/sh.h (LIBGCC2_WORDS_BIG_ENDIAN): Delete.
      	* config/sparc/sparc.h (LIBGCC2_WORDS_BIG_ENDIAN): Delete.
      	* config/xtensa/xtensa.h (LIBGCC2_WORDS_BIG_ENDIAN): Delete.
      	* doc/tm.texi.in (LIBGCC2_WORDS_BIG_ENDIAN): Delete.
      	* doc/tm.texi: Regenerate.
      	* doc/cpp.texi (__BYTE_ORDER__, __ORDER_LITTLE_ENDIAN__): Document.
      	(__ORDER_BIG_ENDIAN__, __ORDER_PDP_ENDIAN__): Likewise.
      
      libdecnumber/
      	* dconfig.h (LIBGCC2_WORDS_BIG_ENDIAN): Delete.
      	(LIBGCC2_FLOAT_WORDS_BIG_ENDIAN): Test __BYTE_ORDER__.
      
      libgcc/
      	* config/libbid/bid_gcc_intrinsics.h (LIBGCC2_WORDS_BIG_ENDIAN):
      	Delete.
      	(LIBGCC2_FLOAT_WORDS_BIG_ENDIAN): Test __BYTE_ORDER__.
      
      From-SVN: r165881
      18ed6ee4
  33. Oct 12, 2010
    • Nathan Froyd's avatar
      libgcc2.h: Use __SIZEOF_DOUBLE__ instead of LIBGCC2_DOUBLE_TYPE_SIZE. · a18bdccd
      Nathan Froyd authored
      	* libgcc2.h: Use __SIZEOF_DOUBLE__ instead of
      	LIBGCC2_DOUBLE_TYPE_SIZE.
      	(LIBGCC2_DOUBLE_TYPE_SIZE): Delete.
      	* config/fixed-bit.h: Likewise.
      	* config/rx/rx.h (LIBGCC2_DOUBLE_TYPE_SIZE): Delete.
      	* config/sh/sh.h (LIBGCC2_DOUBLE_TYPE_SIZE): Delete.
      	* system.h (LIBGCC2_DOUBLE_TYPE_SIZE): Poison.
      	* doc/tm.texi.in (LIBGCC2_HAS_DF_MODE): Use DOUBLE_TYPE_SIZE.
      	(DF_SIZE): Likewise.
      	* doc/tm.texi: Regenerate.
      
      From-SVN: r165396
      a18bdccd
  34. Oct 09, 2010
  35. Apr 09, 2009
  36. Nov 05, 2007
  37. Jul 06, 2007
    • Andreas Krebbel's avatar
      libgcc2.h (word_type): Type definition removed. · c7ff6e7a
      Andreas Krebbel authored
      2007-07-06  Andreas Krebbel  <krebbel1@de.ibm.com>
      
      	* libgcc2.h (word_type): Type definition removed.
      	(cmp_return_type, shift_count_type): Type definitions added.
      	(__lshrdi3, __ashldi3, __ashrdi3): word_type of second parameter
      	replaced with shift_count_type.
      	(__cmpdi2, __ucmpdi2): word_type of return type replaced with
      	cmp_return_type.
      	* libgcc2.c (__udivmoddi4, __moddi3): Type of local variable c
      	changed from word_type to Wtype.
      	(__lshrdi3, __ashldi3, __ashrdi3): word_type of second parameter
      	replaced with shift_count_type.
      	(__cmpdi2, __ucmpdi2): word_type of return type replaced with
      	cmp_return_type.
      	* c-common.c (handle_mode_attribute): Handling for libgcc_cmp_return and
      	libgcc_shift_count attribute added.
      	* target-def.h (TARGET_LIBGCC_CMP_RETURN_MODE,
      	TARGET_LIBGCC_SHIFT_COUNT_MODE): New target hooks defined.
      	(TARGET_INITIALIZER): New target hooks added.
      	* targhooks.c (default_libgcc_cmp_return_mode,
      	default_libgcc_shift_count_mode): Default implementations for the new
      	target hooks added.
      	* targhooks.h (default_libgcc_cmp_return_mode,
      	default_libgcc_shift_count_mode): Function prototypes added.
      	* target.h (struct gcc_target): Fields for the new target hooks added.
      	* optabs.c (expand_binop): Use shift_count_mode when expanding shift
      	as library call.
      	(prepare_cmp_insn): Use cmp_return_mode when expanding comparison as
      	library call.
      
      	* doc/tm.texi (TARGET_LIBGCC_CMP_RETURN_MODE,
      	TARGET_LIBGCC_SHIFT_COUNT_MODE): Documentation added.
      
      	* config/s390/s390.c (s390_libgcc_cmp_return_mode,
      	s390_libgcc_shift_count_mode): Functions added.
      	(TARGET_LIBGCC_CMP_RETURN_MODE,	TARGET_LIBGCC_SHIFT_COUNT_MODE): Target
      	hooks defined.
      
      From-SVN: r126410
      c7ff6e7a
  38. Jul 03, 2007
  39. Apr 24, 2007
    • Richard Henderson's avatar
      libgcc2.h (AVOID_FP_TYPE_CONVERSION): Rename from IS_IBM_EXTENDED. · 5fb54b91
      Richard Henderson authored
              * libgcc2.h (AVOID_FP_TYPE_CONVERSION): Rename from 
              IS_IBM_EXTENDED.  Also define in terms of WIDEST_HARDWARE_FP_SIZE.
              * libgcc2.c (__floatdisf): Avoid double-word arithmetic when
              looking for non-zero bits shifted out.  Avoid a recursive call
              when constructing the scalar.
              (__floatundisf): Likewise.
      
      From-SVN: r124106
      5fb54b91
Loading