From 8536ebb582cb5f4a7d78342ac9e8bd0f7f065503 Mon Sep 17 00:00:00 2001 From: Eric Christopher Date: Sat, 26 May 2007 01:58:51 +0000 Subject: [PATCH] config.gcc: Add i386/t-fprules-softfp64 and soft-fp/t-softfp to x86-darwin configurations. 2007-05-25 Eric Christopher * config.gcc: Add i386/t-fprules-softfp64 and soft-fp/t-softfp to x86-darwin configurations. * config/i386/t-darwin: Add softfp support. * config/i386/t-darwin64: Ditto. * config/i386/sfp-machine.h: If mach then don't use aliasing, emit a stub to call. From-SVN: r125085 --- gcc/ChangeLog | 41 +++++++++++++++++++++-------------- gcc/config.gcc | 3 ++- gcc/config/i386/sfp-machine.h | 7 ++++++ gcc/config/i386/t-darwin | 3 +++ gcc/config/i386/t-darwin64 | 3 +++ 5 files changed, 40 insertions(+), 17 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 3b03140a448..ad0d988ec63 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,12 @@ +2007-05-25 Eric Christopher + + * config.gcc: Add i386/t-fprules-softfp64 and soft-fp/t-softfp + to x86-darwin configurations. + * config/i386/t-darwin: Add softfp support. + * config/i386/t-darwin64: Ditto. + * config/i386/sfp-machine.h: If mach then don't use + aliasing, emit a stub to call. + 2007-05-25 Kazu Hirata * cfglayout.c, cgraphunit.c, config/avr/avr.c, fold-const.c, @@ -283,7 +292,7 @@ support for complex modes. Fill in DECL_RESULT for stubdecl. (mips_init_libfuncs): Remove redundant TARGET_MIPS16 check. - * config/mips/mips16.S + * config/mips/mips16.S (RET, ARG1, ARG2): New. (MERGE_GPRf, MERGE_GPRt): New. (DELAYt, DELAYf): New. @@ -352,7 +361,7 @@ (__mips16_call_stub_dc_6): New. (__mips16_call_stub_dc_9): New. (__mips16_call_stub_dc_10): New. - + * config/mips/t-elf (LIB1ASMFUNCS): Add MIPS16 floating-point stubs. * config/mips/t-isa3264 (LIB1ASMFUNCS): Likewise. * config/mips/t-r2900 (LIB1ASMFUNCS): Likewise. @@ -373,7 +382,7 @@ PR target/30474 * config/score/score.c (score_print_operand): Make sure that only lower bits are used. - + 2007-05-22 Ian Lance Taylor * tree-vrp.c (avoid_overflow_infinity): New static function, @@ -898,7 +907,7 @@ * stmt.c (expand_case): Do not call squeeze_notes. 2007-05-20 Manuel Lopez-Ibanez - + PR middle-end/7651 PR c++/11856 PR c/12963 @@ -941,7 +950,7 @@ * doc/invoke.texi (Wreturn-type): Complete description. (Wextra): Delete item about return-type warning. * c-decl.c: Delete redundant Wextra warning. - + 2007-05-20 Uros Bizjak PR target/31585 @@ -990,26 +999,26 @@ 2007-05-19 Andy Hutchinson Anatoly Sokolov - * config/avr/avr-protos.h (expand_prologue, expand_epilogue, + * config/avr/avr-protos.h (expand_prologue, expand_epilogue, avr_epilogue_uses) : Add declaration. * config/avr/predicates.md (avr_sp_immediate_operand): New predicate. * config/avr/constraints.md (R): New constraint. - config/avr/avr.md (SREG_ADDR, UNSPEC_SEI, UNSPEC_CLI, + config/avr/avr.md (SREG_ADDR, UNSPEC_SEI, UNSPEC_CLI, UNSPECV_PROLOGUE_SAVES, UNSPECV_EPILOGUE_RESTORES): New constants. (*pop1, *pop2, *pop3, *pop4, *pop5): Combine into ... (*addhi3_sp_R_pc2, *addhi3_sp_R_pc3): ... these patterns. - (*movhi_sp, popqi, pophi, enable_interrupt, disable_interrupt, + (*movhi_sp, popqi, pophi, enable_interrupt, disable_interrupt, call_prologue_saves, epilogue_restores, return_from_epilogue, - return_from_main_epilogue, return_from_interrupt_epilogue, + return_from_main_epilogue, return_from_interrupt_epilogue, return_from_naked_epilogue, prologue, epilogue): New patterns. (jump): Handle symbol reference. - * config/avr/avr.c (out_adj_frame_ptr, out_set_stack_ptr, - avr_output_function_prologue, avr_output_function_epilogue): Remove + * config/avr/avr.c (out_adj_frame_ptr, out_set_stack_ptr, + avr_output_function_prologue, avr_output_function_epilogue): Remove functions. - (avr_init_machine_status, expand_prologue, expand_epilogue, - avr_asm_function_end_prologue, avr_epilogue_uses, + (avr_init_machine_status, expand_prologue, expand_epilogue, + avr_asm_function_end_prologue, avr_epilogue_uses, avr_asm_function_begin_epilogue): New functions. - (prologue_size, epilogue_size, jump_tables_size): Remove global + (prologue_size, epilogue_size, jump_tables_size): Remove global variables. (TARGET_ASM_FUNCTION_PROLOGUE, TARGET_ASM_FUNCTION_EPILOGUE): Remove. (TARGET_ASM_FUNCTION_END_PROLOGUE): Define. @@ -1254,7 +1263,7 @@ and soft-fp/t-softfp to tmake_file. (i[34567]86-*-linux*, i[34567]86-*-kfreebsd*-gnu, i[34567]86-*-knetbsd*-gnu): Ditto for --enable-targets=all. - + * config/i386/t-linux64 (softfp_wrap_start): New. (softfp_wrap_end): New. * config/i386/i386.c (ix86_scalar_mode_supported): TFmode is @@ -1262,7 +1271,7 @@ 2007-05-16 Rafael Avila de Espindola - * c-common.c (c_common_signed_or_unsigned_type): Emulate + * c-common.c (c_common_signed_or_unsigned_type): Emulate c_common_unsigned_type behavior. 2007-05-16 Paolo Bonzini diff --git a/gcc/config.gcc b/gcc/config.gcc index fb346a0252a..977aafea3f9 100644 --- a/gcc/config.gcc +++ b/gcc/config.gcc @@ -1052,11 +1052,12 @@ i[34567]86-*-darwin*) # support. with_arch=${with_arch:-nocona} with_cpu=${with_cpu:-generic} + tmake_file="${tmake_file} i386/t-fprules-softfp64 soft-fp/t-softfp" ;; x86_64-*-darwin*) with_arch=${with_arch:-nocona} with_cpu=${with_cpu:-generic} - tmake_file="t-darwin ${cpu_type}/t-darwin64 t-slibgcc-darwin" + tmake_file="t-darwin ${cpu_type}/t-darwin64 t-slibgcc-darwin i386/t-fprules-softfp64 soft-fp/t-softfp" tm_file="${tm_file} ${cpu_type}/darwin64.h" ;; i[34567]86-*-elf*) diff --git a/gcc/config/i386/sfp-machine.h b/gcc/config/i386/sfp-machine.h index 4a4e354303d..e03ae5f9cb8 100644 --- a/gcc/config/i386/sfp-machine.h +++ b/gcc/config/i386/sfp-machine.h @@ -127,6 +127,13 @@ struct fenv #define __BYTE_ORDER __LITTLE_ENDIAN /* Define ALIASNAME as a strong alias for NAME. */ +#if defined __MACH__ +/* Mach-O doesn't support aliasing. If these functions ever return + anything but int we need to revisit this... */ +#define strong_alias(name, aliasname) \ + int aliasname (TFtype a, TFtype b) { return name(a, b); } +#else # define strong_alias(name, aliasname) _strong_alias(name, aliasname) # define _strong_alias(name, aliasname) \ extern __typeof (name) aliasname __attribute__ ((alias (#name))); +#endif diff --git a/gcc/config/i386/t-darwin b/gcc/config/i386/t-darwin index fb5bbe78c04..6feb48a20a4 100644 --- a/gcc/config/i386/t-darwin +++ b/gcc/config/i386/t-darwin @@ -2,3 +2,6 @@ MULTILIB_OPTIONS = m64 MULTILIB_DIRNAMES = x86_64 LIB2_SIDITI_CONV_FUNCS=yes LIB2FUNCS_EXTRA = $(srcdir)/config/darwin-64.c + +softfp_wrap_start := '\#ifdef __x86_64__' +softfp_wrap_end := '\#endif' diff --git a/gcc/config/i386/t-darwin64 b/gcc/config/i386/t-darwin64 index 5143e3819dc..2e55cb786d7 100644 --- a/gcc/config/i386/t-darwin64 +++ b/gcc/config/i386/t-darwin64 @@ -1,2 +1,5 @@ LIB2_SIDITI_CONV_FUNCS=yes LIB2FUNCS_EXTRA = $(srcdir)/config/darwin-64.c + +softfp_wrap_start := '\#ifdef __x86_64__' +softfp_wrap_end := '\#endif'