aboutsummaryrefslogtreecommitdiff
path: root/libgcc
AgeCommit message (Collapse)AuthorFilesLines
2014-09-12Remove LIBGCC2_HAS_?F_MODE target macros.Joseph Myers4-34/+47
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
2014-09-11re PR target/63223 ([avr] Make jumptables work with -Wl,--section-start,.text=)Georg-Johann Lay3-129/+112
gcc/ PR target/63223 * config/avr/avr.md (*tablejump.3byte-pc): New insn. (*tablejump): Restrict to !AVR_HAVE_EIJMP_EICALL. Add void clobber. (casesi): Expand to *tablejump.3byte-pc if AVR_HAVE_EIJMP_EICALL. libgcc/ PR target/63223 * config/avr/libgcc.S (__tablejump2__): Rewrite to use RAMPZ, ELPM and R24 as needed. Make work for all devices and .text locations. (__do_global_ctors, __do_global_dtors): Use word addresses. (__tablejump__, __tablejump_elpm__): Remove functions. * t-avr (LIB1ASMFUNCS): Remove _tablejump, _tablejump_elpm. Add _tablejump2. (XICALL, XIJMP): New macros. From-SVN: r215152
2014-09-09Add crtfastmath for AArch64.Marcus Shawcroft3-2/+47
gcc/Changelog 2014-09-09 Marcus Shawcroft <marcus.shawcroft@arm.com> Ramana Radhakrishnan <ramana.radhakrishnan@arm.com> * config/aarch64/aarch64-elf-raw.h (ENDFILE_SPEC): Add crtfastmath.o. * config/aarch64/aarch64-linux.h (GNU_USER_TARGET_MATH_ENDFILE_SPEC): Define. (ENDFILE_SPEC): Define and use GNU_USER_TARGET_MATH_ENDFILE_SPEC. libgcc/Changelog 2014-09-09 Marcus Shawcroft <marcus.shawcroft@arm.com> Ramana Radhakrishnan <ramana.radhakrishnan@arm.com> * config.host (aarch64*): Include crtfastmath and t-crtfm. * config/aarch64/crtfastmath.c: New file. Co-Authored-By: Ramana Radhakrishnan <ramana.radhakrishnan@arm.com> From-SVN: r215086
2014-09-09remove picochipTrevor Saunders24-3937/+26
contrib/ChangeLog: 2014-09-08 Trevor Saunders <tsaunders@mozilla.com> * compare-all-tests: Don't test picochip. * config-list.mk: Likewise. gcc/ChangeLog: 2014-09-08 Trevor Saunders <tsaunders@mozilla.com> * common/config/picochip/picochip-common.c: Remove. * config.gcc: Remove support for picochip. * config/picochip/constraints.md: Remove. * config/picochip/dfa_space.md: Remove. * config/picochip/dfa_speed.md: Remove. * config/picochip/picochip-protos.h: Remove. * config/picochip/picochip.c: Remove. * config/picochip/picochip.h: Remove. * config/picochip/picochip.md: Remove. * config/picochip/picochip.opt: Remove. * config/picochip/predicates.md: Remove. * config/picochip/t-picochip: Remove. * doc/md.texi: Don't document picochi. libgcc/ChangeLog: 2014-09-08 Trevor Saunders <tsaunders@mozilla.com> * config.host: Remove picochip support. * config/picochip/adddi3.S: Remove. * config/picochip/ashlsi3.S: Remove. * config/picochip/ashlsi3.c: Remove. * config/picochip/ashrsi3.S: Remove. * config/picochip/ashrsi3.c: Remove. * config/picochip/clzsi2.S: Remove. * config/picochip/cmpsi2.S: Remove. * config/picochip/divmod15.S: Remove. * config/picochip/divmodhi4.S: Remove. * config/picochip/divmodsi4.S: Remove. * config/picochip/lib1funcs.S: Remove. * config/picochip/longjmp.S: Remove. * config/picochip/lshrsi3.S: Remove. * config/picochip/lshrsi3.c: Remove. * config/picochip/parityhi2.S: Remove. * config/picochip/popcounthi2.S: Remove. * config/picochip/setjmp.S: Remove. * config/picochip/subdi3.S: Remove. * config/picochip/t-picochip: Remove. * config/picochip/ucmpsi2.S: Remove. * config/picochip/udivmodhi4.S: Remove. * config/picochip/udivmodsi4.S: Remove. From-SVN: r215039
2014-09-08Remove SF_SIZE etc. target macros.Joseph Myers3-44/+53
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
2014-09-08Remove no-longer-needed fp-bit target macros.Joseph Myers2-40/+25
gcc: * defaults.h (LARGEST_EXPONENT_IS_NORMAL, ROUND_TOWARDS_ZERO): Remove. * doc/tm.texi.in (ROUND_TOWARDS_ZERO, LARGEST_EXPONENT_IS_NORMAL): Remove. * doc/tm.texi: Regenerate. * system.h (LARGEST_EXPONENT_IS_NORMAL, ROUND_TOWARDS_ZERO): Poison. * config/arm/arm.h (LARGEST_EXPONENT_IS_NORMAL): Remove. * config/cris/cris.h (__make_dp): Remove. libgcc: * fp-bit.c (pack_d, unpack_d): Remove LARGEST_EXPONENT_IS_NORMAL and ROUND_TOWARDS_ZERO conditionals. From-SVN: r215013
2014-09-07libgcov-interface.c (STRONG_ALIAS): Rename to ...Nathan Sidwell2-5/+13
* libgcov-interface.c (STRONG_ALIAS): Rename to ... (ALIAS_weak): ... here. Use forwarding function. Adjust uses. From-SVN: r215005
2014-09-05Use -fbuilding-libgcc for more target macros used in libgcc.Joseph Myers26-172/+233
gcc/c-family: * c-cppbuiltin.c (c_cpp_builtins): Also define __LIBGCC_EH_TABLES_CAN_BE_READ_ONLY__, __LIBGCC_EH_FRAME_SECTION_NAME__, __LIBGCC_JCR_SECTION_NAME__, __LIBGCC_CTORS_SECTION_ASM_OP__, __LIBGCC_DTORS_SECTION_ASM_OP__, __LIBGCC_TEXT_SECTION_ASM_OP__, __LIBGCC_INIT_SECTION_ASM_OP__, __LIBGCC_INIT_ARRAY_SECTION_ASM_OP__, __LIBGCC_STACK_GROWS_DOWNWARD__, __LIBGCC_DONT_USE_BUILTIN_SETJMP__, __LIBGCC_DWARF_ALT_FRAME_RETURN_COLUMN__, __LIBGCC_DWARF_FRAME_REGISTERS__, __LIBGCC_EH_RETURN_STACKADJ_RTX__, __LIBGCC_JMP_BUF_SIZE__, __LIBGCC_STACK_POINTER_REGNUM__ and __LIBGCC_VTABLE_USES_DESCRIPTORS__ for -fbuilding-libgcc. (builtin_define_with_value): Handle backslash-escaping in string macro values. libgcc: * Makefile.in (CRTSTUFF_CFLAGS): Add -fbuilding-libgcc. * config/aarch64/linux-unwind.h (STACK_POINTER_REGNUM): Change all uses to __LIBGCC_STACK_POINTER_REGNUM__. (DWARF_ALT_FRAME_RETURN_COLUMN): Change all uses to __LIBGCC_DWARF_ALT_FRAME_RETURN_COLUMN__. * config/alpha/vms-unwind.h (DWARF_ALT_FRAME_RETURN_COLUMN): Change use to __LIBGCC_DWARF_ALT_FRAME_RETURN_COLUMN__. * config/cr16/unwind-cr16.c (STACK_GROWS_DOWNWARD): Change all uses to __LIBGCC_STACK_GROWS_DOWNWARD__. (DWARF_FRAME_REGISTERS): Change all uses to __LIBGCC_DWARF_FRAME_REGISTERS__. (EH_RETURN_STACKADJ_RTX): Change all uses to __LIBGCC_EH_RETURN_STACKADJ_RTX__. * config/cr16/unwind-dw2.h (DWARF_FRAME_REGISTERS): Change use to __LIBGCC_DWARF_FRAME_REGISTERS__. Remove conditional definition. * config/i386/cygming-crtbegin.c (EH_FRAME_SECTION_NAME): Change use to __LIBGCC_EH_FRAME_SECTION_NAME__. (JCR_SECTION_NAME): Change use to __LIBGCC_JCR_SECTION_NAME__. * config/i386/cygming-crtend.c (EH_FRAME_SECTION_NAME): Change use to __LIBGCC_EH_FRAME_SECTION_NAME__. (JCR_SECTION_NAME): Change use to __LIBGCC_JCR_SECTION_NAME__ * config/mips/linux-unwind.h (STACK_POINTER_REGNUM): Change use to __LIBGCC_STACK_POINTER_REGNUM__. (DWARF_ALT_FRAME_RETURN_COLUMN): Change all uses to __LIBGCC_DWARF_ALT_FRAME_RETURN_COLUMN__. * config/nios2/linux-unwind.h (STACK_POINTER_REGNUM): Change use to __LIBGCC_STACK_POINTER_REGNUM__. * config/pa/hpux-unwind.h (DWARF_ALT_FRAME_RETURN_COLUMN): Change all uses to __LIBGCC_DWARF_ALT_FRAME_RETURN_COLUMN__. * config/pa/linux-unwind.h (DWARF_ALT_FRAME_RETURN_COLUMN): Change all uses to __LIBGCC_DWARF_ALT_FRAME_RETURN_COLUMN__. * config/rs6000/aix-unwind.h (DWARF_ALT_FRAME_RETURN_COLUMN): Change all uses to __LIBGCC_DWARF_ALT_FRAME_RETURN_COLUMN__. (STACK_POINTER_REGNUM): Change all uses to __LIBGCC_STACK_POINTER_REGNUM__. * config/rs6000/darwin-fallback.c (STACK_POINTER_REGNUM): Change use to __LIBGCC_STACK_POINTER_REGNUM__. * config/rs6000/linux-unwind.h (STACK_POINTER_REGNUM): Change all uses to __LIBGCC_STACK_POINTER_REGNUM__. * config/sparc/linux-unwind.h (DWARF_FRAME_REGISTERS): Change use to __LIBGCC_DWARF_FRAME_REGISTERS__. * config/sparc/sol2-unwind.h (DWARF_FRAME_REGISTERS): Change use to __LIBGCC_DWARF_FRAME_REGISTERS__. * config/tilepro/linux-unwind.h (STACK_POINTER_REGNUM): Change use to __LIBGCC_STACK_POINTER_REGNUM__. * config/xtensa/unwind-dw2-xtensa.h (DWARF_FRAME_REGISTERS): Remove conditional definition. * crtstuff.c (TEXT_SECTION_ASM_OP): Change all uses to __LIBGCC_TEXT_SECTION_ASM_OP__. (EH_FRAME_SECTION_NAME): Change all uses to __LIBGCC_EH_FRAME_SECTION_NAME__. (EH_TABLES_CAN_BE_READ_ONLY): Change all uses to __LIBGCC_EH_TABLES_CAN_BE_READ_ONLY__. (CTORS_SECTION_ASM_OP): Change all uses to __LIBGCC_CTORS_SECTION_ASM_OP__. (DTORS_SECTION_ASM_OP): Change all uses to __LIBGCC_DTORS_SECTION_ASM_OP__. (JCR_SECTION_NAME): Change all uses to __LIBGCC_JCR_SECTION_NAME__. (INIT_SECTION_ASM_OP): Change all uses to __LIBGCC_INIT_SECTION_ASM_OP__. (INIT_ARRAY_SECTION_ASM_OP): Change all uses to __LIBGCC_INIT_ARRAY_SECTION_ASM_OP__. * generic-morestack.c (STACK_GROWS_DOWNWARD): Change all uses to __LIBGCC_STACK_GROWS_DOWNWARD__. * libgcc2.c (INIT_SECTION_ASM_OP): Change all uses to __LIBGCC_INIT_SECTION_ASM_OP__. (INIT_ARRAY_SECTION_ASM_OP): Change all uses to __LIBGCC_INIT_ARRAY_SECTION_ASM_OP__. (EH_FRAME_SECTION_NAME): Change all uses to __LIBGCC_EH_FRAME_SECTION_NAME__. * libgcov-profiler.c (VTABLE_USES_DESCRIPTORS): Remove conditional definitions. Change all uses to __LIBGCC_VTABLE_USES_DESCRIPTORS__. * unwind-dw2.c (STACK_GROWS_DOWNWARD): Change all uses to __LIBGCC_STACK_GROWS_DOWNWARD__. (DWARF_FRAME_REGISTERS): Change all uses to __LIBGCC_DWARF_FRAME_REGISTERS__. (EH_RETURN_STACKADJ_RTX): Change all uses to __LIBGCC_EH_RETURN_STACKADJ_RTX__. * unwind-dw2.h (DWARF_FRAME_REGISTERS): Remove conditional definition. Change use to __LIBGCC_DWARF_FRAME_REGISTERS__. * unwind-sjlj.c (DONT_USE_BUILTIN_SETJMP): Change all uses to __LIBGCC_DONT_USE_BUILTIN_SETJMP__. (JMP_BUF_SIZE): Change use to __LIBGCC_JMP_BUF_SIZE__. From-SVN: r214954
2014-09-03libgcov-interface.c (STRONG_ALIAS): New.Nathan Sidwell3-3/+21
* libgcov-interface.c (STRONG_ALIAS): New. (__gcov_flush): Call __gcov_reset_int. (__gcov_reset): Strong alias for ... (__gcov_reset_ing): ... this renamed hidden version. * libgcov.h (__gcov_reset_int): New declaration. From-SVN: r214840
2014-08-19cygming-crtend.c (register_frame_ctor): Move atexit call from here...Yaakov Selkowitz5-8/+36
2014-08-19 Yaakov Selkowitz <yselkowi@redhat.com> * config/i386/cygming-crtend.c (register_frame_ctor): Move atexit call from here... * config/i386/cygming-crtbegin.c (__gcc_register_frame): to here. (__dso_handle): Define on Cygwin. * config/i386/t-cygming (crtbeginS.o): New rule. * config.host (*-*-cygwin*): Add crtbeginS.o to extra_parts. From-SVN: r214162
2014-08-19cygming-crtbegin.c (deregister_frame_fn): Fix declaration syntax.Yaakov Selkowitz2-1/+6
2014-08-19 Yaakov Selkowitz <yselkowi@redhat.com> * config/i386/cygming-crtbegin.c (deregister_frame_fn): Fix declaration syntax. From-SVN: r214153
2014-08-13crtstuff.c: Undef caddr_t.Steve Ellcey2-0/+5
2014-08-13 Steve Ellcey <sellcey@mips.com> * crtstuff.c: Undef caddr_t. From-SVN: r213931
2014-08-12mips16.S: Skip when __mips_soft_float is defined.Steve Ellcey2-3/+11
2014-08-12 Steve Ellcey <sellcey@mips.com> * config/mips/mips16.S: Skip when __mips_soft_float is defined. From-SVN: r213870
2014-08-07Makefile.in (LIBGCOV_INTERFACE): Move _gcov_dump ...Nathan Sidwell5-70/+97
* Makefile.in (LIBGCOV_INTERFACE): Move _gcov_dump ... (LIBGCOV_DRIVER): ... to here. * libgcov.h (gcov_do_dump): New #define. (struct gcov_root): New. (__gcov_root): New declaration. (__gcov_dump_one): Declare. * libgcov-driver.c (gcov_list, gcov_dump_complete, run_accounted): Delete. (gcov_compute_histogram): Add LIST argument, adjust. (compute_summary): Adjust gcov_compute_histogram call. (gcov_do_dump): Not hidden, static in libgcov. (gcov_clear): Move to interface.c. (__gcov_dump_one): New, broken out of ... (gcov_exit): ... here. Make static. (__gcov_root): New. (__gcov_init): Adjust. * libgcov-interface.c (gcov_clear, gcov_exit): Remove declarations. (__gcov_flush): Use __gcov_dump_one and __gcov_reset. (gcov_clear): Moved from driver.c. Add LIST argument. (__gcov_reset): Adjust for changed interfaces. (__gcov_fork): Remove local declaration of __gcov_flush_mx. From-SVN: r213719
2014-08-05Fixed text formattingEdmar Wienskoski1-1/+1
From-SVN: r213640
2014-08-04re PR middle-end/60102 (powerpc fp-bit ices at dwf_regno)Rohit Arul Raj2-2/+8
PR target/60102 [libgcc] 2014-07-31 Rohit <rohitarulraj@freescale.com> * config/rs6000/linux-unwind.h (ppc_fallback_frame_state): Update based on change in SPE high register numbers and 3 HTM registers. [gcc] 2014-07-31 Rohit <rohitarulraj@freescale.com> * config/rs6000/rs6000.c (rs6000_reg_names) : Add SPE high register names. (alt_reg_names) : Likewise. (rs6000_dwarf_register_span) : For SPE high registers, replace dwarf register numbers with GCC hard register numbers. (rs6000_init_dwarf_reg_sizes_extra) : Likewise. (rs6000_dbx_register_number): For SPE high registers, return dwarf register number for the corresponding GCC hard register number. * config/rs6000/rs6000.h (FIRST_PSEUDO_REGISTER) : Update based on 32 newly added GCC hard register numbers for SPE high registers. (DWARF_FRAME_REGISTERS) : Likewise. (DWARF_REG_TO_UNWIND_COLUMN) : Likewise. (DWARF_FRAME_REGNUM) : Likewise. (FIXED_REGISTERS) : Likewise. (CALL_USED_REGISTERS) : Likewise. (CALL_REALLY_USED_REGISTERS) : Likewise. (REG_ALLOC_ORDER) : Likewise. (enum reg_class) : Likewise. (REG_CLASS_NAMES) : Likewise. (REG_CLASS_CONTENTS) : Likewise. (SPE_HIGH_REGNO_P) : New macro to identify SPE high registers. * gcc.target/powerpc/pr60102.c: New testcase. From-SVN: r213596
2014-08-01Makefile.in (LIBGCOV_MERGE, [...]): Reformat.Nathan Sidwell4-21/+34
* Makefile.in (LIBGCOV_MERGE, LIBGCOV_PROFILER, LIBGCOV_INTERFACE): Reformat. * libgcov-driver.c (gcov_exit, __gcov_init): Disable when IN_GCOV_TOOL. * libgcov-interface.c: Reformat some comments. (__gcov_flush_mx): Add declaration. Tidy up definition. From-SVN: r213442
2014-07-31ibm-ldouble.c (typedef union longDblUnion): Delete.Alan Modra2-39/+46
* config/rs6000/ibm-ldouble.c (typedef union longDblUnion): Delete. (pack_ldouble): New function. (__gcc_qadd): Use it. (__gcc_qmul): Likewise. (__gcc_qdiv): Likewise. (__gcc_qneg): Likewise. (__gcc_stoq): Likewise. (__gcc_dtoq): Likewise. Co-Authored-By: Peter Bergner <bergner@vnet.ibm.com> From-SVN: r213380
2014-07-30s390.c (s390_emit_tpf_eh_return): Pass original return address as second ↵Ulrich Weigand2-22/+50
parameter to __tpf_eh_return routine. gcc/ 2014-07-30 Ulrich Weigand <Ulrich.Weigand@de.ibm.com> * config/s390/s390.c (s390_emit_tpf_eh_return): Pass original return address as second parameter to __tpf_eh_return routine. libgcc/ 2014-07-30 J. D. Johnston <jjohnst@us.ibm.com> * config/s390/tpf-unwind.h: Include <stdbool.h>. (__tpf_eh_return): Add original return address as second parameter. Handle cases where unwinder routines were called directly, instead of from within the C++ library. From-SVN: r213305
2014-07-29libgcov.h: Move renaming of entry points to lib gcov specific portion.Nathan Sidwell3-63/+88
libgcc/ * libgcov.h: Move renaming of entry points to lib gcov specific portion. (gcov_do_dump): New rename. (gcov_rewrite): Remove inline, make HIDDEN. * libgcov-driver.c (gcov_clear, gcov_exit): Remove declarations. (gcov_exit_compute_summary): Rename to ... (compute_summary): ... here. Add LIST argument. (gcov_exit_merge_gcda): Rename to ... (merge_one_data): ... here. (gcov_exit_write_gcda): Rename to ... (write_one_data): ... here. (gcov_exit_merge_summary): Rename to ... (merge_summary): Add RUN_COUNTED argument. (gcov_exit_dump_gcov): Rename to ... (dump_one_gcov): Add RUN_COUNTED argument. (gcov_do_dump): New function, broken out of ... (gcov_exit): ... here. Call it. gcc/ * gcov-io.c (gcov_var): Make hidden. * gcov-tool.c (gcov_list, gcov_exit): Remove declarations. (gcov_do_dump): Declare. (gcov_output_files): Call gcov_do_dump, not gcov_exit). From-SVN: r213188
2014-07-28Add missing change from moxiebox patch posted earlier today.Anthony Green1-2/+2
From-SVN: r213108
2014-07-27Add moxiebox target.Anthony Green1-0/+4
From-SVN: r213098
2014-07-27libgcov-driver.c (struct gcov_filename_aux): Rename ...Nathan Sidwell4-120/+112
* libgcov-driver.c (struct gcov_filename_aux): Rename ... (struct gcov_filename): ... here. Include buffer and max length fields. (gcov_max_filename): Remove. (gi_filename): Remove. (gcov_exit_compute_summary): Compute max filename here. (gcov_exit_merge_gcda): Add filename parm, adjust. (gcov_exit_merge_summary): Likewise. (gcov_exit_dump_gcov): Adjust for struct gcov_filename changes. (gcov_exit): Likewise. (__gcov_init): Don't calculate max length here. * libgcov_util.c (max_filename_len): Remove. (read_gcda_file): Don't calculate max length here. (gcov_read_profile_dir): Don't propagate here. * libgcov-driver-system.c (alloc_filename_struct): Adjust for struct gcov_filename changes. (gcov_exit_open_gcda_file): Likewise. From-SVN: r213092
2014-07-25libgcov-driver.c (set_gcov_dump_complete, [...]): Remove global functions ↵Nathan Sidwell3-38/+18
polluting user's namespace. * libgcov-driver.c (set_gcov_dump_complete, reset_gcov_dump_complete, get_gcov_dump_complete): Remove global functions polluting user's namespace. (gcov_exit): Set variable directly. (gcov_clear): Reset variable directly. * libgcov-interface.c (get_gcov_dymp_complete, reset_gov_dump_complete): Remove declarations. (__gcov_reset, __gcov_dump): Don't call them. From-SVN: r213058
2014-07-24cygming-crtbegin.c (deregister_frame_fn): Newly public.DJ Delorie2-9/+14
* config/i386/cygming-crtbegin.c (deregister_frame_fn): Newly public. (__gcc_deregister_frame): Move logic to detect deregister function to... (__gcc_register_frame): here, so it's consistent with the register logic. From-SVN: r213009
2014-07-23Remove redundant testsMarius Cornea2-4/+7
PR libgcc/61685 * bid128_fma.c (rounding_correction): Remove redundant tests. From-SVN: r212942
2014-07-23gcov-tool.c (gcov_list): Declare here.Nathan Sidwell3-13/+12
gcc/ * gcov-tool.c (gcov_list): Declare here. (set_gcov_list): Remove. (gcov_output_files): Set gcov_list directly. libgcc/ * libgcov-driver.c (set_gcov_list): Remove. (gcov_list): Make non-static in GCOV_TOOL. * libgcov.h (GCOV_TOOL_LINKAGE): Remove unused #define. From-SVN: r212931
2014-07-17linux-atomic.c (__sync_lock_release_4): New.John David Anglin2-2/+29
* config/pa/linux-atomic.c (__sync_lock_release_4): New. (SYNC_LOCK_RELEASE): Update to use __kernel_cmpxchg for release. Don't use SYNC_LOCK_RELEASE for int type. From-SVN: r212767
2014-07-14libgcov.h (struct gcov_fn_info): Make ctrs size 1.Richard Biener2-1/+5
2014-07-14 Richard Biener <rguenther@suse.de> * libgcov.h (struct gcov_fn_info): Make ctrs size 1. From-SVN: r212520
2014-07-11libgcov-util.c (gcov_max_filename): Fix declartion.Rong Xu2-1/+5
2014-07-11 Rong Xu <xur@google.com> * libgcov-util.c (gcov_max_filename): Fix declartion. From-SVN: r212463
2014-07-11Add gcov-tool: an offline gcda profile processing tool Support.Rong Xu5-12/+1019
2014-07-10 Rong Xu <xur@google.com> Add gcov-tool: an offline gcda profile processing tool Support. * gcc/gcov-io.c (gcov_position): Make avaialble to gcov-tool. (gcov_is_error): Ditto. (gcov_read_string): Ditto. (gcov_read_sync): Ditto. * gcc/gcov-io.h: Move counter defines to gcov-counter.def. * gcc/gcov-dump.c (tag_counters): Use gcov-counter.def. * gcc/coverage.c: Ditto. * gcc/gcov-tool.c: Offline gcda profile processing tool. (unlink_gcda_file): Remove one gcda file. (unlink_profile_dir): Remove gcda files from the profile path. (gcov_output_files): Output gcda files to an output dir. (profile_merge): Merge two profiles in directory. (print_merge_usage_message): Print merge usage. (merge_usage): Print merge usage and exit. (do_merge): Driver for profile merge sub-command. (profile_rewrite): Rewrite profile. (print_rewrite_usage_message): Print rewrite usage. (rewrite_usage): Print rewrite usage and exit. (do_rewrite): Driver for profile rewrite sub-command. (print_usage): Print gcov-info usage and exit. (print_version): Print gcov-info version. (process_args): Process arguments. (main): Main routine for gcov-tool. * gcc/Makefile.in: Build and install gcov-tool. * gcc/gcov-counter.def: New file split from gcov-io.h. * libgcc/libgcov-driver.c (gcov_max_filename): Make available to gcov-tool. * libgcc/libgcov-merge.c (__gcov_merge_add): Replace gcov_read_counter() with a Macro. (__gcov_merge_ior): Ditto. (__gcov_merge_time_profile): Ditto. (__gcov_merge_single): Ditto. (__gcov_merge_delta): Ditto. * libgcc/libgcov-util.c (void gcov_set_verbose): Set the verbose flag in the utility functions. (set_fn_ctrs): Utility function for reading gcda files to in-memory gcov_list object link lists. (tag_function): Ditto. (tag_blocks): Ditto. (tag_arcs): Ditto. (tag_lines): Ditto. (tag_counters): Ditto. (tag_summary): Ditto. (read_gcda_finalize): Ditto. (read_gcda_file): Ditto. (ftw_read_file): Ditto. (read_profile_dir_init): Ditto. (gcov_read_profile_dir): Ditto. (gcov_read_counter_mem): Ditto. (gcov_get_merge_weight): Ditto. (merge_wrapper): A wrapper function that calls merging handler. (gcov_merge): Merge two gcov_info objects with weights. (find_match_gcov_info): Find the matched gcov_info in the list. (gcov_profile_merge): Merge two gcov_info object lists. (__gcov_add_counter_op): Process edge profile counter values. (__gcov_ior_counter_op): Process IOR profile counter values. (__gcov_delta_counter_op): Process delta profile counter values. (__gcov_single_counter_op): Process single profile counter values. (fp_scale): Callback function for float-point scaling. (int_scale): Callback function for integer fraction scaling. (gcov_profile_scale): Scaling profile counters. (gcov_profile_normalize): Normalize profile counters. * libgcc/libgcov.h: Add headers and functions for gcov-tool use. (gcov_get_counter): New. (gcov_get_counter_target): Ditto. (struct gcov_info): Make the functions field mutable in gcov-tool compilation. * gcc/doc/gcc.texi: Include gcov-tool.texi. * gcc/doc/gcov-tool.texi: Document for gcov-tool. From-SVN: r212448
2014-06-23re PR libgcc/61585 (Subscript-out-of-range in unwind-seh.c?)Kai Tietz2-2/+9
PR libgcc/61585 * unwind-seh.c (_Unwind_GetGR): Check for proper index range. (_Unwind_SetGR): Likewise. From-SVN: r211900
2014-06-18bpabi.c (__gnu_uldivmod_helper): Remove.Charles Baylis1-14/+0
2014-06-18 Charles Baylis <charles.baylis@linaro.org> * config/arm/bpabi.c (__gnu_uldivmod_helper): Remove. From-SVN: r211797
2014-06-18bpabi-v6m.S (__aeabi_uldivmod): Perform division using __udivmoddi4.Charles Baylis1-1/+1
2014-06-18 Charles Baylis <charles.baylis@linaro.org> * config/arm/bpabi-v6m.S (__aeabi_uldivmod): Perform division using __udivmoddi4. From-SVN: r211796
2014-06-18bpabi.S (__aeabi_ldivmod, [...]): Use .cfi_* directives for DWARF annotations.Charles Baylis1-5/+16
2014-06-18 Charles Baylis <charles.baylis@linaro.org> * config/arm/bpabi.S (__aeabi_ldivmod, __aeabi_uldivmod, push_for_divide, pop_for_divide): Use .cfi_* directives for DWARF annotations. Fix DWARF information. From-SVN: r211795
2014-06-18bpabi.S (__aeabi_ldivmod): Perform division using __udivmoddi4, and fixups ↵Charles Baylis1-1/+40
for negative operands. 2014-06-18 Charles Baylis <charles.baylis@linaro.org> * config/arm/bpabi.S (__aeabi_ldivmod): Perform division using __udivmoddi4, and fixups for negative operands. From-SVN: r211794
2014-06-18bpabi.S (__aeabi_ldivmod): Optimise stack manipulation.Charles Baylis1-11/+3
2014-06-18 Charles Baylis <charles.baylis@linaro.org> * config/arm/bpabi.S (__aeabi_ldivmod): Optimise stack manipulation. From-SVN: r211793
2014-06-18bpabi.S (__aeabi_uldivmod): Perform division using call to __udivmoddi4.Charles Baylis1-1/+1
2014-06-18 Charles Baylis <charles.baylis@linaro.org> * config/arm/bpabi.S (__aeabi_uldivmod): Perform division using call to __udivmoddi4. From-SVN: r211792
2014-06-18bpabi.S (__aeabi_uldivmod): Optimise stack pointer manipulation.Charles Baylis1-11/+43
2014-06-18 Charles Baylis <charles.baylis@linaro.org> * config/arm/bpabi.S (__aeabi_uldivmod): Optimise stack pointer manipulation. From-SVN: r211791
2014-06-18bpabi.S (__aeabi_uldivmod, [...]): Add comment describing register usage on ↵Charles Baylis1-0/+16
function entry and exit. 2014-06-18 Charles Baylis <charles.baylis@linaro.org> * config/arm/bpabi.S (__aeabi_uldivmod, __aeabi_ldivmod): Add comment describing register usage on function entry and exit. From-SVN: r211790
2014-06-18bpabi.S (__aeabi_uldivmod): Fix whitespace.Charles Baylis1-18/+18
2014-06-18 Charles Baylis <charles.baylis@linaro.org> * config/arm/bpabi.S (__aeabi_uldivmod): Fix whitespace. (__aeabi_ldivmod): Fix whitespace. From-SVN: r211789
2014-06-10bid128_div.c (BID128_FUNCTION_ARG2): Remove unused variable 'Ql'.Uros Bizjak3-25/+36
* bid128_div.c (BID128_FUNCTION_ARG2): Remove unused variable 'Ql'. Call __mul_128x128_high instead of __mul_128x128_full. (TYPE0_FUNCTION_ARGTYPE1_ARGTYPE2): Ditto. (BID128_FUNCTION_ARGTYPE1_ARG128): Ditto. (BID128_FUNCTION_ARG128_ARGTYPE2): Ditto. * bid64_div.c (TYPE0_FUNCTION_ARGTYPE1_ARG128): Ditto. (TYPE0_FUNCTION_ARG128_ARGTYPE2): Ditto. (TYPE0_FUNCTION_ARG128_ARG128): Ditto. From-SVN: r211424
2014-05-22t-msp430 (HOST_LIBGCC2_CFLAGS): Add -mhwmult=none.Nick Clifton2-1/+6
* config/msp430/t-msp430 (HOST_LIBGCC2_CFLAGS): Add -mhwmult=none. From-SVN: r210811
2014-05-22gcov-io.c (gcov_position): Use gcov_nonruntime_assert.Teresa Johnson2-3/+9
2014-05-22 Teresa Johnson <tejohnson@google.com> * gcov-io.c (gcov_position): Use gcov_nonruntime_assert. (gcov_is_error): Remove gcc_assert from IN_LIBGCOV code. (gcov_rewrite): Use gcov_nonruntime_assert. (gcov_open): Ditto. (gcov_write_words): Ditto. (gcov_write_length): Ditto. (gcov_read_words): Use gcov_nonruntime_assert, and remove gcc_assert from IN_LIBGCOV code. (gcov_read_summary): Use gcov_error to flag profile corruption. (gcov_sync): Use gcov_nonruntime_assert. (gcov_seek): Remove gcc_assert from IN_LIBGCOV code. (gcov_histo_index): Use gcov_nonruntime_assert. (static void gcov_histogram_merge): Ditto. (compute_working_sets): Ditto. * gcov-io.h (gcov_nonruntime_assert): Define. (gcov_error): Define for !IN_LIBGCOV * libgcov-driver.c (gcov_error): Move declaration before gcov-io.c include. From-SVN: r210805
2014-05-21config.gcc (*-*-dragonfly*): New target.John Marino6-17/+213
2014-05-21 John Marino <gnugcc@marino.st> gcc: * config.gcc (*-*-dragonfly*): New target. * configure.ac: Detect dl_iterate_phdr (*freebsd*, *dragonfly*). * configure: Regenerate. * config/dragonfly-stdint.h: New. * config/dragonfly.h: New. * config/dragonfly.opt: New. * config/i386/dragonfly.h: New. * ginclude/stddef.h: Detect _PTRDIFF_T_DECLARED for DragonFly. include: * liberty.h: Use basename function on DragonFly. libcilkrts: * runtime/os-unix.c (__DragonFly__): New target. libgcc: * config.host (*-*-dragonfly*): New target. * crtstuff.c: Make dl_iterate_support generic on *bsd. * enable-execute-stack-mprotect.c: Always mprotect on FreeBSD. * unwind-dw2-fde-dip.c: Add dl_iterate_phr support for DragonFly. * config/i386/dragonfly-unwind.h: New. libitm: * configure.tgt (*-*-dragonfly*): New target. libstdc++-v3: * acinclude.m4 (*-*-dragonfly*): New target. * configure: Regenerate. * configure.host (*-*-dragonfly*): New target. * config/locale/dragonfly/c_locale.cc: New. * config/locale/dragonfly/ctype_members.cc: New. * config/os/bsd/dragonfly/ctype_base.h: New. * config/os/bsd/dragonfly/ctype_configure_char.cc: New. * config/os/bsd/dragonfly/ctype_inline.h: New. * config/os/bsd/dragonfly/os_defines.h: New. From-SVN: r210694
2014-05-21re PR libgcc/60166 (ARM default NAN encoding violates EABI)Maciej W. Rozycki2-4/+10
PR libgcc/60166 * config/arm/sfp-machine.h (_FP_NANFRAC_H, _FP_NANFRAC_S) (_FP_NANFRAC_D, _FP_NANSIGN_Q): Set the quiet bit. From-SVN: r210668
2014-05-13Enable Java on Cygwin-64Bernd Edlinger2-24/+23
Currently it is not possible to build GCC's libjava support on Cygwin-64. This patch fixes the current build-problems on Cygwin-64 and the most fundamental bugs on that platform. Note you must still add --enable-threads=posix to successfully build the java language support. boehm-gc/ChangeLog: 2014-05-13 Bernd Edlinger <bernd.edlinger@hotmail.de> Fix current cygwin-64 build problems. * include/gc_config_macros.h (GC_PTHREADS): Use __CYGWIN__ instead of __CYGWIN32__ here. * win32_threads.c (GC_push_all_stacks): Push all X86_64 registers. (GC_get_thread_stack_base): Get the stack base for X86_64. libffi/ChangeLog: 2014-05-13 Bernd Edlinger <bernd.edlinger@hotmail.de> Fix current cygwin-64 build problems. * src/java_raw_api.c: Remove if !defined(FFI_NO_RAW_API). * src/x86/ffi.c: Add if defined(__CYGWIN__). * src/x86/win64.S (ffi_closure_win64, ffi_call_win64): Added handling for FFI_TYPE_UINT64, FFI_TYPE_POINTER and FFI_TYPE_INT. Added SEH information. Fixed formatting. libgcc/ChangeLog: 2014-05-13 Bernd Edlinger <bernd.edlinger@hotmail.de> * unwind-seh.c (_Unwind_Backtrace): Uncommented, finished implementation. libjava/ChangeLog: 2014-05-13 Bernd Edlinger <bernd.edlinger@hotmail.de> Fix current cygwin-64 build problems. * configure.host: Added handling for x86_64-*-cygwin/mingw. * boehm.cc (_Jv_GCAttachThread, _Jv_GCDetachThread): Don't compile if GC_WIN32_THREADS is defined. * java/lang/natClass.cc (_Jv_InterfaceAssignableFrom): Rename interface to source_interface. libjava/classpath/ChangeLog: 2014-05-13 Bernd Edlinger <bernd.edlinger@hotmail.de> Fix current cygwin-64 build problems. * native/fdlibm/mprec.c (_REENT_CHECK_MP, _REENT_MP_FREELIST, _REENT_MP_P5S, __ULong, __Long): Undefine previous definitions. From-SVN: r210386
2014-05-12arm.h (License): Add GCC Runtime Library Exception.Georg-Johann Lay2-0/+8
gcc/ * config/arm/arm.h (License): Add GCC Runtime Library Exception. * config/arm/aout.h (License): Same. * config/arm/bpabi.h (License): Same. * config/arm/elf.h (License): Same. * config/arm/linux-elf.h (License): Same. * config/arm/linux-gas.h (License): Same. * config/arm/netbsd-elf.h (License): Same. * config/arm/uclinux-eabi.h (License): Same. * config/arm/uclinux-elf.h (License): Same. * config/arm/vxworks.h (License): Same. libgcc/ * config/arm/bpabi-lib.h (License): Add GCC Runtime Library Exception. From-SVN: r210322
2014-05-08Don't build libgcc-unwind.map with --disable-shared (PR libgcc/61097)Rainer Orth2-0/+10
PR libgcc/61097 * config/t-slibgcc-sld: Only build and install libgcc-unwind.map if --enable-shared. From-SVN: r210210
2014-04-30Work around for current cygwin32 build problems.Bernd Edlinger2-0/+15
2014-04-30 Bernd Edlinger <bernd.edlinger@hotmail.de> Work around for current cygwin32 build problems. * config/i386/cygming-crtbegin.c (__register_frame_info, __deregister_frame_info, _Jv_RegisterClasses): Compile weak default functions only for 64-bit systems. From-SVN: r209942