Author: ed Date: Thu Jun 2 20:02:42 2011 New Revision: 222625 URL: http://svn.freebsd.org/changeset/base/222625
Log: Import compiler-rt r132478. Added: vendor/compiler-rt/dist/lib/abi.h vendor/compiler-rt/dist/lib/arm/divmodsi4.S vendor/compiler-rt/dist/lib/arm/divsi3.S vendor/compiler-rt/dist/lib/arm/udivmodsi4.S vendor/compiler-rt/dist/lib/arm/udivsi3.S vendor/compiler-rt/dist/lib/arm/umodsi3.S vendor/compiler-rt/dist/lib/divmoddi4.c vendor/compiler-rt/dist/lib/subdf3.c vendor/compiler-rt/dist/lib/subsf3.c Modified: vendor/compiler-rt/dist/lib/absvdi2.c vendor/compiler-rt/dist/lib/absvsi2.c vendor/compiler-rt/dist/lib/adddf3.c vendor/compiler-rt/dist/lib/addsf3.c vendor/compiler-rt/dist/lib/addvdi3.c vendor/compiler-rt/dist/lib/addvsi3.c vendor/compiler-rt/dist/lib/apple_versioning.c vendor/compiler-rt/dist/lib/arm/modsi3.S vendor/compiler-rt/dist/lib/ashldi3.c vendor/compiler-rt/dist/lib/ashrdi3.c vendor/compiler-rt/dist/lib/assembly.h vendor/compiler-rt/dist/lib/clzdi2.c vendor/compiler-rt/dist/lib/clzsi2.c vendor/compiler-rt/dist/lib/cmpdi2.c vendor/compiler-rt/dist/lib/ctzdi2.c vendor/compiler-rt/dist/lib/ctzsi2.c vendor/compiler-rt/dist/lib/divdf3.c vendor/compiler-rt/dist/lib/divdi3.c vendor/compiler-rt/dist/lib/divmodsi4.c vendor/compiler-rt/dist/lib/divsf3.c vendor/compiler-rt/dist/lib/divsi3.c vendor/compiler-rt/dist/lib/extendsfdf2.c vendor/compiler-rt/dist/lib/ffsdi2.c vendor/compiler-rt/dist/lib/fixdfdi.c vendor/compiler-rt/dist/lib/fixdfsi.c vendor/compiler-rt/dist/lib/fixsfdi.c vendor/compiler-rt/dist/lib/fixsfsi.c vendor/compiler-rt/dist/lib/fixunsdfdi.c vendor/compiler-rt/dist/lib/fixunsdfsi.c vendor/compiler-rt/dist/lib/fixunssfdi.c vendor/compiler-rt/dist/lib/fixunssfsi.c vendor/compiler-rt/dist/lib/floatdidf.c vendor/compiler-rt/dist/lib/floatdisf.c vendor/compiler-rt/dist/lib/floatsidf.c vendor/compiler-rt/dist/lib/floatsisf.c vendor/compiler-rt/dist/lib/floatundidf.c vendor/compiler-rt/dist/lib/floatundisf.c vendor/compiler-rt/dist/lib/floatunsidf.c vendor/compiler-rt/dist/lib/floatunsisf.c vendor/compiler-rt/dist/lib/lshrdi3.c vendor/compiler-rt/dist/lib/moddi3.c vendor/compiler-rt/dist/lib/modsi3.c vendor/compiler-rt/dist/lib/muldf3.c vendor/compiler-rt/dist/lib/muldi3.c vendor/compiler-rt/dist/lib/mulsf3.c vendor/compiler-rt/dist/lib/negdf2.c vendor/compiler-rt/dist/lib/negsf2.c vendor/compiler-rt/dist/lib/negvdi2.c vendor/compiler-rt/dist/lib/negvsi2.c vendor/compiler-rt/dist/lib/paritydi2.c vendor/compiler-rt/dist/lib/paritysi2.c vendor/compiler-rt/dist/lib/popcountdi2.c vendor/compiler-rt/dist/lib/popcountsi2.c vendor/compiler-rt/dist/lib/powidf2.c vendor/compiler-rt/dist/lib/powisf2.c vendor/compiler-rt/dist/lib/subvdi3.c vendor/compiler-rt/dist/lib/subvsi3.c vendor/compiler-rt/dist/lib/truncdfsf2.c vendor/compiler-rt/dist/lib/ucmpdi2.c vendor/compiler-rt/dist/lib/udivdi3.c vendor/compiler-rt/dist/lib/udivmoddi4.c vendor/compiler-rt/dist/lib/udivmodsi4.c vendor/compiler-rt/dist/lib/udivsi3.c vendor/compiler-rt/dist/lib/umoddi3.c vendor/compiler-rt/dist/lib/umodsi3.c vendor/compiler-rt/dist/make/AppleBI.mk vendor/compiler-rt/dist/make/platform/clang_darwin.mk vendor/compiler-rt/dist/make/platform/darwin_bni.mk vendor/compiler-rt/dist/test/Unit/absvti2_test.c vendor/compiler-rt/dist/test/Unit/adddf3vfp_test.c vendor/compiler-rt/dist/test/Unit/addsf3vfp_test.c vendor/compiler-rt/dist/test/Unit/addvti3_test.c vendor/compiler-rt/dist/test/Unit/ashlti3_test.c vendor/compiler-rt/dist/test/Unit/ashrti3_test.c vendor/compiler-rt/dist/test/Unit/bswapdi2_test.c vendor/compiler-rt/dist/test/Unit/bswapsi2_test.c vendor/compiler-rt/dist/test/Unit/clzti2_test.c vendor/compiler-rt/dist/test/Unit/cmpti2_test.c vendor/compiler-rt/dist/test/Unit/ctzti2_test.c vendor/compiler-rt/dist/test/Unit/divdf3vfp_test.c vendor/compiler-rt/dist/test/Unit/divsf3vfp_test.c vendor/compiler-rt/dist/test/Unit/divtc3_test.c vendor/compiler-rt/dist/test/Unit/divti3_test.c vendor/compiler-rt/dist/test/Unit/divxc3_test.c vendor/compiler-rt/dist/test/Unit/eqdf2vfp_test.c vendor/compiler-rt/dist/test/Unit/eqsf2vfp_test.c vendor/compiler-rt/dist/test/Unit/extebdsfdf2vfp_test.c vendor/compiler-rt/dist/test/Unit/ffsti2_test.c vendor/compiler-rt/dist/test/Unit/fixdfsivfp_test.c vendor/compiler-rt/dist/test/Unit/fixdfti_test.c vendor/compiler-rt/dist/test/Unit/fixsfsivfp_test.c vendor/compiler-rt/dist/test/Unit/fixsfti_test.c vendor/compiler-rt/dist/test/Unit/fixunsdfsivfp_test.c vendor/compiler-rt/dist/test/Unit/fixunssfsivfp_test.c vendor/compiler-rt/dist/test/Unit/fixunstfdi_test.c vendor/compiler-rt/dist/test/Unit/fixunsxfdi_test.c vendor/compiler-rt/dist/test/Unit/fixunsxfti_test.c vendor/compiler-rt/dist/test/Unit/fixxfdi_test.c vendor/compiler-rt/dist/test/Unit/fixxfti_test.c vendor/compiler-rt/dist/test/Unit/floatdixf_test.c vendor/compiler-rt/dist/test/Unit/floatsidfvfp_test.c vendor/compiler-rt/dist/test/Unit/floatsisfvfp_test.c vendor/compiler-rt/dist/test/Unit/floattidf_test.c vendor/compiler-rt/dist/test/Unit/floattisf_test.c vendor/compiler-rt/dist/test/Unit/floattixf_test.c vendor/compiler-rt/dist/test/Unit/floatundixf_test.c vendor/compiler-rt/dist/test/Unit/floatunssidfvfp_test.c vendor/compiler-rt/dist/test/Unit/floatunssisfvfp_test.c vendor/compiler-rt/dist/test/Unit/floatuntidf_test.c vendor/compiler-rt/dist/test/Unit/floatuntisf_test.c vendor/compiler-rt/dist/test/Unit/floatuntixf_test.c vendor/compiler-rt/dist/test/Unit/gedf2vfp_test.c vendor/compiler-rt/dist/test/Unit/gesf2vfp_test.c vendor/compiler-rt/dist/test/Unit/gtdf2vfp_test.c vendor/compiler-rt/dist/test/Unit/gtsf2vfp_test.c vendor/compiler-rt/dist/test/Unit/ledf2vfp_test.c vendor/compiler-rt/dist/test/Unit/lesf2vfp_test.c vendor/compiler-rt/dist/test/Unit/lshrti3_test.c vendor/compiler-rt/dist/test/Unit/ltdf2vfp_test.c vendor/compiler-rt/dist/test/Unit/ltsf2vfp_test.c vendor/compiler-rt/dist/test/Unit/modti3_test.c vendor/compiler-rt/dist/test/Unit/muldf3vfp_test.c vendor/compiler-rt/dist/test/Unit/mulsf3vfp_test.c vendor/compiler-rt/dist/test/Unit/multc3_test.c vendor/compiler-rt/dist/test/Unit/multi3_test.c vendor/compiler-rt/dist/test/Unit/mulvti3_test.c vendor/compiler-rt/dist/test/Unit/mulxc3_test.c vendor/compiler-rt/dist/test/Unit/nedf2vfp_test.c vendor/compiler-rt/dist/test/Unit/negdf2vfp_test.c vendor/compiler-rt/dist/test/Unit/negsf2vfp_test.c vendor/compiler-rt/dist/test/Unit/negti2_test.c vendor/compiler-rt/dist/test/Unit/negvti2_test.c vendor/compiler-rt/dist/test/Unit/nesf2vfp_test.c vendor/compiler-rt/dist/test/Unit/parityti2_test.c vendor/compiler-rt/dist/test/Unit/popcountti2_test.c vendor/compiler-rt/dist/test/Unit/powitf2_test.c vendor/compiler-rt/dist/test/Unit/powixf2_test.c vendor/compiler-rt/dist/test/Unit/subdf3vfp_test.c vendor/compiler-rt/dist/test/Unit/subsf3vfp_test.c vendor/compiler-rt/dist/test/Unit/subvti3_test.c vendor/compiler-rt/dist/test/Unit/trampoline_setup_test.c vendor/compiler-rt/dist/test/Unit/truncdfsf2vfp_test.c vendor/compiler-rt/dist/test/Unit/ucmpti2_test.c vendor/compiler-rt/dist/test/Unit/udivmodti4_test.c vendor/compiler-rt/dist/test/Unit/udivti3_test.c vendor/compiler-rt/dist/test/Unit/umodti3_test.c vendor/compiler-rt/dist/test/Unit/unorddf2vfp_test.c vendor/compiler-rt/dist/test/Unit/unordsf2vfp_test.c Added: vendor/compiler-rt/dist/lib/abi.h ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ vendor/compiler-rt/dist/lib/abi.h Thu Jun 2 20:02:42 2011 (r222625) @@ -0,0 +1,23 @@ +/* ===------ abi.h - configuration header for compiler-rt -----------------=== + * + * The LLVM Compiler Infrastructure + * + * This file is dual licensed under the MIT and the University of Illinois Open + * Source Licenses. See LICENSE.TXT for details. + * + * ===----------------------------------------------------------------------=== + * + * This file is a configuration header for compiler-rt. + * This file is not part of the interface of this library. + * + * ===----------------------------------------------------------------------=== + */ + +#if __ARM_EABI__ +# define ARM_EABI_FNALIAS(aeabi_name, name) \ + void __aeabi_##aeabi_name() __attribute__((alias("__" #name))); +# define COMPILER_RT_ABI __attribute__((pcs("aapcs"))) +#else +# define ARM_EABI_FNALIAS(aeabi_name, name) +# define COMPILER_RT_ABI +#endif Modified: vendor/compiler-rt/dist/lib/absvdi2.c ============================================================================== --- vendor/compiler-rt/dist/lib/absvdi2.c Thu Jun 2 19:49:47 2011 (r222624) +++ vendor/compiler-rt/dist/lib/absvdi2.c Thu Jun 2 20:02:42 2011 (r222625) @@ -11,6 +11,7 @@ * *===----------------------------------------------------------------------=== */ +#include "abi.h" #include "int_lib.h" #include <stdlib.h> @@ -19,7 +20,7 @@ /* Effects: aborts if abs(x) < 0 */ -di_int +COMPILER_RT_ABI di_int __absvdi2(di_int a) { const int N = (int)(sizeof(di_int) * CHAR_BIT); Modified: vendor/compiler-rt/dist/lib/absvsi2.c ============================================================================== --- vendor/compiler-rt/dist/lib/absvsi2.c Thu Jun 2 19:49:47 2011 (r222624) +++ vendor/compiler-rt/dist/lib/absvsi2.c Thu Jun 2 20:02:42 2011 (r222625) @@ -10,7 +10,8 @@ * This file implements __absvsi2 for the compiler_rt library. * * ===----------------------------------------------------------------------=== - */ + */ +#include "abi.h" #include "int_lib.h" #include <stdlib.h> @@ -19,7 +20,7 @@ /* Effects: aborts if abs(x) < 0 */ -si_int +COMPILER_RT_ABI si_int __absvsi2(si_int a) { const int N = (int)(sizeof(si_int) * CHAR_BIT); Modified: vendor/compiler-rt/dist/lib/adddf3.c ============================================================================== --- vendor/compiler-rt/dist/lib/adddf3.c Thu Jun 2 19:49:47 2011 (r222624) +++ vendor/compiler-rt/dist/lib/adddf3.c Thu Jun 2 20:02:42 2011 (r222625) @@ -1,4 +1,4 @@ -//===-- lib/adddf3.c - Double-precision addition and subtraction --*- C -*-===// +//===-- lib/adddf3.c - Double-precision addition ------------------*- C -*-===// // // The LLVM Compiler Infrastructure // @@ -7,15 +7,20 @@ // //===----------------------------------------------------------------------===// // -// This file implements double-precision soft-float addition and subtraction -// with the IEEE-754 default rounding (to nearest, ties to even). +// This file implements double-precision soft-float addition with the IEEE-754 +// default rounding (to nearest, ties to even). // //===----------------------------------------------------------------------===// +#include "abi.h" + #define DOUBLE_PRECISION #include "fp_lib.h" -fp_t __adddf3(fp_t a, fp_t b) { +ARM_EABI_FNALIAS(dadd, adddf3); + +COMPILER_RT_ABI fp_t +__adddf3(fp_t a, fp_t b) { rep_t aRep = toRep(a); rep_t bRep = toRep(b); @@ -147,8 +152,3 @@ fp_t __adddf3(fp_t a, fp_t b) { if (roundGuardSticky == 0x4) result += result & 1; return fromRep(result); } - -// Subtraction; flip the sign bit of b and add. -fp_t __subdf3(fp_t a, fp_t b) { - return __adddf3(a, fromRep(toRep(b) ^ signBit)); -} Modified: vendor/compiler-rt/dist/lib/addsf3.c ============================================================================== --- vendor/compiler-rt/dist/lib/addsf3.c Thu Jun 2 19:49:47 2011 (r222624) +++ vendor/compiler-rt/dist/lib/addsf3.c Thu Jun 2 20:02:42 2011 (r222625) @@ -1,4 +1,4 @@ -//===-- lib/addsf3.c - Single-precision addition and subtraction --*- C -*-===// +//===-- lib/addsf3.c - Single-precision addition ------------------*- C -*-===// // // The LLVM Compiler Infrastructure // @@ -7,14 +7,18 @@ // //===----------------------------------------------------------------------===// // -// This file implements single-precision soft-float addition and subtraction -// with the IEEE-754 default rounding (to nearest, ties to even). +// This file implements single-precision soft-float addition with the IEEE-754 +// default rounding (to nearest, ties to even). // //===----------------------------------------------------------------------===// +#include "abi.h" + #define SINGLE_PRECISION #include "fp_lib.h" +ARM_EABI_FNALIAS(fadd, addsf3); + fp_t __addsf3(fp_t a, fp_t b) { rep_t aRep = toRep(a); @@ -147,18 +151,3 @@ fp_t __addsf3(fp_t a, fp_t b) { if (roundGuardSticky == 0x4) result += result & 1; return fromRep(result); } - -// Subtraction; flip the sign bit of b and add. -fp_t __subsf3(fp_t a, fp_t b) { - return __addsf3(a, fromRep(toRep(b) ^ signBit)); -} - - - - - - - - - - Modified: vendor/compiler-rt/dist/lib/addvdi3.c ============================================================================== --- vendor/compiler-rt/dist/lib/addvdi3.c Thu Jun 2 19:49:47 2011 (r222624) +++ vendor/compiler-rt/dist/lib/addvdi3.c Thu Jun 2 20:02:42 2011 (r222625) @@ -11,6 +11,7 @@ * * ===----------------------------------------------------------------------=== */ +#include "abi.h" #include "int_lib.h" #include <stdlib.h> @@ -19,7 +20,7 @@ /* Effects: aborts if a + b overflows */ -di_int +COMPILER_RT_ABI di_int __addvdi3(di_int a, di_int b) { di_int s = a + b; Modified: vendor/compiler-rt/dist/lib/addvsi3.c ============================================================================== --- vendor/compiler-rt/dist/lib/addvsi3.c Thu Jun 2 19:49:47 2011 (r222624) +++ vendor/compiler-rt/dist/lib/addvsi3.c Thu Jun 2 20:02:42 2011 (r222625) @@ -11,6 +11,7 @@ * * ===----------------------------------------------------------------------=== */ +#include "abi.h" #include "int_lib.h" #include <stdlib.h> @@ -19,7 +20,7 @@ /* Effects: aborts if a + b overflows */ -si_int +COMPILER_RT_ABI si_int __addvsi3(si_int a, si_int b) { si_int s = a + b; Modified: vendor/compiler-rt/dist/lib/apple_versioning.c ============================================================================== --- vendor/compiler-rt/dist/lib/apple_versioning.c Thu Jun 2 19:49:47 2011 (r222624) +++ vendor/compiler-rt/dist/lib/apple_versioning.c Thu Jun 2 20:02:42 2011 (r222625) @@ -143,6 +143,147 @@ NOT_HERE_BEFORE_10_6(__gcc_qsub) NOT_HERE_BEFORE_10_6(__trampoline_setup) #endif /* __ppc__ */ +#if __arm__ && __DYNAMIC__ + #define NOT_HERE_UNTIL_AFTER_4_3(sym) \ + extern const char sym##_tmp1 __asm("$ld$hide$os3.0$_" #sym ); \ + __attribute__((visibility("default"))) const char sym##_tmp1 = 0; \ + extern const char sym##_tmp2 __asm("$ld$hide$os3.1$_" #sym ); \ + __attribute__((visibility("default"))) const char sym##_tmp2 = 0; \ + extern const char sym##_tmp3 __asm("$ld$hide$os3.2$_" #sym ); \ + __attribute__((visibility("default"))) const char sym##_tmp3 = 0; \ + extern const char sym##_tmp4 __asm("$ld$hide$os4.0$_" #sym ); \ + __attribute__((visibility("default"))) const char sym##_tmp4 = 0; \ + extern const char sym##_tmp5 __asm("$ld$hide$os4.1$_" #sym ); \ + __attribute__((visibility("default"))) const char sym##_tmp5 = 0; \ + extern const char sym##_tmp6 __asm("$ld$hide$os4.2$_" #sym ); \ + __attribute__((visibility("default"))) const char sym##_tmp6 = 0; \ + extern const char sym##_tmp7 __asm("$ld$hide$os4.3$_" #sym ); \ + __attribute__((visibility("default"))) const char sym##_tmp7 = 0; + +NOT_HERE_UNTIL_AFTER_4_3(__absvdi2) +NOT_HERE_UNTIL_AFTER_4_3(__absvsi2) +NOT_HERE_UNTIL_AFTER_4_3(__adddf3) +NOT_HERE_UNTIL_AFTER_4_3(__adddf3vfp) +NOT_HERE_UNTIL_AFTER_4_3(__addsf3) +NOT_HERE_UNTIL_AFTER_4_3(__addsf3vfp) +NOT_HERE_UNTIL_AFTER_4_3(__addvdi3) +NOT_HERE_UNTIL_AFTER_4_3(__addvsi3) +NOT_HERE_UNTIL_AFTER_4_3(__ashldi3) +NOT_HERE_UNTIL_AFTER_4_3(__ashrdi3) +NOT_HERE_UNTIL_AFTER_4_3(__bswapdi2) +NOT_HERE_UNTIL_AFTER_4_3(__bswapsi2) +NOT_HERE_UNTIL_AFTER_4_3(__clzdi2) +NOT_HERE_UNTIL_AFTER_4_3(__clzsi2) +NOT_HERE_UNTIL_AFTER_4_3(__cmpdi2) +NOT_HERE_UNTIL_AFTER_4_3(__ctzdi2) +NOT_HERE_UNTIL_AFTER_4_3(__ctzsi2) +NOT_HERE_UNTIL_AFTER_4_3(__divdc3) +NOT_HERE_UNTIL_AFTER_4_3(__divdf3) +NOT_HERE_UNTIL_AFTER_4_3(__divdf3vfp) +NOT_HERE_UNTIL_AFTER_4_3(__divdi3) +NOT_HERE_UNTIL_AFTER_4_3(__divsc3) +NOT_HERE_UNTIL_AFTER_4_3(__divsf3) +NOT_HERE_UNTIL_AFTER_4_3(__divsf3vfp) +NOT_HERE_UNTIL_AFTER_4_3(__divsi3) +NOT_HERE_UNTIL_AFTER_4_3(__eqdf2) +NOT_HERE_UNTIL_AFTER_4_3(__eqdf2vfp) +NOT_HERE_UNTIL_AFTER_4_3(__eqsf2) +NOT_HERE_UNTIL_AFTER_4_3(__eqsf2vfp) +NOT_HERE_UNTIL_AFTER_4_3(__extendsfdf2) +NOT_HERE_UNTIL_AFTER_4_3(__extendsfdf2vfp) +NOT_HERE_UNTIL_AFTER_4_3(__ffsdi2) +NOT_HERE_UNTIL_AFTER_4_3(__fixdfdi) +NOT_HERE_UNTIL_AFTER_4_3(__fixdfsi) +NOT_HERE_UNTIL_AFTER_4_3(__fixdfsivfp) +NOT_HERE_UNTIL_AFTER_4_3(__fixsfdi) +NOT_HERE_UNTIL_AFTER_4_3(__fixsfsi) +NOT_HERE_UNTIL_AFTER_4_3(__fixsfsivfp) +NOT_HERE_UNTIL_AFTER_4_3(__fixunsdfdi) +NOT_HERE_UNTIL_AFTER_4_3(__fixunsdfsi) +NOT_HERE_UNTIL_AFTER_4_3(__fixunsdfsivfp) +NOT_HERE_UNTIL_AFTER_4_3(__fixunssfdi) +NOT_HERE_UNTIL_AFTER_4_3(__fixunssfsi) +NOT_HERE_UNTIL_AFTER_4_3(__fixunssfsivfp) +NOT_HERE_UNTIL_AFTER_4_3(__floatdidf) +NOT_HERE_UNTIL_AFTER_4_3(__floatdisf) +NOT_HERE_UNTIL_AFTER_4_3(__floatsidf) +NOT_HERE_UNTIL_AFTER_4_3(__floatsidfvfp) +NOT_HERE_UNTIL_AFTER_4_3(__floatsisf) +NOT_HERE_UNTIL_AFTER_4_3(__floatsisfvfp) +NOT_HERE_UNTIL_AFTER_4_3(__floatundidf) +NOT_HERE_UNTIL_AFTER_4_3(__floatundisf) +NOT_HERE_UNTIL_AFTER_4_3(__floatunsidf) +NOT_HERE_UNTIL_AFTER_4_3(__floatunsisf) +NOT_HERE_UNTIL_AFTER_4_3(__floatunssidfvfp) +NOT_HERE_UNTIL_AFTER_4_3(__floatunssisfvfp) +NOT_HERE_UNTIL_AFTER_4_3(__gedf2) +NOT_HERE_UNTIL_AFTER_4_3(__gedf2vfp) +NOT_HERE_UNTIL_AFTER_4_3(__gesf2) +NOT_HERE_UNTIL_AFTER_4_3(__gesf2vfp) +NOT_HERE_UNTIL_AFTER_4_3(__gtdf2) +NOT_HERE_UNTIL_AFTER_4_3(__gtdf2vfp) +NOT_HERE_UNTIL_AFTER_4_3(__gtsf2) +NOT_HERE_UNTIL_AFTER_4_3(__gtsf2vfp) +NOT_HERE_UNTIL_AFTER_4_3(__ledf2) +NOT_HERE_UNTIL_AFTER_4_3(__ledf2vfp) +NOT_HERE_UNTIL_AFTER_4_3(__lesf2) +NOT_HERE_UNTIL_AFTER_4_3(__lesf2vfp) +NOT_HERE_UNTIL_AFTER_4_3(__lshrdi3) +NOT_HERE_UNTIL_AFTER_4_3(__ltdf2) +NOT_HERE_UNTIL_AFTER_4_3(__ltdf2vfp) +NOT_HERE_UNTIL_AFTER_4_3(__ltsf2) +NOT_HERE_UNTIL_AFTER_4_3(__ltsf2vfp) +NOT_HERE_UNTIL_AFTER_4_3(__moddi3) +NOT_HERE_UNTIL_AFTER_4_3(__modsi3) +NOT_HERE_UNTIL_AFTER_4_3(__muldc3) +NOT_HERE_UNTIL_AFTER_4_3(__muldf3) +NOT_HERE_UNTIL_AFTER_4_3(__muldf3vfp) +NOT_HERE_UNTIL_AFTER_4_3(__muldi3) +NOT_HERE_UNTIL_AFTER_4_3(__mulsc3) +NOT_HERE_UNTIL_AFTER_4_3(__mulsf3) +NOT_HERE_UNTIL_AFTER_4_3(__mulsf3vfp) +NOT_HERE_UNTIL_AFTER_4_3(__mulvdi3) +NOT_HERE_UNTIL_AFTER_4_3(__mulvsi3) +NOT_HERE_UNTIL_AFTER_4_3(__nedf2) +NOT_HERE_UNTIL_AFTER_4_3(__nedf2vfp) +NOT_HERE_UNTIL_AFTER_4_3(__negdi2) +NOT_HERE_UNTIL_AFTER_4_3(__negvdi2) +NOT_HERE_UNTIL_AFTER_4_3(__negvsi2) +NOT_HERE_UNTIL_AFTER_4_3(__nesf2) +NOT_HERE_UNTIL_AFTER_4_3(__nesf2vfp) +NOT_HERE_UNTIL_AFTER_4_3(__paritydi2) +NOT_HERE_UNTIL_AFTER_4_3(__paritysi2) +NOT_HERE_UNTIL_AFTER_4_3(__popcountdi2) +NOT_HERE_UNTIL_AFTER_4_3(__popcountsi2) +NOT_HERE_UNTIL_AFTER_4_3(__powidf2) +NOT_HERE_UNTIL_AFTER_4_3(__powisf2) +NOT_HERE_UNTIL_AFTER_4_3(__subdf3) +NOT_HERE_UNTIL_AFTER_4_3(__subdf3vfp) +NOT_HERE_UNTIL_AFTER_4_3(__subsf3) +NOT_HERE_UNTIL_AFTER_4_3(__subsf3vfp) +NOT_HERE_UNTIL_AFTER_4_3(__subvdi3) +NOT_HERE_UNTIL_AFTER_4_3(__subvsi3) +NOT_HERE_UNTIL_AFTER_4_3(__truncdfsf2) +NOT_HERE_UNTIL_AFTER_4_3(__truncdfsf2vfp) +NOT_HERE_UNTIL_AFTER_4_3(__ucmpdi2) +NOT_HERE_UNTIL_AFTER_4_3(__udivdi3) +NOT_HERE_UNTIL_AFTER_4_3(__udivmoddi4) +NOT_HERE_UNTIL_AFTER_4_3(__udivsi3) +NOT_HERE_UNTIL_AFTER_4_3(__umoddi3) +NOT_HERE_UNTIL_AFTER_4_3(__umodsi3) +NOT_HERE_UNTIL_AFTER_4_3(__unorddf2) +NOT_HERE_UNTIL_AFTER_4_3(__unorddf2vfp) +NOT_HERE_UNTIL_AFTER_4_3(__unordsf2) +NOT_HERE_UNTIL_AFTER_4_3(__unordsf2vfp) + +NOT_HERE_UNTIL_AFTER_4_3(__divmodsi4) +NOT_HERE_UNTIL_AFTER_4_3(__udivmodsi4) +#endif // __arm__ && __DYNAMIC__ + + + + + #else /* !__APPLE__ */ extern int avoid_empty_file; Added: vendor/compiler-rt/dist/lib/arm/divmodsi4.S ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ vendor/compiler-rt/dist/lib/arm/divmodsi4.S Thu Jun 2 20:02:42 2011 (r222625) @@ -0,0 +1,47 @@ +/*===-- divmodsi4.S - 32-bit signed integer divide and modulus ------------===// + * + * The LLVM Compiler Infrastructure + * + * This file is dual licensed under the MIT and the University of Illinois Open + * Source Licenses. See LICENSE.TXT for details. + * + *===----------------------------------------------------------------------===// + * + * This file implements the __divmodsi4 (32-bit signed integer divide and + * modulus) function for the ARM architecture. A naive digit-by-digit + * computation is employed for simplicity. + * + *===----------------------------------------------------------------------===*/ + +#include "../assembly.h" + +#define ESTABLISH_FRAME \ + push {r4-r7, lr} ;\ + add r7, sp, #12 +#define CLEAR_FRAME_AND_RETURN \ + pop {r4-r7, pc} + +.syntax unified +.align 3 +DEFINE_COMPILERRT_FUNCTION(__divmodsi4) + ESTABLISH_FRAME +// Set aside the sign of the quotient and modulus, and the address for the +// modulus. + eor r4, r0, r1 + mov r5, r0 + mov r6, r2 +// Take the absolute value of a and b via abs(x) = (x^(x >> 31)) - (x >> 31). + eor ip, r0, r0, asr #31 + eor lr, r1, r1, asr #31 + sub r0, ip, r0, asr #31 + sub r1, lr, r1, asr #31 +// Unsigned divmod: + bl SYMBOL_NAME(__udivmodsi4) +// Apply the sign of quotient and modulus + ldr r1, [r6] + eor r0, r0, r4, asr #31 + eor r1, r1, r5, asr #31 + sub r0, r0, r4, asr #31 + sub r1, r1, r5, asr #31 + str r1, [r6] + CLEAR_FRAME_AND_RETURN Added: vendor/compiler-rt/dist/lib/arm/divsi3.S ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ vendor/compiler-rt/dist/lib/arm/divsi3.S Thu Jun 2 20:02:42 2011 (r222625) @@ -0,0 +1,41 @@ +/*===-- divsi3.S - 32-bit signed integer divide ---------------------------===// + * + * The LLVM Compiler Infrastructure + * + * This file is dual licensed under the MIT and the University of Illinois Open + * Source Licenses. See LICENSE.TXT for details. + * + *===----------------------------------------------------------------------===// + * + * This file implements the __divsi3 (32-bit signed integer divide) function + * for the ARM architecture as a wrapper around the unsigned routine. + * + *===----------------------------------------------------------------------===*/ + +#include "../assembly.h" + +#define ESTABLISH_FRAME \ + push {r4, r7, lr} ;\ + add r7, sp, #4 +#define CLEAR_FRAME_AND_RETURN \ + pop {r4, r7, pc} + +.syntax unified +.align 3 +// Ok, APCS and AAPCS agree on 32 bit args, so it's safe to use the same routine. +DEFINE_AEABI_FUNCTION_ALIAS(__aeabi_idiv, __divsi3) +DEFINE_COMPILERRT_FUNCTION(__divsi3) + ESTABLISH_FRAME +// Set aside the sign of the quotient. + eor r4, r0, r1 +// Take absolute value of a and b via abs(x) = (x^(x >> 31)) - (x >> 31). + eor r2, r0, r0, asr #31 + eor r3, r1, r1, asr #31 + sub r0, r2, r0, asr #31 + sub r1, r3, r1, asr #31 +// abs(a) / abs(b) + bl SYMBOL_NAME(__udivsi3) +// Apply sign of quotient to result and return. + eor r0, r0, r4, asr #31 + sub r0, r0, r4, asr #31 + CLEAR_FRAME_AND_RETURN Modified: vendor/compiler-rt/dist/lib/arm/modsi3.S ============================================================================== --- vendor/compiler-rt/dist/lib/arm/modsi3.S Thu Jun 2 19:49:47 2011 (r222624) +++ vendor/compiler-rt/dist/lib/arm/modsi3.S Thu Jun 2 20:02:42 2011 (r222625) @@ -1,36 +1,39 @@ -//===-------- modsi3.S - Implement modsi3 ---------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// +/*===-- modsi3.S - 32-bit signed integer modulus --------------------------===// + * + * The LLVM Compiler Infrastructure + * + * This file is dual licensed under the MIT and the University of Illinois Open + * Source Licenses. See LICENSE.TXT for details. + * + *===----------------------------------------------------------------------===// + * + * This file implements the __modsi3 (32-bit signed integer modulus) function + * for the ARM architecture as a wrapper around the unsigned routine. + * + *===----------------------------------------------------------------------===*/ #include "../assembly.h" -// -// extern int32_t __modsi3(int32_t a, int32_t b); -// -// Returns the remainder when dividing two 32-bit signed integers. -// Conceptually, the function is: { return a - (a / b) * b; } -// But if you write that in C, llvm compiles it to a call to __modsi3... -// - .align 2 -DEFINE_COMPILERRT_FUNCTION(__modsi3) - push {r4, r5, r7, lr} - add r7, sp, #8 // set stack frame - mov r5, r0 // save a - mov r4, r1 // save b - bl ___divsi3 // compute a/b -#if __ARM_ARCH_7A__ - mls r0, r4, r0, r5 // mulitple result * b and subtract from a -#else - // before armv7, does not have "mls" instruction - mul r3, r0, r4 // multiple result * b - sub r0, r5, r3 // a - result -#endif - pop {r4, r5, r7, pc} - - +#define ESTABLISH_FRAME \ + push {r4, r7, lr} ;\ + add r7, sp, #4 +#define CLEAR_FRAME_AND_RETURN \ + pop {r4, r7, pc} +.syntax unified +.align 3 +DEFINE_COMPILERRT_FUNCTION(__modsi3) + ESTABLISH_FRAME + // Set aside the sign of the dividend. + mov r4, r0 + // Take absolute value of a and b via abs(x) = (x^(x >> 31)) - (x >> 31). + eor r2, r0, r0, asr #31 + eor r3, r1, r1, asr #31 + sub r0, r2, r0, asr #31 + sub r1, r3, r1, asr #31 + // abs(a) % abs(b) + bl SYMBOL_NAME(__umodsi3) + // Apply sign of dividend to result and return. + eor r0, r0, r4, asr #31 + sub r0, r0, r4, asr #31 + CLEAR_FRAME_AND_RETURN Added: vendor/compiler-rt/dist/lib/arm/udivmodsi4.S ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ vendor/compiler-rt/dist/lib/arm/udivmodsi4.S Thu Jun 2 20:02:42 2011 (r222625) @@ -0,0 +1,80 @@ +/*===-- udivmodsi4.S - 32-bit unsigned integer divide and modulus ---------===// + * + * The LLVM Compiler Infrastructure + * + * This file is dual licensed under the MIT and the University of Illinois Open + * Source Licenses. See LICENSE.TXT for details. + * + *===----------------------------------------------------------------------===// + * + * This file implements the __udivmodsi4 (32-bit unsigned integer divide and + * modulus) function for the ARM architecture. A naive digit-by-digit + * computation is employed for simplicity. + * + *===----------------------------------------------------------------------===*/ + +#include "../assembly.h" + +#define ESTABLISH_FRAME \ + push {r4, r7, lr} ;\ + add r7, sp, #4 +#define CLEAR_FRAME_AND_RETURN \ + pop {r4, r7, pc} + +#define a r0 +#define b r1 +#define i r3 +#define r r4 +#define q ip +#define one lr + +.syntax unified +.align 3 +DEFINE_COMPILERRT_FUNCTION(__udivmodsi4) +// We use a simple digit by digit algorithm; before we get into the actual +// divide loop, we must calculate the left-shift amount necessary to align +// the MSB of the divisor with that of the dividend (If this shift is +// negative, then the result is zero, and we early out). We also conjure a +// bit mask of 1 to use in constructing the quotient, and initialize the +// quotient to zero. + ESTABLISH_FRAME + clz r4, a + tst b, b // detect divide-by-zero + clz r3, b + mov q, #0 + beq LOCAL_LABEL(return) // return 0 if b is zero. + mov one, #1 + subs i, r3, r4 + blt LOCAL_LABEL(return) // return 0 if MSB(a) < MSB(b) + +LOCAL_LABEL(mainLoop): +// This loop basically implements the following: +// +// do { +// if (a >= b << i) { +// a -= b << i; +// q |= 1 << i; +// if (a == 0) break; +// } +// } while (--i) +// +// Note that this does not perform the final iteration (i == 0); by doing it +// this way, we can merge the two branches which is a substantial win for +// such a tight loop on current ARM architectures. + subs r, a, b, lsl i + orrhs q, q,one, lsl i + movhs a, r + subsne i, i, #1 + bhi LOCAL_LABEL(mainLoop) + +// Do the final test subtraction and update of quotient (i == 0), as it is +// not performed in the main loop. + subs r, a, b + orrhs q, #1 + movhs a, r + +LOCAL_LABEL(return): +// Store the remainder, and move the quotient to r0, then return. + str a, [r2] + mov r0, q + CLEAR_FRAME_AND_RETURN Added: vendor/compiler-rt/dist/lib/arm/udivsi3.S ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ vendor/compiler-rt/dist/lib/arm/udivsi3.S Thu Jun 2 20:02:42 2011 (r222625) @@ -0,0 +1,80 @@ +/*===-- udivsi3.S - 32-bit unsigned integer divide ------------------------===// + * + * The LLVM Compiler Infrastructure + * + * This file is dual licensed under the MIT and the University of Illinois Open + * Source Licenses. See LICENSE.TXT for details. + * + *===----------------------------------------------------------------------===// + * + * This file implements the __udivsi3 (32-bit unsigned integer divide) + * function for the ARM architecture. A naive digit-by-digit computation is + * employed for simplicity. + * + *===----------------------------------------------------------------------===*/ + +#include "../assembly.h" + +#define ESTABLISH_FRAME \ + push {r7, lr} ;\ + mov r7, sp +#define CLEAR_FRAME_AND_RETURN \ + pop {r7, pc} + +#define a r0 +#define b r1 +#define r r2 +#define i r3 +#define q ip +#define one lr + +.syntax unified +.align 3 +// Ok, APCS and AAPCS agree on 32 bit args, so it's safe to use the same routine. +DEFINE_AEABI_FUNCTION_ALIAS(__aeabi_uidiv, __udivsi3) +DEFINE_COMPILERRT_FUNCTION(__udivsi3) +// We use a simple digit by digit algorithm; before we get into the actual +// divide loop, we must calculate the left-shift amount necessary to align +// the MSB of the divisor with that of the dividend (If this shift is +// negative, then the result is zero, and we early out). We also conjure a +// bit mask of 1 to use in constructing the quotient, and initialize the +// quotient to zero. + ESTABLISH_FRAME + clz r2, a + tst b, b // detect divide-by-zero + clz r3, b + mov q, #0 + beq LOCAL_LABEL(return) // return 0 if b is zero. + mov one, #1 + subs i, r3, r2 + blt LOCAL_LABEL(return) // return 0 if MSB(a) < MSB(b) + +LOCAL_LABEL(mainLoop): +// This loop basically implements the following: +// +// do { +// if (a >= b << i) { +// a -= b << i; +// q |= 1 << i; +// if (a == 0) break; +// } +// } while (--i) +// +// Note that this does not perform the final iteration (i == 0); by doing it +// this way, we can merge the two branches which is a substantial win for +// such a tight loop on current ARM architectures. + subs r, a, b, lsl i + orrhs q, q,one, lsl i + movhs a, r + subsne i, i, #1 + bhi LOCAL_LABEL(mainLoop) + +// Do the final test subtraction and update of quotient (i == 0), as it is +// not performed in the main loop. + subs r, a, b + orrhs q, #1 + +LOCAL_LABEL(return): +// Move the quotient to r0 and return. + mov r0, q + CLEAR_FRAME_AND_RETURN Added: vendor/compiler-rt/dist/lib/arm/umodsi3.S ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ vendor/compiler-rt/dist/lib/arm/umodsi3.S Thu Jun 2 20:02:42 2011 (r222625) @@ -0,0 +1,58 @@ +/*===-- umodsi3.S - 32-bit unsigned integer modulus -----------------------===// + * + * The LLVM Compiler Infrastructure + * + * This file is dual licensed under the MIT and the University of Illinois Open + * Source Licenses. See LICENSE.TXT for details. + * + *===----------------------------------------------------------------------===// + * + * This file implements the __umodsi3 (32-bit unsigned integer modulus) + * function for the ARM architecture. A naive digit-by-digit computation is + * employed for simplicity. + * + *===----------------------------------------------------------------------===*/ + +#include "../assembly.h" + +#define a r0 +#define b r1 +#define r r2 +#define i r3 + +.syntax unified +.align 3 +DEFINE_COMPILERRT_FUNCTION(__umodsi3) +// We use a simple digit by digit algorithm; before we get into the actual +// divide loop, we must calculate the left-shift amount necessary to align +// the MSB of the divisor with that of the dividend. + clz r2, a + tst b, b // detect b == 0 + clz r3, b + bxeq lr // return a if b == 0 + subs i, r3, r2 + bxlt lr // return a if MSB(a) < MSB(b) + +LOCAL_LABEL(mainLoop): +// This loop basically implements the following: +// +// do { +// if (a >= b << i) { +// a -= b << i; +// if (a == 0) break; +// } +// } while (--i) +// +// Note that this does not perform the final iteration (i == 0); by doing it +// this way, we can merge the two branches which is a substantial win for +// such a tight loop on current ARM architectures. + subs r, a, b, lsl i + movhs a, r + subsne i, i, #1 + bhi LOCAL_LABEL(mainLoop) + +// Do the final test subtraction and update of remainder (i == 0), as it is +// not performed in the main loop. + subs r, a, b + movhs a, r + bx lr Modified: vendor/compiler-rt/dist/lib/ashldi3.c ============================================================================== --- vendor/compiler-rt/dist/lib/ashldi3.c Thu Jun 2 19:49:47 2011 (r222624) +++ vendor/compiler-rt/dist/lib/ashldi3.c Thu Jun 2 20:02:42 2011 (r222625) @@ -11,6 +11,7 @@ * * ===----------------------------------------------------------------------=== */ +#include "abi.h" #include "int_lib.h" @@ -18,7 +19,9 @@ /* Precondition: 0 <= b < bits_in_dword */ -di_int +ARM_EABI_FNALIAS(llsl, ashldi3); + +COMPILER_RT_ABI di_int __ashldi3(di_int a, si_int b) { const int bits_in_word = (int)(sizeof(si_int) * CHAR_BIT); Modified: vendor/compiler-rt/dist/lib/ashrdi3.c ============================================================================== --- vendor/compiler-rt/dist/lib/ashrdi3.c Thu Jun 2 19:49:47 2011 (r222624) +++ vendor/compiler-rt/dist/lib/ashrdi3.c Thu Jun 2 20:02:42 2011 (r222625) @@ -11,6 +11,7 @@ * * ===----------------------------------------------------------------------=== */ +#include "abi.h" #include "int_lib.h" @@ -18,7 +19,9 @@ /* Precondition: 0 <= b < bits_in_dword */ -di_int +ARM_EABI_FNALIAS(lasr, ashrdi3); + +COMPILER_RT_ABI di_int __ashrdi3(di_int a, si_int b) { const int bits_in_word = (int)(sizeof(si_int) * CHAR_BIT); Modified: vendor/compiler-rt/dist/lib/assembly.h ============================================================================== --- vendor/compiler-rt/dist/lib/assembly.h Thu Jun 2 19:49:47 2011 (r222624) +++ vendor/compiler-rt/dist/lib/assembly.h Thu Jun 2 20:02:42 2011 (r222625) @@ -22,33 +22,48 @@ #define SEPARATOR ; #endif -/* We can't use __USER_LABEL_PREFIX__ here, it isn't possible to concatenate the - *values* of two macros. This is quite brittle, though. */ #if defined(__APPLE__) -#define SYMBOL_NAME(name) _##name +#define HIDDEN_DIRECTIVE .private_extern +#define LOCAL_LABEL(name) L_##name #else -#define SYMBOL_NAME(name) name +#define HIDDEN_DIRECTIVE .hidden +#define LOCAL_LABEL(name) .L_##name #endif +#define GLUE2(a, b) a ## b +#define GLUE(a, b) GLUE2(a, b) +#define SYMBOL_NAME(name) GLUE(__USER_LABEL_PREFIX__, name) + #ifdef VISIBILITY_HIDDEN -#define DEFINE_COMPILERRT_FUNCTION(name) \ - .globl SYMBOL_NAME(name) SEPARATOR \ - .private_extern SYMBOL_NAME(name) SEPARATOR \ +#define DEFINE_COMPILERRT_FUNCTION(name) \ + .globl SYMBOL_NAME(name) SEPARATOR \ + HIDDEN_DIRECTIVE SYMBOL_NAME(name) SEPARATOR \ SYMBOL_NAME(name): #else -#define DEFINE_COMPILERRT_FUNCTION(name) \ - .globl SYMBOL_NAME(name) SEPARATOR \ +#define DEFINE_COMPILERRT_FUNCTION(name) \ + .globl SYMBOL_NAME(name) SEPARATOR \ SYMBOL_NAME(name): #endif -#define DEFINE_COMPILERRT_PRIVATE_FUNCTION(name) \ - .globl SYMBOL_NAME(name) SEPARATOR \ - .private_extern SYMBOL_NAME(name) SEPARATOR \ +#define DEFINE_COMPILERRT_PRIVATE_FUNCTION(name) \ + .globl SYMBOL_NAME(name) SEPARATOR \ + HIDDEN_DIRECTIVE SYMBOL_NAME(name) SEPARATOR \ SYMBOL_NAME(name): #define DEFINE_COMPILERRT_PRIVATE_FUNCTION_UNMANGLED(name) \ - .globl name SEPARATOR \ - .private_extern name SEPARATOR \ + .globl name SEPARATOR \ + HIDDEN_DIRECTIVE name SEPARATOR \ name: +#define DEFINE_COMPILERRT_FUNCTION_ALIAS(name, target) \ + .globl SYMBOL_NAME(name) SEPARATOR \ + .set SYMBOL_NAME(name), SYMBOL_NAME(target) SEPARATOR + +#if defined (__ARM_EABI__) +# define DEFINE_AEABI_FUNCTION_ALIAS(aeabi_name, name) \ + DEFINE_COMPILERRT_FUNCTION_ALIAS(aeabi_name, name) +#else +# define DEFINE_AEABI_FUNCTION_ALIAS(aeabi_name, name) +#endif + #endif /* COMPILERRT_ASSEMBLY_H */ Modified: vendor/compiler-rt/dist/lib/clzdi2.c ============================================================================== --- vendor/compiler-rt/dist/lib/clzdi2.c Thu Jun 2 19:49:47 2011 (r222624) +++ vendor/compiler-rt/dist/lib/clzdi2.c Thu Jun 2 20:02:42 2011 (r222625) @@ -1,6 +1,6 @@ /* ===-- clzdi2.c - Implement __clzdi2 -------------------------------------=== * - * The LLVM Compiler Infrastructure + * The LLVM Compiler Infrastructure * * This file is dual licensed under the MIT and the University of Illinois Open * Source Licenses. See LICENSE.TXT for details. @@ -11,6 +11,7 @@ * * ===----------------------------------------------------------------------=== */ +#include "abi.h" #include "int_lib.h" @@ -18,7 +19,7 @@ /* Precondition: a != 0 */ -si_int +COMPILER_RT_ABI si_int __clzdi2(di_int a) { dwords x; Modified: vendor/compiler-rt/dist/lib/clzsi2.c ============================================================================== --- vendor/compiler-rt/dist/lib/clzsi2.c Thu Jun 2 19:49:47 2011 (r222624) +++ vendor/compiler-rt/dist/lib/clzsi2.c Thu Jun 2 20:02:42 2011 (r222625) @@ -1,6 +1,6 @@ /* ===-- clzsi2.c - Implement __clzsi2 -------------------------------------=== * - * The LLVM Compiler Infrastructure + * The LLVM Compiler Infrastructure * * This file is dual licensed under the MIT and the University of Illinois Open * Source Licenses. See LICENSE.TXT for details. @@ -11,6 +11,7 @@ * * ===----------------------------------------------------------------------=== */ +#include "abi.h" #include "int_lib.h" @@ -18,7 +19,7 @@ /* Precondition: a != 0 */ -si_int +COMPILER_RT_ABI si_int __clzsi2(si_int a) { su_int x = (su_int)a; Modified: vendor/compiler-rt/dist/lib/cmpdi2.c ============================================================================== --- vendor/compiler-rt/dist/lib/cmpdi2.c Thu Jun 2 19:49:47 2011 (r222624) +++ vendor/compiler-rt/dist/lib/cmpdi2.c Thu Jun 2 20:02:42 2011 (r222625) @@ -6,20 +6,21 @@ * Source Licenses. See LICENSE.TXT for details. * * ===----------------------------------------------------------------------=== - * + * * This file implements __cmpdi2 for the compiler_rt library. * * ===----------------------------------------------------------------------=== */ +#include "abi.h" #include "int_lib.h" -/* Returns: if (a < b) returns 0 +/* Returns: if (a < b) returns 0 * if (a == b) returns 1 * if (a > b) returns 2 */ -si_int +COMPILER_RT_ABI si_int __cmpdi2(di_int a, di_int b) { dwords x; Modified: vendor/compiler-rt/dist/lib/ctzdi2.c ============================================================================== --- vendor/compiler-rt/dist/lib/ctzdi2.c Thu Jun 2 19:49:47 2011 (r222624) +++ vendor/compiler-rt/dist/lib/ctzdi2.c Thu Jun 2 20:02:42 2011 (r222625) @@ -11,6 +11,7 @@ * * ===----------------------------------------------------------------------=== */ +#include "abi.h" #include "int_lib.h" @@ -18,7 +19,7 @@ /* Precondition: a != 0 */ -si_int +COMPILER_RT_ABI si_int __ctzdi2(di_int a) { dwords x; Modified: vendor/compiler-rt/dist/lib/ctzsi2.c ============================================================================== --- vendor/compiler-rt/dist/lib/ctzsi2.c Thu Jun 2 19:49:47 2011 (r222624) +++ vendor/compiler-rt/dist/lib/ctzsi2.c Thu Jun 2 20:02:42 2011 (r222625) @@ -11,6 +11,7 @@ * * ===----------------------------------------------------------------------=== */ +#include "abi.h" #include "int_lib.h" @@ -18,7 +19,7 @@ /* Precondition: a != 0 */ -si_int +COMPILER_RT_ABI si_int __ctzsi2(si_int a) { su_int x = (su_int)a; Modified: vendor/compiler-rt/dist/lib/divdf3.c ============================================================================== --- vendor/compiler-rt/dist/lib/divdf3.c Thu Jun 2 19:49:47 2011 (r222624) +++ vendor/compiler-rt/dist/lib/divdf3.c Thu Jun 2 20:02:42 2011 (r222625) @@ -15,10 +15,13 @@ // underflow with correct rounding. // //===----------------------------------------------------------------------===// +#include "abi.h" #define DOUBLE_PRECISION #include "fp_lib.h" +ARM_EABI_FNALIAS(ddiv, divdf3); + fp_t __divdf3(fp_t a, fp_t b) { const unsigned int aExponent = toRep(a) >> significandBits & maxExponent; Modified: vendor/compiler-rt/dist/lib/divdi3.c ============================================================================== --- vendor/compiler-rt/dist/lib/divdi3.c Thu Jun 2 19:49:47 2011 (r222624) +++ vendor/compiler-rt/dist/lib/divdi3.c Thu Jun 2 20:02:42 2011 (r222625) @@ -11,14 +11,15 @@ * * ===----------------------------------------------------------------------=== */ +#include "abi.h" #include "int_lib.h" -du_int __udivmoddi4(du_int a, du_int b, du_int* rem); +du_int COMPILER_RT_ABI __udivmoddi4(du_int a, du_int b, du_int* rem); /* Returns: a / b */ -di_int +COMPILER_RT_ABI di_int __divdi3(di_int a, di_int b) { const int bits_in_dword_m1 = (int)(sizeof(di_int) * CHAR_BIT) - 1; *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** _______________________________________________ svn-src-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"