diff --git a/compiler-rt/lib/builtins/absvdi2.c b/compiler-rt/lib/builtins/absvdi2.c --- a/compiler-rt/lib/builtins/absvdi2.c +++ b/compiler-rt/lib/builtins/absvdi2.c @@ -16,7 +16,7 @@ // Effects: aborts if abs(x) < 0 -COMPILER_RT_ABI di_int __absvdi2(di_int a) { +DECLARE_LIBCALL(di_int, __absvdi2, di_int a) { const int N = (int)(sizeof(di_int) * CHAR_BIT); if (a == ((di_int)1 << (N - 1))) compilerrt_abort(); diff --git a/compiler-rt/lib/builtins/absvsi2.c b/compiler-rt/lib/builtins/absvsi2.c --- a/compiler-rt/lib/builtins/absvsi2.c +++ b/compiler-rt/lib/builtins/absvsi2.c @@ -16,7 +16,7 @@ // Effects: aborts if abs(x) < 0 -COMPILER_RT_ABI si_int __absvsi2(si_int a) { +DECLARE_LIBCALL(si_int, __absvsi2, si_int a) { const int N = (int)(sizeof(si_int) * CHAR_BIT); if (a == ((si_int)1 << (N - 1))) compilerrt_abort(); diff --git a/compiler-rt/lib/builtins/absvti2.c b/compiler-rt/lib/builtins/absvti2.c --- a/compiler-rt/lib/builtins/absvti2.c +++ b/compiler-rt/lib/builtins/absvti2.c @@ -18,7 +18,7 @@ // Effects: aborts if abs(x) < 0 -COMPILER_RT_ABI ti_int __absvti2(ti_int a) { +DECLARE_LIBCALL(ti_int, __absvti2, ti_int a) { const int N = (int)(sizeof(ti_int) * CHAR_BIT); if (a == ((ti_int)1 << (N - 1))) compilerrt_abort(); diff --git a/compiler-rt/lib/builtins/adddf3.c b/compiler-rt/lib/builtins/adddf3.c --- a/compiler-rt/lib/builtins/adddf3.c +++ b/compiler-rt/lib/builtins/adddf3.c @@ -13,12 +13,6 @@ #define DOUBLE_PRECISION #include "fp_add_impl.inc" -COMPILER_RT_ABI double __adddf3(double a, double b) { return __addXf3__(a, b); } +DECLARE_LIBCALL(double, __adddf3, double a, double b) { return __addXf3__(a, b); } -#if defined(__ARM_EABI__) -#if defined(COMPILER_RT_ARMHF_TARGET) -AEABI_RTABI double __aeabi_dadd(double a, double b) { return __adddf3(a, b); } -#else -COMPILER_RT_ALIAS(__adddf3, __aeabi_dadd) -#endif -#endif +AUX_DECLS(__adddf3) diff --git a/compiler-rt/lib/builtins/addsf3.c b/compiler-rt/lib/builtins/addsf3.c --- a/compiler-rt/lib/builtins/addsf3.c +++ b/compiler-rt/lib/builtins/addsf3.c @@ -13,12 +13,6 @@ #define SINGLE_PRECISION #include "fp_add_impl.inc" -COMPILER_RT_ABI float __addsf3(float a, float b) { return __addXf3__(a, b); } +DECLARE_LIBCALL(float, __addsf3, float a, float b) { return __addXf3__(a, b); } -#if defined(__ARM_EABI__) -#if defined(COMPILER_RT_ARMHF_TARGET) -AEABI_RTABI float __aeabi_fadd(float a, float b) { return __addsf3(a, b); } -#else -COMPILER_RT_ALIAS(__addsf3, __aeabi_fadd) -#endif -#endif +AUX_DECLS(__addsf3) diff --git a/compiler-rt/lib/builtins/addtf3.c b/compiler-rt/lib/builtins/addtf3.c --- a/compiler-rt/lib/builtins/addtf3.c +++ b/compiler-rt/lib/builtins/addtf3.c @@ -16,7 +16,7 @@ #if defined(CRT_HAS_128BIT) && defined(CRT_LDBL_128BIT) #include "fp_add_impl.inc" -COMPILER_RT_ABI fp_t __addtf3(fp_t a, fp_t b) { +DECLARE_LIBCALL(fp_t, __addtf3, fp_t a, fp_t b) { return __addXf3__(a, b); } diff --git a/compiler-rt/lib/builtins/addvdi3.c b/compiler-rt/lib/builtins/addvdi3.c --- a/compiler-rt/lib/builtins/addvdi3.c +++ b/compiler-rt/lib/builtins/addvdi3.c @@ -16,7 +16,7 @@ // Effects: aborts if a + b overflows -COMPILER_RT_ABI di_int __addvdi3(di_int a, di_int b) { +DECLARE_LIBCALL(di_int, __addvdi3, di_int a, di_int b) { di_int s = (du_int)a + (du_int)b; if (b >= 0) { if (s < a) diff --git a/compiler-rt/lib/builtins/addvsi3.c b/compiler-rt/lib/builtins/addvsi3.c --- a/compiler-rt/lib/builtins/addvsi3.c +++ b/compiler-rt/lib/builtins/addvsi3.c @@ -16,7 +16,7 @@ // Effects: aborts if a + b overflows -COMPILER_RT_ABI si_int __addvsi3(si_int a, si_int b) { +DECLARE_LIBCALL(si_int, __addvsi3, si_int a, si_int b) { si_int s = (su_int)a + (su_int)b; if (b >= 0) { if (s < a) diff --git a/compiler-rt/lib/builtins/addvti3.c b/compiler-rt/lib/builtins/addvti3.c --- a/compiler-rt/lib/builtins/addvti3.c +++ b/compiler-rt/lib/builtins/addvti3.c @@ -18,7 +18,7 @@ // Effects: aborts if a + b overflows -COMPILER_RT_ABI ti_int __addvti3(ti_int a, ti_int b) { +DECLARE_LIBCALL(ti_int, __addvti3, ti_int a, ti_int b) { ti_int s = (tu_int)a + (tu_int)b; if (b >= 0) { if (s < a) diff --git a/compiler-rt/lib/builtins/arm-libcall-overrides.h b/compiler-rt/lib/builtins/arm-libcall-overrides.h new file mode 100644 --- /dev/null +++ b/compiler-rt/lib/builtins/arm-libcall-overrides.h @@ -0,0 +1,102 @@ +//===-- arm-libcall-overrides.h - LibCall overrides for ARM targets -------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#define AEABI_RTABI __attribute__((__pcs__("aapcs"))) + +#define AUX_DECLS__ashldi3 COMPILER_RT_ALIAS(__ashldi3, __aeabi_llsl) +#define AUX_DECLS__ashrdi3 COMPILER_RT_ALIAS(__ashrdi3, __aeabi_lasr) +#define AUX_DECLS__lshrdi3 COMPILER_RT_ALIAS(__lshrdi3, __aeabi_llsr) +#define AUX_DECLS__divsi3 COMPILER_RT_ALIAS(__divsi3, __aeabi_idiv) +#define AUX_DECLS__muldi3 COMPILER_RT_ALIAS(__muldi3, __aeabi_lmul) +#define AUX_DECLS__udivsi3 COMPILER_RT_ALIAS(__udivsi3, __aeabi_uidiv) + +#if defined(COMPILER_RT_ARMHF_TARGET) + +#define COMPILER_RT_ABI + +// grep -h 'AEABI_RTABI' *.c | sed -r 's/^(AEABI_RTABI [^ ]+ (__[^(]+).*)$/#define AUX_DECLS\2 \1/' +#define AUX_DECLS__aeabi_dadd AEABI_RTABI double __aeabi_dadd(double a, double b) { return __adddf3(a, b); } +#define AUX_DECLS__aeabi_fadd AEABI_RTABI float __aeabi_fadd(float a, float b) { return __addsf3(a, b); } +#define AUX_DECLS__aeabi_dcmpun AEABI_RTABI int __aeabi_dcmpun(fp_t a, fp_t b) { return __unorddf2(a, b); } +#define AUX_DECLS__aeabi_fcmpun AEABI_RTABI int __aeabi_fcmpun(fp_t a, fp_t b) { return __unordsf2(a, b); } +#define AUX_DECLS__aeabi_ddiv AEABI_RTABI fp_t __aeabi_ddiv(fp_t a, fp_t b) { return __divdf3(a, b); } +#define AUX_DECLS__aeabi_fdiv AEABI_RTABI fp_t __aeabi_fdiv(fp_t a, fp_t b) { return __divsf3(a, b); } +#define AUX_DECLS__aeabi_h2f AEABI_RTABI float __aeabi_h2f(uint16_t a) { return __extendhfsf2(a); } +#define AUX_DECLS__aeabi_f2d AEABI_RTABI double __aeabi_f2d(float a) { return __extendsfdf2(a); } +#define AUX_DECLS__aeabi_d2lz AEABI_RTABI di_int __aeabi_d2lz(fp_t a) { return __fixdfdi(a); } +#define AUX_DECLS__aeabi_d2iz AEABI_RTABI si_int __aeabi_d2iz(fp_t a) { return __fixdfsi(a); } +#define AUX_DECLS__aeabi_f2lz AEABI_RTABI di_int __aeabi_f2lz(fp_t a) { return __fixsfdi(a); } +#define AUX_DECLS__aeabi_f2iz AEABI_RTABI si_int __aeabi_f2iz(fp_t a) { return __fixsfsi(a); } +#define AUX_DECLS__aeabi_d2ulz AEABI_RTABI du_int __aeabi_d2ulz(fp_t a) { return __fixunsdfdi(a); } +#define AUX_DECLS__aeabi_d2uiz AEABI_RTABI su_int __aeabi_d2uiz(fp_t a) { return __fixunsdfsi(a); } +#define AUX_DECLS__aeabi_f2ulz AEABI_RTABI du_int __aeabi_f2ulz(fp_t a) { return __fixunssfdi(a); } +#define AUX_DECLS__aeabi_f2uiz AEABI_RTABI su_int __aeabi_f2uiz(fp_t a) { return __fixunssfsi(a); } +#define AUX_DECLS__aeabi_l2d AEABI_RTABI double __aeabi_l2d(di_int a) { return __floatdidf(a); } +#define AUX_DECLS__aeabi_l2f AEABI_RTABI float __aeabi_l2f(di_int a) { return __floatdisf(a); } +#define AUX_DECLS__aeabi_i2d AEABI_RTABI fp_t __aeabi_i2d(si_int a) { return __floatsidf(a); } +#define AUX_DECLS__aeabi_i2f AEABI_RTABI fp_t __aeabi_i2f(int a) { return __floatsisf(a); } +#define AUX_DECLS__aeabi_ul2d AEABI_RTABI double __aeabi_ul2d(du_int a) { return __floatundidf(a); } +#define AUX_DECLS__aeabi_ul2f AEABI_RTABI float __aeabi_ul2f(du_int a) { return __floatundisf(a); } +#define AUX_DECLS__aeabi_ui2d AEABI_RTABI fp_t __aeabi_ui2d(su_int a) { return __floatunsidf(a); } +#define AUX_DECLS__aeabi_ui2f AEABI_RTABI fp_t __aeabi_ui2f(unsigned int a) { return __floatunsisf(a); } +#define AUX_DECLS__aeabi_dmul AEABI_RTABI fp_t __aeabi_dmul(fp_t a, fp_t b) { return __muldf3(a, b); } +#define AUX_DECLS__aeabi_fmul AEABI_RTABI fp_t __aeabi_fmul(fp_t a, fp_t b) { return __mulsf3(a, b); } +#define AUX_DECLS__aeabi_dneg AEABI_RTABI fp_t __aeabi_dneg(fp_t a) { return __negdf2(a); } +#define AUX_DECLS__aeabi_fneg AEABI_RTABI fp_t __aeabi_fneg(fp_t a) { return __negsf2(a); } +#define AUX_DECLS__aeabi_dsub AEABI_RTABI fp_t __aeabi_dsub(fp_t a, fp_t b) { return __subdf3(a, b); } +#define AUX_DECLS__aeabi_fsub AEABI_RTABI fp_t __aeabi_fsub(fp_t a, fp_t b) { return __subsf3(a, b); } +#define AUX_DECLS__aeabi_d2h AEABI_RTABI uint16_t __aeabi_d2h(double a) { return __truncdfhf2(a); } +#define AUX_DECLS__aeabi_d2f AEABI_RTABI float __aeabi_d2f(double a) { return __truncdfsf2(a); } +#define AUX_DECLS__aeabi_f2h AEABI_RTABI uint16_t __aeabi_f2h(float a) { return __truncsfhf2(a); } + +#else // defined(COMPILER_RT_ARMHF_TARGET) + +#define COMPILER_RT_ABI AEABI_RTABI + +// grep -h 'COMPILER_RT_ALIAS.*eabi' *.c | sed -r 's/^(COMPILER_RT_ALIAS\((__[^,]+).*)$/#define AUX_DECLS\2 \1/' +#define AUX_DECLS__adddf3 COMPILER_RT_ALIAS(__adddf3, __aeabi_dadd) +#define AUX_DECLS__addsf3 COMPILER_RT_ALIAS(__addsf3, __aeabi_fadd) +#define AUX_DECLS__ashldi3 COMPILER_RT_ALIAS(__ashldi3, __aeabi_llsl) +#define AUX_DECLS__ashrdi3 COMPILER_RT_ALIAS(__ashrdi3, __aeabi_lasr) +#define AUX_DECLS__unorddf2 COMPILER_RT_ALIAS(__unorddf2, __aeabi_dcmpun) +#define AUX_DECLS__unordsf2 COMPILER_RT_ALIAS(__unordsf2, __aeabi_fcmpun) +#define AUX_DECLS__divdf3 COMPILER_RT_ALIAS(__divdf3, __aeabi_ddiv) +#define AUX_DECLS__divsf3 COMPILER_RT_ALIAS(__divsf3, __aeabi_fdiv) +#define AUX_DECLS__divsi3 COMPILER_RT_ALIAS(__divsi3, __aeabi_idiv) +#define AUX_DECLS__extendhfsf2 COMPILER_RT_ALIAS(__extendhfsf2, __aeabi_h2f) +#define AUX_DECLS__extendsfdf2 COMPILER_RT_ALIAS(__extendsfdf2, __aeabi_f2d) +#define AUX_DECLS__fixdfdi COMPILER_RT_ALIAS(__fixdfdi, __aeabi_d2lz) +#define AUX_DECLS__fixdfsi COMPILER_RT_ALIAS(__fixdfsi, __aeabi_d2iz) +#define AUX_DECLS__fixsfdi COMPILER_RT_ALIAS(__fixsfdi, __aeabi_f2lz) +#define AUX_DECLS__fixsfsi COMPILER_RT_ALIAS(__fixsfsi, __aeabi_f2iz) +#define AUX_DECLS__fixunsdfdi COMPILER_RT_ALIAS(__fixunsdfdi, __aeabi_d2ulz) +#define AUX_DECLS__fixunsdfsi COMPILER_RT_ALIAS(__fixunsdfsi, __aeabi_d2uiz) +#define AUX_DECLS__fixunssfdi COMPILER_RT_ALIAS(__fixunssfdi, __aeabi_f2ulz) +#define AUX_DECLS__fixunssfsi COMPILER_RT_ALIAS(__fixunssfsi, __aeabi_f2uiz) +#define AUX_DECLS__floatdidf COMPILER_RT_ALIAS(__floatdidf, __aeabi_l2d) +#define AUX_DECLS__floatdisf COMPILER_RT_ALIAS(__floatdisf, __aeabi_l2f) +#define AUX_DECLS__floatsidf COMPILER_RT_ALIAS(__floatsidf, __aeabi_i2d) +#define AUX_DECLS__floatsisf COMPILER_RT_ALIAS(__floatsisf, __aeabi_i2f) +#define AUX_DECLS__floatundidf COMPILER_RT_ALIAS(__floatundidf, __aeabi_ul2d) +#define AUX_DECLS__floatundisf COMPILER_RT_ALIAS(__floatundisf, __aeabi_ul2f) +#define AUX_DECLS__floatunsidf COMPILER_RT_ALIAS(__floatunsidf, __aeabi_ui2d) +#define AUX_DECLS__floatunsisf COMPILER_RT_ALIAS(__floatunsisf, __aeabi_ui2f) +#define AUX_DECLS__lshrdi3 COMPILER_RT_ALIAS(__lshrdi3, __aeabi_llsr) +#define AUX_DECLS__muldf3 COMPILER_RT_ALIAS(__muldf3, __aeabi_dmul) +#define AUX_DECLS__muldi3 COMPILER_RT_ALIAS(__muldi3, __aeabi_lmul) +#define AUX_DECLS__mulsf3 COMPILER_RT_ALIAS(__mulsf3, __aeabi_fmul) +#define AUX_DECLS__negdf2 COMPILER_RT_ALIAS(__negdf2, __aeabi_dneg) +#define AUX_DECLS__negsf2 COMPILER_RT_ALIAS(__negsf2, __aeabi_fneg) +#define AUX_DECLS__subdf3 COMPILER_RT_ALIAS(__subdf3, __aeabi_dsub) +#define AUX_DECLS__subsf3 COMPILER_RT_ALIAS(__subsf3, __aeabi_fsub) +#define AUX_DECLS__truncdfhf2 COMPILER_RT_ALIAS(__truncdfhf2, __aeabi_d2h) +#define AUX_DECLS__truncdfsf2 COMPILER_RT_ALIAS(__truncdfsf2, __aeabi_d2f) +#define AUX_DECLS__truncsfhf2 COMPILER_RT_ALIAS(__truncsfhf2, __aeabi_f2h) +#define AUX_DECLS__udivsi3 COMPILER_RT_ALIAS(__udivsi3, __aeabi_uidiv) + +#endif // defined(COMPILER_RT_ARMHF_TARGET) diff --git a/compiler-rt/lib/builtins/ashldi3.c b/compiler-rt/lib/builtins/ashldi3.c --- a/compiler-rt/lib/builtins/ashldi3.c +++ b/compiler-rt/lib/builtins/ashldi3.c @@ -16,7 +16,7 @@ // Precondition: 0 <= b < bits_in_dword -COMPILER_RT_ABI di_int __ashldi3(di_int a, int b) { +DECLARE_LIBCALL(di_int, __ashldi3, di_int a, int b) { const int bits_in_word = (int)(sizeof(si_int) * CHAR_BIT); dwords input; dwords result; @@ -33,6 +33,4 @@ return result.all; } -#if defined(__ARM_EABI__) -COMPILER_RT_ALIAS(__ashldi3, __aeabi_llsl) -#endif +AUX_DECLS(__ashldi3) diff --git a/compiler-rt/lib/builtins/ashlti3.c b/compiler-rt/lib/builtins/ashlti3.c --- a/compiler-rt/lib/builtins/ashlti3.c +++ b/compiler-rt/lib/builtins/ashlti3.c @@ -18,7 +18,7 @@ // Precondition: 0 <= b < bits_in_tword -COMPILER_RT_ABI ti_int __ashlti3(ti_int a, si_int b) { +DECLARE_LIBCALL(ti_int, __ashlti3, ti_int a, si_int b) { const int bits_in_dword = (int)(sizeof(di_int) * CHAR_BIT); twords input; twords result; diff --git a/compiler-rt/lib/builtins/ashrdi3.c b/compiler-rt/lib/builtins/ashrdi3.c --- a/compiler-rt/lib/builtins/ashrdi3.c +++ b/compiler-rt/lib/builtins/ashrdi3.c @@ -16,7 +16,7 @@ // Precondition: 0 <= b < bits_in_dword -COMPILER_RT_ABI di_int __ashrdi3(di_int a, int b) { +DECLARE_LIBCALL(di_int, __ashrdi3, di_int a, int b) { const int bits_in_word = (int)(sizeof(si_int) * CHAR_BIT); dwords input; dwords result; @@ -34,6 +34,4 @@ return result.all; } -#if defined(__ARM_EABI__) -COMPILER_RT_ALIAS(__ashrdi3, __aeabi_lasr) -#endif +AUX_DECLS(__ashrdi3) diff --git a/compiler-rt/lib/builtins/ashrti3.c b/compiler-rt/lib/builtins/ashrti3.c --- a/compiler-rt/lib/builtins/ashrti3.c +++ b/compiler-rt/lib/builtins/ashrti3.c @@ -18,7 +18,7 @@ // Precondition: 0 <= b < bits_in_tword -COMPILER_RT_ABI ti_int __ashrti3(ti_int a, si_int b) { +DECLARE_LIBCALL(ti_int, __ashrti3, ti_int a, si_int b) { const int bits_in_dword = (int)(sizeof(di_int) * CHAR_BIT); twords input; twords result; diff --git a/compiler-rt/lib/builtins/bswapdi2.c b/compiler-rt/lib/builtins/bswapdi2.c --- a/compiler-rt/lib/builtins/bswapdi2.c +++ b/compiler-rt/lib/builtins/bswapdi2.c @@ -12,7 +12,7 @@ #include "int_lib.h" -COMPILER_RT_ABI uint64_t __bswapdi2(uint64_t u) { +DECLARE_LIBCALL(uint64_t, __bswapdi2, uint64_t u) { return ( (((u)&0xff00000000000000ULL) >> 56) | (((u)&0x00ff000000000000ULL) >> 40) | diff --git a/compiler-rt/lib/builtins/bswapsi2.c b/compiler-rt/lib/builtins/bswapsi2.c --- a/compiler-rt/lib/builtins/bswapsi2.c +++ b/compiler-rt/lib/builtins/bswapsi2.c @@ -12,7 +12,7 @@ #include "int_lib.h" -COMPILER_RT_ABI uint32_t __bswapsi2(uint32_t u) { +DECLARE_LIBCALL(uint32_t, __bswapsi2, uint32_t u) { return ((((u)&0xff000000) >> 24) | (((u)&0x00ff0000) >> 8) | (((u)&0x0000ff00) << 8) | diff --git a/compiler-rt/lib/builtins/clzdi2.c b/compiler-rt/lib/builtins/clzdi2.c --- a/compiler-rt/lib/builtins/clzdi2.c +++ b/compiler-rt/lib/builtins/clzdi2.c @@ -26,7 +26,7 @@ // Precondition: a != 0 -COMPILER_RT_ABI int __clzdi2(di_int a) { +DECLARE_LIBCALL(int, __clzdi2, di_int a) { dwords x; x.all = a; const si_int f = -(x.s.high == 0); diff --git a/compiler-rt/lib/builtins/clzsi2.c b/compiler-rt/lib/builtins/clzsi2.c --- a/compiler-rt/lib/builtins/clzsi2.c +++ b/compiler-rt/lib/builtins/clzsi2.c @@ -16,7 +16,7 @@ // Precondition: a != 0 -COMPILER_RT_ABI int __clzsi2(si_int a) { +DECLARE_LIBCALL(int, __clzsi2, si_int a) { su_int x = (su_int)a; si_int t = ((x & 0xFFFF0000) == 0) << 4; // if (x is small) t = 16 else 0 x >>= 16 - t; // x = [0 - 0xFFFF] diff --git a/compiler-rt/lib/builtins/clzti2.c b/compiler-rt/lib/builtins/clzti2.c --- a/compiler-rt/lib/builtins/clzti2.c +++ b/compiler-rt/lib/builtins/clzti2.c @@ -18,7 +18,7 @@ // Precondition: a != 0 -COMPILER_RT_ABI int __clzti2(ti_int a) { +DECLARE_LIBCALL(int, __clzti2, ti_int a) { twords x; x.all = a; const di_int f = -(x.s.high == 0); diff --git a/compiler-rt/lib/builtins/cmpdi2.c b/compiler-rt/lib/builtins/cmpdi2.c --- a/compiler-rt/lib/builtins/cmpdi2.c +++ b/compiler-rt/lib/builtins/cmpdi2.c @@ -16,7 +16,7 @@ // if (a == b) returns 1 // if (a > b) returns 2 -COMPILER_RT_ABI si_int __cmpdi2(di_int a, di_int b) { +DECLARE_LIBCALL(si_int, __cmpdi2, di_int a, di_int b) { dwords x; x.all = a; dwords y; @@ -36,7 +36,7 @@ // Returns: if (a < b) returns -1 // if (a == b) returns 0 // if (a > b) returns 1 -COMPILER_RT_ABI si_int __aeabi_lcmp(di_int a, di_int b) { +DECLARE_LIBCALL(si_int, __aeabi_lcmp, di_int a, di_int b) { return __cmpdi2(a, b) - 1; } #endif diff --git a/compiler-rt/lib/builtins/cmpti2.c b/compiler-rt/lib/builtins/cmpti2.c --- a/compiler-rt/lib/builtins/cmpti2.c +++ b/compiler-rt/lib/builtins/cmpti2.c @@ -18,7 +18,7 @@ // if (a == b) returns 1 // if (a > b) returns 2 -COMPILER_RT_ABI si_int __cmpti2(ti_int a, ti_int b) { +DECLARE_LIBCALL(si_int, __cmpti2, ti_int a, ti_int b) { twords x; x.all = a; twords y; diff --git a/compiler-rt/lib/builtins/comparedf2.c b/compiler-rt/lib/builtins/comparedf2.c --- a/compiler-rt/lib/builtins/comparedf2.c +++ b/compiler-rt/lib/builtins/comparedf2.c @@ -41,7 +41,7 @@ enum LE_RESULT { LE_LESS = -1, LE_EQUAL = 0, LE_GREATER = 1, LE_UNORDERED = 1 }; -COMPILER_RT_ABI enum LE_RESULT __ledf2(fp_t a, fp_t b) { +DECLARE_LIBCALL(enum LE_RESULT, __ledf2, fp_t a, fp_t b) { const srep_t aInt = toRep(a); const srep_t bInt = toRep(b); @@ -96,7 +96,7 @@ GE_UNORDERED = -1 // Note: different from LE_UNORDERED }; -COMPILER_RT_ABI enum GE_RESULT __gedf2(fp_t a, fp_t b) { +DECLARE_LIBCALL(enum GE_RESULT, __gedf2, fp_t a, fp_t b) { const srep_t aInt = toRep(a); const srep_t bInt = toRep(b); @@ -126,20 +126,13 @@ COMPILER_RT_ALIAS(__gedf2, __gtdf2) -COMPILER_RT_ABI int -__unorddf2(fp_t a, fp_t b) { - const rep_t aAbs = toRep(a) & absMask; - const rep_t bAbs = toRep(b) & absMask; - return aAbs > infRep || bAbs > infRep; +DECLARE_LIBCALL(int, __unorddf2, fp_t a, fp_t b) { + const rep_t aAbs = toRep(a) & absMask; + const rep_t bAbs = toRep(b) & absMask; + return aAbs > infRep || bAbs > infRep; } -#if defined(__ARM_EABI__) -#if defined(COMPILER_RT_ARMHF_TARGET) -AEABI_RTABI int __aeabi_dcmpun(fp_t a, fp_t b) { return __unorddf2(a, b); } -#else -COMPILER_RT_ALIAS(__unorddf2, __aeabi_dcmpun) -#endif -#endif +AUX_DECLS(__unorddf2) #if defined(_WIN32) && !defined(__MINGW32__) // The alias mechanism doesn't work on Windows except for MinGW, so emit diff --git a/compiler-rt/lib/builtins/comparesf2.c b/compiler-rt/lib/builtins/comparesf2.c --- a/compiler-rt/lib/builtins/comparesf2.c +++ b/compiler-rt/lib/builtins/comparesf2.c @@ -41,7 +41,7 @@ enum LE_RESULT { LE_LESS = -1, LE_EQUAL = 0, LE_GREATER = 1, LE_UNORDERED = 1 }; -COMPILER_RT_ABI enum LE_RESULT __lesf2(fp_t a, fp_t b) { +DECLARE_LIBCALL(enum LE_RESULT, __lesf2, fp_t a, fp_t b) { const srep_t aInt = toRep(a); const srep_t bInt = toRep(b); @@ -96,7 +96,7 @@ GE_UNORDERED = -1 // Note: different from LE_UNORDERED }; -COMPILER_RT_ABI enum GE_RESULT __gesf2(fp_t a, fp_t b) { +DECLARE_LIBCALL(enum GE_RESULT, __gesf2, fp_t a, fp_t b) { const srep_t aInt = toRep(a); const srep_t bInt = toRep(b); @@ -126,20 +126,13 @@ COMPILER_RT_ALIAS(__gesf2, __gtsf2) -COMPILER_RT_ABI int -__unordsf2(fp_t a, fp_t b) { - const rep_t aAbs = toRep(a) & absMask; - const rep_t bAbs = toRep(b) & absMask; - return aAbs > infRep || bAbs > infRep; +DECLARE_LIBCALL(int, __unordsf2, fp_t a, fp_t b) { + const rep_t aAbs = toRep(a) & absMask; + const rep_t bAbs = toRep(b) & absMask; + return aAbs > infRep || bAbs > infRep; } -#if defined(__ARM_EABI__) -#if defined(COMPILER_RT_ARMHF_TARGET) -AEABI_RTABI int __aeabi_fcmpun(fp_t a, fp_t b) { return __unordsf2(a, b); } -#else -COMPILER_RT_ALIAS(__unordsf2, __aeabi_fcmpun) -#endif -#endif +AUX_DECLS(__unordsf2) #if defined(_WIN32) && !defined(__MINGW32__) // The alias mechanism doesn't work on Windows except for MinGW, so emit diff --git a/compiler-rt/lib/builtins/comparetf2.c b/compiler-rt/lib/builtins/comparetf2.c --- a/compiler-rt/lib/builtins/comparetf2.c +++ b/compiler-rt/lib/builtins/comparetf2.c @@ -42,7 +42,7 @@ #if defined(CRT_HAS_128BIT) && defined(CRT_LDBL_128BIT) enum LE_RESULT { LE_LESS = -1, LE_EQUAL = 0, LE_GREATER = 1, LE_UNORDERED = 1 }; -COMPILER_RT_ABI enum LE_RESULT __letf2(fp_t a, fp_t b) { +DECLARE_LIBCALL(enum LE_RESULT, __letf2, fp_t a, fp_t b) { const srep_t aInt = toRep(a); const srep_t bInt = toRep(b); @@ -95,7 +95,7 @@ GE_UNORDERED = -1 // Note: different from LE_UNORDERED }; -COMPILER_RT_ABI enum GE_RESULT __getf2(fp_t a, fp_t b) { +DECLARE_LIBCALL(enum GE_RESULT, __getf2, fp_t a, fp_t b) { const srep_t aInt = toRep(a); const srep_t bInt = toRep(b); @@ -125,7 +125,7 @@ COMPILER_RT_ALIAS(__getf2, __gttf2) -COMPILER_RT_ABI int __unordtf2(fp_t a, fp_t b) { +DECLARE_LIBCALL(int, __unordtf2, fp_t a, fp_t b) { const rep_t aAbs = toRep(a) & absMask; const rep_t bAbs = toRep(b) & absMask; return aAbs > infRep || bAbs > infRep; diff --git a/compiler-rt/lib/builtins/ctzdi2.c b/compiler-rt/lib/builtins/ctzdi2.c --- a/compiler-rt/lib/builtins/ctzdi2.c +++ b/compiler-rt/lib/builtins/ctzdi2.c @@ -26,7 +26,7 @@ // Precondition: a != 0 -COMPILER_RT_ABI int __ctzdi2(di_int a) { +DECLARE_LIBCALL(int, __ctzdi2, di_int a) { dwords x; x.all = a; const si_int f = -(x.s.low == 0); diff --git a/compiler-rt/lib/builtins/ctzsi2.c b/compiler-rt/lib/builtins/ctzsi2.c --- a/compiler-rt/lib/builtins/ctzsi2.c +++ b/compiler-rt/lib/builtins/ctzsi2.c @@ -16,7 +16,7 @@ // Precondition: a != 0 -COMPILER_RT_ABI int __ctzsi2(si_int a) { +DECLARE_LIBCALL(int, __ctzsi2, si_int a) { su_int x = (su_int)a; si_int t = ((x & 0x0000FFFF) == 0) << 4; // if (x has no small bits) t = 16 else 0 diff --git a/compiler-rt/lib/builtins/ctzti2.c b/compiler-rt/lib/builtins/ctzti2.c --- a/compiler-rt/lib/builtins/ctzti2.c +++ b/compiler-rt/lib/builtins/ctzti2.c @@ -18,7 +18,7 @@ // Precondition: a != 0 -COMPILER_RT_ABI int __ctzti2(ti_int a) { +DECLARE_LIBCALL(int, __ctzti2, ti_int a) { twords x; x.all = a; const di_int f = -(x.s.low == 0); diff --git a/compiler-rt/lib/builtins/divdc3.c b/compiler-rt/lib/builtins/divdc3.c --- a/compiler-rt/lib/builtins/divdc3.c +++ b/compiler-rt/lib/builtins/divdc3.c @@ -17,7 +17,7 @@ // Returns: the quotient of (a + ib) / (c + id) -COMPILER_RT_ABI Dcomplex __divdc3(double __a, double __b, double __c, +DECLARE_LIBCALL(Dcomplex, __divdc3, double __a, double __b, double __c, double __d) { int __ilogbw = 0; double __logbw = __compiler_rt_logb(crt_fmax(crt_fabs(__c), crt_fabs(__d))); diff --git a/compiler-rt/lib/builtins/divdf3.c b/compiler-rt/lib/builtins/divdf3.c --- a/compiler-rt/lib/builtins/divdf3.c +++ b/compiler-rt/lib/builtins/divdf3.c @@ -18,7 +18,7 @@ #define DOUBLE_PRECISION #include "fp_lib.h" -COMPILER_RT_ABI fp_t __divdf3(fp_t a, fp_t b) { +DECLARE_LIBCALL(fp_t, __divdf3, fp_t a, fp_t b) { const unsigned int aExponent = toRep(a) >> significandBits & maxExponent; const unsigned int bExponent = toRep(b) >> significandBits & maxExponent; @@ -201,10 +201,4 @@ } } -#if defined(__ARM_EABI__) -#if defined(COMPILER_RT_ARMHF_TARGET) -AEABI_RTABI fp_t __aeabi_ddiv(fp_t a, fp_t b) { return __divdf3(a, b); } -#else -COMPILER_RT_ALIAS(__divdf3, __aeabi_ddiv) -#endif -#endif +AUX_DECLS(__divdf3) diff --git a/compiler-rt/lib/builtins/divdi3.c b/compiler-rt/lib/builtins/divdi3.c --- a/compiler-rt/lib/builtins/divdi3.c +++ b/compiler-rt/lib/builtins/divdi3.c @@ -14,7 +14,7 @@ // Returns: a / b -COMPILER_RT_ABI di_int __divdi3(di_int a, di_int b) { +DECLARE_LIBCALL(di_int, __divdi3, di_int a, di_int b) { const int bits_in_dword_m1 = (int)(sizeof(di_int) * CHAR_BIT) - 1; di_int s_a = a >> bits_in_dword_m1; // s_a = a < 0 ? -1 : 0 di_int s_b = b >> bits_in_dword_m1; // s_b = b < 0 ? -1 : 0 diff --git a/compiler-rt/lib/builtins/divmoddi4.c b/compiler-rt/lib/builtins/divmoddi4.c --- a/compiler-rt/lib/builtins/divmoddi4.c +++ b/compiler-rt/lib/builtins/divmoddi4.c @@ -14,7 +14,7 @@ // Returns: a / b, *rem = a % b -COMPILER_RT_ABI di_int __divmoddi4(di_int a, di_int b, di_int *rem) { +DECLARE_LIBCALL(di_int, __divmoddi4, di_int a, di_int b, di_int *rem) { di_int d = __divdi3(a, b); *rem = a - (d * b); return d; diff --git a/compiler-rt/lib/builtins/divmodsi4.c b/compiler-rt/lib/builtins/divmodsi4.c --- a/compiler-rt/lib/builtins/divmodsi4.c +++ b/compiler-rt/lib/builtins/divmodsi4.c @@ -15,7 +15,7 @@ // Returns: a / b, *rem = a % b -COMPILER_RT_ABI si_int __divmodsi4(si_int a, si_int b, si_int *rem) { +DECLARE_LIBCALL(si_int, __divmodsi4, si_int a, si_int b, si_int *rem) { si_int d = __divsi3(a, b); *rem = a - (d * b); return d; diff --git a/compiler-rt/lib/builtins/divsc3.c b/compiler-rt/lib/builtins/divsc3.c --- a/compiler-rt/lib/builtins/divsc3.c +++ b/compiler-rt/lib/builtins/divsc3.c @@ -17,7 +17,7 @@ // Returns: the quotient of (a + ib) / (c + id) -COMPILER_RT_ABI Fcomplex __divsc3(float __a, float __b, float __c, float __d) { +DECLARE_LIBCALL(Fcomplex, __divsc3, float __a, float __b, float __c, float __d) { int __ilogbw = 0; float __logbw = __compiler_rt_logbf(crt_fmaxf(crt_fabsf(__c), crt_fabsf(__d))); diff --git a/compiler-rt/lib/builtins/divsf3.c b/compiler-rt/lib/builtins/divsf3.c --- a/compiler-rt/lib/builtins/divsf3.c +++ b/compiler-rt/lib/builtins/divsf3.c @@ -18,7 +18,7 @@ #define SINGLE_PRECISION #include "fp_lib.h" -COMPILER_RT_ABI fp_t __divsf3(fp_t a, fp_t b) { +DECLARE_LIBCALL(fp_t, __divsf3, fp_t a, fp_t b) { const unsigned int aExponent = toRep(a) >> significandBits & maxExponent; const unsigned int bExponent = toRep(b) >> significandBits & maxExponent; @@ -185,10 +185,4 @@ } } -#if defined(__ARM_EABI__) -#if defined(COMPILER_RT_ARMHF_TARGET) -AEABI_RTABI fp_t __aeabi_fdiv(fp_t a, fp_t b) { return __divsf3(a, b); } -#else -COMPILER_RT_ALIAS(__divsf3, __aeabi_fdiv) -#endif -#endif +AUX_DECLS(__divsf3) diff --git a/compiler-rt/lib/builtins/divsi3.c b/compiler-rt/lib/builtins/divsi3.c --- a/compiler-rt/lib/builtins/divsi3.c +++ b/compiler-rt/lib/builtins/divsi3.c @@ -14,7 +14,7 @@ // Returns: a / b -COMPILER_RT_ABI si_int __divsi3(si_int a, si_int b) { +DECLARE_LIBCALL(si_int, __divsi3, si_int a, si_int b) { const int bits_in_word_m1 = (int)(sizeof(si_int) * CHAR_BIT) - 1; si_int s_a = a >> bits_in_word_m1; // s_a = a < 0 ? -1 : 0 si_int s_b = b >> bits_in_word_m1; // s_b = b < 0 ? -1 : 0 @@ -30,6 +30,4 @@ return ((su_int)a / (su_int)b ^ s_a) - s_a; // negate if s_a == -1 } -#if defined(__ARM_EABI__) -COMPILER_RT_ALIAS(__divsi3, __aeabi_idiv) -#endif +AUX_DECLS(__divsi3) diff --git a/compiler-rt/lib/builtins/divtc3.c b/compiler-rt/lib/builtins/divtc3.c --- a/compiler-rt/lib/builtins/divtc3.c +++ b/compiler-rt/lib/builtins/divtc3.c @@ -17,7 +17,7 @@ // Returns: the quotient of (a + ib) / (c + id) -COMPILER_RT_ABI Lcomplex __divtc3(long double __a, long double __b, +DECLARE_LIBCALL(Lcomplex, __divtc3, long double __a, long double __b, long double __c, long double __d) { int __ilogbw = 0; long double __logbw = diff --git a/compiler-rt/lib/builtins/divtf3.c b/compiler-rt/lib/builtins/divtf3.c --- a/compiler-rt/lib/builtins/divtf3.c +++ b/compiler-rt/lib/builtins/divtf3.c @@ -19,7 +19,7 @@ #include "fp_lib.h" #if defined(CRT_HAS_128BIT) && defined(CRT_LDBL_128BIT) -COMPILER_RT_ABI fp_t __divtf3(fp_t a, fp_t b) { +DECLARE_LIBCALL(fp_t, __divtf3, fp_t a, fp_t b) { const unsigned int aExponent = toRep(a) >> significandBits & maxExponent; const unsigned int bExponent = toRep(b) >> significandBits & maxExponent; diff --git a/compiler-rt/lib/builtins/divti3.c b/compiler-rt/lib/builtins/divti3.c --- a/compiler-rt/lib/builtins/divti3.c +++ b/compiler-rt/lib/builtins/divti3.c @@ -16,7 +16,7 @@ // Returns: a / b -COMPILER_RT_ABI ti_int __divti3(ti_int a, ti_int b) { +DECLARE_LIBCALL(ti_int, __divti3, ti_int a, ti_int b) { const int bits_in_tword_m1 = (int)(sizeof(ti_int) * CHAR_BIT) - 1; ti_int s_a = a >> bits_in_tword_m1; // s_a = a < 0 ? -1 : 0 ti_int s_b = b >> bits_in_tword_m1; // s_b = b < 0 ? -1 : 0 diff --git a/compiler-rt/lib/builtins/divxc3.c b/compiler-rt/lib/builtins/divxc3.c --- a/compiler-rt/lib/builtins/divxc3.c +++ b/compiler-rt/lib/builtins/divxc3.c @@ -17,7 +17,7 @@ // Returns: the quotient of (a + ib) / (c + id) -COMPILER_RT_ABI Lcomplex __divxc3(long double __a, long double __b, +DECLARE_LIBCALL(Lcomplex, __divxc3, long double __a, long double __b, long double __c, long double __d) { int __ilogbw = 0; long double __logbw = crt_logbl(crt_fmaxl(crt_fabsl(__c), crt_fabsl(__d))); diff --git a/compiler-rt/lib/builtins/enable_execute_stack.c b/compiler-rt/lib/builtins/enable_execute_stack.c --- a/compiler-rt/lib/builtins/enable_execute_stack.c +++ b/compiler-rt/lib/builtins/enable_execute_stack.c @@ -38,7 +38,7 @@ // and the next 48 bytes as executable. Since the stack is normally rw- // that means changing the protection on those page(s) to rwx. -COMPILER_RT_ABI void __enable_execute_stack(void *addr) { +DECLARE_LIBCALL(void, __enable_execute_stack, void *addr) { #if _WIN32 MEMORY_BASIC_INFORMATION mbi; diff --git a/compiler-rt/lib/builtins/eprintf.c b/compiler-rt/lib/builtins/eprintf.c --- a/compiler-rt/lib/builtins/eprintf.c +++ b/compiler-rt/lib/builtins/eprintf.c @@ -18,8 +18,8 @@ #ifndef _WIN32 __attribute__((visibility("hidden"))) #endif -COMPILER_RT_ABI void -__eprintf(const char *format, const char *assertion_expression, +DECLARE_LIBCALL(void, __eprintf, + const char *format, const char *assertion_expression, const char *line, const char *file) { fprintf(stderr, format, assertion_expression, line, file); fflush(stderr); diff --git a/compiler-rt/lib/builtins/extenddftf2.c b/compiler-rt/lib/builtins/extenddftf2.c --- a/compiler-rt/lib/builtins/extenddftf2.c +++ b/compiler-rt/lib/builtins/extenddftf2.c @@ -14,7 +14,7 @@ #define DST_QUAD #include "fp_extend_impl.inc" -COMPILER_RT_ABI fp_t __extenddftf2(double a) { +DECLARE_LIBCALL(fp_t, __extenddftf2, double a) { return __extendXfYf2__(a); } diff --git a/compiler-rt/lib/builtins/extendhfsf2.c b/compiler-rt/lib/builtins/extendhfsf2.c --- a/compiler-rt/lib/builtins/extendhfsf2.c +++ b/compiler-rt/lib/builtins/extendhfsf2.c @@ -12,16 +12,10 @@ // Use a forwarding definition and noinline to implement a poor man's alias, // as there isn't a good cross-platform way of defining one. -COMPILER_RT_ABI NOINLINE float __extendhfsf2(uint16_t a) { +DECLARE_LIBCALL(NOINLINE float, __extendhfsf2, uint16_t a) { return __extendXfYf2__(a); } -COMPILER_RT_ABI float __gnu_h2f_ieee(uint16_t a) { return __extendhfsf2(a); } +DECLARE_LIBCALL(float, __gnu_h2f_ieee, uint16_t a) { return __extendhfsf2(a); } -#if defined(__ARM_EABI__) -#if defined(COMPILER_RT_ARMHF_TARGET) -AEABI_RTABI float __aeabi_h2f(uint16_t a) { return __extendhfsf2(a); } -#else -COMPILER_RT_ALIAS(__extendhfsf2, __aeabi_h2f) -#endif -#endif +AUX_DECLS(__extendhfsf2) diff --git a/compiler-rt/lib/builtins/extendsfdf2.c b/compiler-rt/lib/builtins/extendsfdf2.c --- a/compiler-rt/lib/builtins/extendsfdf2.c +++ b/compiler-rt/lib/builtins/extendsfdf2.c @@ -10,12 +10,6 @@ #define DST_DOUBLE #include "fp_extend_impl.inc" -COMPILER_RT_ABI double __extendsfdf2(float a) { return __extendXfYf2__(a); } +DECLARE_LIBCALL(double, __extendsfdf2, float a) { return __extendXfYf2__(a); } -#if defined(__ARM_EABI__) -#if defined(COMPILER_RT_ARMHF_TARGET) -AEABI_RTABI double __aeabi_f2d(float a) { return __extendsfdf2(a); } -#else -COMPILER_RT_ALIAS(__extendsfdf2, __aeabi_f2d) -#endif -#endif +AUX_DECLS(__extendsfdf2) diff --git a/compiler-rt/lib/builtins/extendsftf2.c b/compiler-rt/lib/builtins/extendsftf2.c --- a/compiler-rt/lib/builtins/extendsftf2.c +++ b/compiler-rt/lib/builtins/extendsftf2.c @@ -14,7 +14,7 @@ #define DST_QUAD #include "fp_extend_impl.inc" -COMPILER_RT_ABI fp_t __extendsftf2(float a) { +DECLARE_LIBCALL(fp_t, __extendsftf2, float a) { return __extendXfYf2__(a); } diff --git a/compiler-rt/lib/builtins/ffsdi2.c b/compiler-rt/lib/builtins/ffsdi2.c --- a/compiler-rt/lib/builtins/ffsdi2.c +++ b/compiler-rt/lib/builtins/ffsdi2.c @@ -15,7 +15,7 @@ // Returns: the index of the least significant 1-bit in a, or // the value zero if a is zero. The least significant bit is index one. -COMPILER_RT_ABI int __ffsdi2(di_int a) { +DECLARE_LIBCALL(int, __ffsdi2, di_int a) { dwords x; x.all = a; if (x.s.low == 0) { diff --git a/compiler-rt/lib/builtins/ffssi2.c b/compiler-rt/lib/builtins/ffssi2.c --- a/compiler-rt/lib/builtins/ffssi2.c +++ b/compiler-rt/lib/builtins/ffssi2.c @@ -15,7 +15,7 @@ // Returns: the index of the least significant 1-bit in a, or // the value zero if a is zero. The least significant bit is index one. -COMPILER_RT_ABI int __ffssi2(si_int a) { +DECLARE_LIBCALL(int, __ffssi2, si_int a) { if (a == 0) { return 0; } diff --git a/compiler-rt/lib/builtins/ffsti2.c b/compiler-rt/lib/builtins/ffsti2.c --- a/compiler-rt/lib/builtins/ffsti2.c +++ b/compiler-rt/lib/builtins/ffsti2.c @@ -17,7 +17,7 @@ // Returns: the index of the least significant 1-bit in a, or // the value zero if a is zero. The least significant bit is index one. -COMPILER_RT_ABI int __ffsti2(ti_int a) { +DECLARE_LIBCALL(int, __ffsti2, ti_int a) { twords x; x.all = a; if (x.s.low == 0) { diff --git a/compiler-rt/lib/builtins/fixdfdi.c b/compiler-rt/lib/builtins/fixdfdi.c --- a/compiler-rt/lib/builtins/fixdfdi.c +++ b/compiler-rt/lib/builtins/fixdfdi.c @@ -13,9 +13,9 @@ // Support for systems that have hardware floating-point; can set the invalid // flag as a side-effect of computation. -COMPILER_RT_ABI du_int __fixunsdfdi(double a); +DECLARE_LIBCALL(du_int, __fixunsdfdi, double a); -COMPILER_RT_ABI di_int __fixdfdi(double a) { +DECLARE_LIBCALL(di_int, __fixdfdi, double a) { if (a < 0.0) { return -__fixunsdfdi(-a); } @@ -31,14 +31,8 @@ typedef du_int fixuint_t; #include "fp_fixint_impl.inc" -COMPILER_RT_ABI di_int __fixdfdi(fp_t a) { return __fixint(a); } +DECLARE_LIBCALL(di_int, __fixdfdi, fp_t a) { return __fixint(a); } #endif -#if defined(__ARM_EABI__) -#if defined(COMPILER_RT_ARMHF_TARGET) -AEABI_RTABI di_int __aeabi_d2lz(fp_t a) { return __fixdfdi(a); } -#else -COMPILER_RT_ALIAS(__fixdfdi, __aeabi_d2lz) -#endif -#endif +AUX_DECLS(__fixdfdi) diff --git a/compiler-rt/lib/builtins/fixdfsi.c b/compiler-rt/lib/builtins/fixdfsi.c --- a/compiler-rt/lib/builtins/fixdfsi.c +++ b/compiler-rt/lib/builtins/fixdfsi.c @@ -12,12 +12,6 @@ typedef su_int fixuint_t; #include "fp_fixint_impl.inc" -COMPILER_RT_ABI si_int __fixdfsi(fp_t a) { return __fixint(a); } +DECLARE_LIBCALL(si_int, __fixdfsi, fp_t a) { return __fixint(a); } -#if defined(__ARM_EABI__) -#if defined(COMPILER_RT_ARMHF_TARGET) -AEABI_RTABI si_int __aeabi_d2iz(fp_t a) { return __fixdfsi(a); } -#else -COMPILER_RT_ALIAS(__fixdfsi, __aeabi_d2iz) -#endif -#endif +AUX_DECLS(__fixdfsi) diff --git a/compiler-rt/lib/builtins/fixdfti.c b/compiler-rt/lib/builtins/fixdfti.c --- a/compiler-rt/lib/builtins/fixdfti.c +++ b/compiler-rt/lib/builtins/fixdfti.c @@ -16,6 +16,6 @@ typedef tu_int fixuint_t; #include "fp_fixint_impl.inc" -COMPILER_RT_ABI ti_int __fixdfti(fp_t a) { return __fixint(a); } +DECLARE_LIBCALL(ti_int, __fixdfti, fp_t a) { return __fixint(a); } #endif // CRT_HAS_128BIT diff --git a/compiler-rt/lib/builtins/fixsfdi.c b/compiler-rt/lib/builtins/fixsfdi.c --- a/compiler-rt/lib/builtins/fixsfdi.c +++ b/compiler-rt/lib/builtins/fixsfdi.c @@ -13,9 +13,9 @@ // Support for systems that have hardware floating-point; can set the invalid // flag as a side-effect of computation. -COMPILER_RT_ABI du_int __fixunssfdi(float a); +DECLARE_LIBCALL(du_int, __fixunssfdi, float a); -COMPILER_RT_ABI di_int __fixsfdi(float a) { +DECLARE_LIBCALL(di_int, __fixsfdi, float a) { if (a < 0.0f) { return -__fixunssfdi(-a); } @@ -31,14 +31,8 @@ typedef du_int fixuint_t; #include "fp_fixint_impl.inc" -COMPILER_RT_ABI di_int __fixsfdi(fp_t a) { return __fixint(a); } +DECLARE_LIBCALL(di_int, __fixsfdi, fp_t a) { return __fixint(a); } #endif -#if defined(__ARM_EABI__) -#if defined(COMPILER_RT_ARMHF_TARGET) -AEABI_RTABI di_int __aeabi_f2lz(fp_t a) { return __fixsfdi(a); } -#else -COMPILER_RT_ALIAS(__fixsfdi, __aeabi_f2lz) -#endif -#endif +AUX_DECLS(__fixsfdi) diff --git a/compiler-rt/lib/builtins/fixsfsi.c b/compiler-rt/lib/builtins/fixsfsi.c --- a/compiler-rt/lib/builtins/fixsfsi.c +++ b/compiler-rt/lib/builtins/fixsfsi.c @@ -12,12 +12,6 @@ typedef su_int fixuint_t; #include "fp_fixint_impl.inc" -COMPILER_RT_ABI si_int __fixsfsi(fp_t a) { return __fixint(a); } +DECLARE_LIBCALL(si_int, __fixsfsi, fp_t a) { return __fixint(a); } -#if defined(__ARM_EABI__) -#if defined(COMPILER_RT_ARMHF_TARGET) -AEABI_RTABI si_int __aeabi_f2iz(fp_t a) { return __fixsfsi(a); } -#else -COMPILER_RT_ALIAS(__fixsfsi, __aeabi_f2iz) -#endif -#endif +AUX_DECLS(__fixsfsi) diff --git a/compiler-rt/lib/builtins/fixsfti.c b/compiler-rt/lib/builtins/fixsfti.c --- a/compiler-rt/lib/builtins/fixsfti.c +++ b/compiler-rt/lib/builtins/fixsfti.c @@ -16,6 +16,6 @@ typedef tu_int fixuint_t; #include "fp_fixint_impl.inc" -COMPILER_RT_ABI ti_int __fixsfti(fp_t a) { return __fixint(a); } +DECLARE_LIBCALL(ti_int, __fixsfti, fp_t a) { return __fixint(a); } #endif // CRT_HAS_128BIT diff --git a/compiler-rt/lib/builtins/fixtfdi.c b/compiler-rt/lib/builtins/fixtfdi.c --- a/compiler-rt/lib/builtins/fixtfdi.c +++ b/compiler-rt/lib/builtins/fixtfdi.c @@ -14,5 +14,5 @@ typedef du_int fixuint_t; #include "fp_fixint_impl.inc" -COMPILER_RT_ABI di_int __fixtfdi(fp_t a) { return __fixint(a); } +DECLARE_LIBCALL(di_int, __fixtfdi, fp_t a) { return __fixint(a); } #endif diff --git a/compiler-rt/lib/builtins/fixtfsi.c b/compiler-rt/lib/builtins/fixtfsi.c --- a/compiler-rt/lib/builtins/fixtfsi.c +++ b/compiler-rt/lib/builtins/fixtfsi.c @@ -14,5 +14,5 @@ typedef su_int fixuint_t; #include "fp_fixint_impl.inc" -COMPILER_RT_ABI si_int __fixtfsi(fp_t a) { return __fixint(a); } +DECLARE_LIBCALL(si_int, __fixtfsi, fp_t a) { return __fixint(a); } #endif diff --git a/compiler-rt/lib/builtins/fixtfti.c b/compiler-rt/lib/builtins/fixtfti.c --- a/compiler-rt/lib/builtins/fixtfti.c +++ b/compiler-rt/lib/builtins/fixtfti.c @@ -14,5 +14,5 @@ typedef tu_int fixuint_t; #include "fp_fixint_impl.inc" -COMPILER_RT_ABI ti_int __fixtfti(fp_t a) { return __fixint(a); } +DECLARE_LIBCALL(ti_int, __fixtfti, fp_t a) { return __fixint(a); } #endif diff --git a/compiler-rt/lib/builtins/fixunsdfdi.c b/compiler-rt/lib/builtins/fixunsdfdi.c --- a/compiler-rt/lib/builtins/fixunsdfdi.c +++ b/compiler-rt/lib/builtins/fixunsdfdi.c @@ -13,7 +13,7 @@ // Support for systems that have hardware floating-point; can set the invalid // flag as a side-effect of computation. -COMPILER_RT_ABI du_int __fixunsdfdi(double a) { +DECLARE_LIBCALL(du_int, __fixunsdfdi, double a) { if (a <= 0.0) return 0; su_int high = a / 4294967296.f; // a / 0x1p32f; @@ -29,14 +29,8 @@ typedef du_int fixuint_t; #include "fp_fixuint_impl.inc" -COMPILER_RT_ABI du_int __fixunsdfdi(fp_t a) { return __fixuint(a); } +DECLARE_LIBCALL(du_int, __fixunsdfdi, fp_t a) { return __fixuint(a); } #endif -#if defined(__ARM_EABI__) -#if defined(COMPILER_RT_ARMHF_TARGET) -AEABI_RTABI du_int __aeabi_d2ulz(fp_t a) { return __fixunsdfdi(a); } -#else -COMPILER_RT_ALIAS(__fixunsdfdi, __aeabi_d2ulz) -#endif -#endif +AUX_DECLS(__fixunsdfdi) diff --git a/compiler-rt/lib/builtins/fixunsdfsi.c b/compiler-rt/lib/builtins/fixunsdfsi.c --- a/compiler-rt/lib/builtins/fixunsdfsi.c +++ b/compiler-rt/lib/builtins/fixunsdfsi.c @@ -11,12 +11,6 @@ typedef su_int fixuint_t; #include "fp_fixuint_impl.inc" -COMPILER_RT_ABI su_int __fixunsdfsi(fp_t a) { return __fixuint(a); } +DECLARE_LIBCALL(su_int, __fixunsdfsi, fp_t a) { return __fixuint(a); } -#if defined(__ARM_EABI__) -#if defined(COMPILER_RT_ARMHF_TARGET) -AEABI_RTABI su_int __aeabi_d2uiz(fp_t a) { return __fixunsdfsi(a); } -#else -COMPILER_RT_ALIAS(__fixunsdfsi, __aeabi_d2uiz) -#endif -#endif +AUX_DECLS(__fixunsdfsi) diff --git a/compiler-rt/lib/builtins/fixunsdfti.c b/compiler-rt/lib/builtins/fixunsdfti.c --- a/compiler-rt/lib/builtins/fixunsdfti.c +++ b/compiler-rt/lib/builtins/fixunsdfti.c @@ -14,5 +14,5 @@ typedef tu_int fixuint_t; #include "fp_fixuint_impl.inc" -COMPILER_RT_ABI tu_int __fixunsdfti(fp_t a) { return __fixuint(a); } +DECLARE_LIBCALL(tu_int, __fixunsdfti, fp_t a) { return __fixuint(a); } #endif // CRT_HAS_128BIT diff --git a/compiler-rt/lib/builtins/fixunssfdi.c b/compiler-rt/lib/builtins/fixunssfdi.c --- a/compiler-rt/lib/builtins/fixunssfdi.c +++ b/compiler-rt/lib/builtins/fixunssfdi.c @@ -13,7 +13,7 @@ // Support for systems that have hardware floating-point; can set the invalid // flag as a side-effect of computation. -COMPILER_RT_ABI du_int __fixunssfdi(float a) { +DECLARE_LIBCALL(du_int, __fixunssfdi, float a) { if (a <= 0.0f) return 0; double da = a; @@ -30,14 +30,8 @@ typedef du_int fixuint_t; #include "fp_fixuint_impl.inc" -COMPILER_RT_ABI du_int __fixunssfdi(fp_t a) { return __fixuint(a); } +DECLARE_LIBCALL(du_int, __fixunssfdi, fp_t a) { return __fixuint(a); } #endif -#if defined(__ARM_EABI__) -#if defined(COMPILER_RT_ARMHF_TARGET) -AEABI_RTABI du_int __aeabi_f2ulz(fp_t a) { return __fixunssfdi(a); } -#else -COMPILER_RT_ALIAS(__fixunssfdi, __aeabi_f2ulz) -#endif -#endif +AUX_DECLS(__fixunssfdi) diff --git a/compiler-rt/lib/builtins/fixunssfsi.c b/compiler-rt/lib/builtins/fixunssfsi.c --- a/compiler-rt/lib/builtins/fixunssfsi.c +++ b/compiler-rt/lib/builtins/fixunssfsi.c @@ -15,12 +15,6 @@ typedef su_int fixuint_t; #include "fp_fixuint_impl.inc" -COMPILER_RT_ABI su_int __fixunssfsi(fp_t a) { return __fixuint(a); } +DECLARE_LIBCALL(su_int, __fixunssfsi, fp_t a) { return __fixuint(a); } -#if defined(__ARM_EABI__) -#if defined(COMPILER_RT_ARMHF_TARGET) -AEABI_RTABI su_int __aeabi_f2uiz(fp_t a) { return __fixunssfsi(a); } -#else -COMPILER_RT_ALIAS(__fixunssfsi, __aeabi_f2uiz) -#endif -#endif +AUX_DECLS(__fixunssfsi) diff --git a/compiler-rt/lib/builtins/fixunssfti.c b/compiler-rt/lib/builtins/fixunssfti.c --- a/compiler-rt/lib/builtins/fixunssfti.c +++ b/compiler-rt/lib/builtins/fixunssfti.c @@ -17,5 +17,5 @@ typedef tu_int fixuint_t; #include "fp_fixuint_impl.inc" -COMPILER_RT_ABI tu_int __fixunssfti(fp_t a) { return __fixuint(a); } +DECLARE_LIBCALL(tu_int, __fixunssfti, fp_t a) { return __fixuint(a); } #endif diff --git a/compiler-rt/lib/builtins/fixunstfdi.c b/compiler-rt/lib/builtins/fixunstfdi.c --- a/compiler-rt/lib/builtins/fixunstfdi.c +++ b/compiler-rt/lib/builtins/fixunstfdi.c @@ -13,5 +13,5 @@ typedef du_int fixuint_t; #include "fp_fixuint_impl.inc" -COMPILER_RT_ABI du_int __fixunstfdi(fp_t a) { return __fixuint(a); } +DECLARE_LIBCALL(du_int, __fixunstfdi, fp_t a) { return __fixuint(a); } #endif diff --git a/compiler-rt/lib/builtins/fixunstfsi.c b/compiler-rt/lib/builtins/fixunstfsi.c --- a/compiler-rt/lib/builtins/fixunstfsi.c +++ b/compiler-rt/lib/builtins/fixunstfsi.c @@ -13,5 +13,5 @@ typedef su_int fixuint_t; #include "fp_fixuint_impl.inc" -COMPILER_RT_ABI su_int __fixunstfsi(fp_t a) { return __fixuint(a); } +DECLARE_LIBCALL(su_int, __fixunstfsi, fp_t a) { return __fixuint(a); } #endif diff --git a/compiler-rt/lib/builtins/fixunstfti.c b/compiler-rt/lib/builtins/fixunstfti.c --- a/compiler-rt/lib/builtins/fixunstfti.c +++ b/compiler-rt/lib/builtins/fixunstfti.c @@ -13,5 +13,5 @@ typedef tu_int fixuint_t; #include "fp_fixuint_impl.inc" -COMPILER_RT_ABI tu_int __fixunstfti(fp_t a) { return __fixuint(a); } +DECLARE_LIBCALL(tu_int, __fixunstfti, fp_t a) { return __fixuint(a); } #endif diff --git a/compiler-rt/lib/builtins/fixunsxfdi.c b/compiler-rt/lib/builtins/fixunsxfdi.c --- a/compiler-rt/lib/builtins/fixunsxfdi.c +++ b/compiler-rt/lib/builtins/fixunsxfdi.c @@ -32,7 +32,7 @@ #pragma warning(disable : 4700) #endif -COMPILER_RT_ABI du_int __fixunsxfdi(long double a) { +DECLARE_LIBCALL(du_int, __fixunsxfdi, long double a) { long_double_bits fb; fb.f = a; int e = (fb.u.high.s.low & 0x00007FFF) - 16383; diff --git a/compiler-rt/lib/builtins/fixunsxfsi.c b/compiler-rt/lib/builtins/fixunsxfsi.c --- a/compiler-rt/lib/builtins/fixunsxfsi.c +++ b/compiler-rt/lib/builtins/fixunsxfsi.c @@ -32,7 +32,7 @@ #pragma warning(disable : 4700) #endif -COMPILER_RT_ABI su_int __fixunsxfsi(long double a) { +DECLARE_LIBCALL(su_int, __fixunsxfsi, long double a) { long_double_bits fb; fb.f = a; int e = (fb.u.high.s.low & 0x00007FFF) - 16383; diff --git a/compiler-rt/lib/builtins/fixunsxfti.c b/compiler-rt/lib/builtins/fixunsxfti.c --- a/compiler-rt/lib/builtins/fixunsxfti.c +++ b/compiler-rt/lib/builtins/fixunsxfti.c @@ -25,7 +25,7 @@ // eeee | 1mmm mmmm mmmm mmmm mmmm mmmm mmmm mmmm | mmmm mmmm mmmm mmmm mmmm // mmmm mmmm mmmm -COMPILER_RT_ABI tu_int __fixunsxfti(long double a) { +DECLARE_LIBCALL(tu_int, __fixunsxfti, long double a) { long_double_bits fb; fb.f = a; int e = (fb.u.high.s.low & 0x00007FFF) - 16383; diff --git a/compiler-rt/lib/builtins/fixxfdi.c b/compiler-rt/lib/builtins/fixxfdi.c --- a/compiler-rt/lib/builtins/fixxfdi.c +++ b/compiler-rt/lib/builtins/fixxfdi.c @@ -31,7 +31,7 @@ #pragma warning(disable : 4700) #endif -COMPILER_RT_ABI di_int __fixxfdi(long double a) { +DECLARE_LIBCALL(di_int, __fixxfdi, long double a) { const di_int di_max = (di_int)((~(du_int)0) / 2); const di_int di_min = -di_max - 1; long_double_bits fb; diff --git a/compiler-rt/lib/builtins/fixxfti.c b/compiler-rt/lib/builtins/fixxfti.c --- a/compiler-rt/lib/builtins/fixxfti.c +++ b/compiler-rt/lib/builtins/fixxfti.c @@ -24,7 +24,7 @@ // eeee | 1mmm mmmm mmmm mmmm mmmm mmmm mmmm mmmm | mmmm mmmm mmmm mmmm mmmm // mmmm mmmm mmmm -COMPILER_RT_ABI ti_int __fixxfti(long double a) { +DECLARE_LIBCALL(ti_int, __fixxfti, long double a) { const ti_int ti_max = (ti_int)((~(tu_int)0) / 2); const ti_int ti_min = -ti_max - 1; long_double_bits fb; diff --git a/compiler-rt/lib/builtins/floatdidf.c b/compiler-rt/lib/builtins/floatdidf.c --- a/compiler-rt/lib/builtins/floatdidf.c +++ b/compiler-rt/lib/builtins/floatdidf.c @@ -24,7 +24,7 @@ // Support for systems that have hardware floating-point; we'll set the inexact // flag as a side-effect of this computation. -COMPILER_RT_ABI double __floatdidf(di_int a) { +DECLARE_LIBCALL(double, __floatdidf, di_int a) { static const double twop52 = 4503599627370496.0; // 0x1.0p52 static const double twop32 = 4294967296.0; // 0x1.0p32 @@ -45,7 +45,7 @@ // flags to set, and we don't want to code-gen to an unknown soft-float // implementation. -COMPILER_RT_ABI double __floatdidf(di_int a) { +DECLARE_LIBCALL(double, __floatdidf, di_int a) { if (a == 0) return 0.0; const unsigned N = sizeof(di_int) * CHAR_BIT; @@ -94,10 +94,4 @@ } #endif -#if defined(__ARM_EABI__) -#if defined(COMPILER_RT_ARMHF_TARGET) -AEABI_RTABI double __aeabi_l2d(di_int a) { return __floatdidf(a); } -#else -COMPILER_RT_ALIAS(__floatdidf, __aeabi_l2d) -#endif -#endif +AUX_DECLS(__floatdidf) diff --git a/compiler-rt/lib/builtins/floatdisf.c b/compiler-rt/lib/builtins/floatdisf.c --- a/compiler-rt/lib/builtins/floatdisf.c +++ b/compiler-rt/lib/builtins/floatdisf.c @@ -19,7 +19,7 @@ #include "int_lib.h" -COMPILER_RT_ABI float __floatdisf(di_int a) { +DECLARE_LIBCALL(float, __floatdisf, di_int a) { if (a == 0) return 0.0F; const unsigned N = sizeof(di_int) * CHAR_BIT; @@ -66,10 +66,4 @@ return fb.f; } -#if defined(__ARM_EABI__) -#if defined(COMPILER_RT_ARMHF_TARGET) -AEABI_RTABI float __aeabi_l2f(di_int a) { return __floatdisf(a); } -#else -COMPILER_RT_ALIAS(__floatdisf, __aeabi_l2f) -#endif -#endif +AUX_DECLS(__floatdisf) diff --git a/compiler-rt/lib/builtins/floatditf.c b/compiler-rt/lib/builtins/floatditf.c --- a/compiler-rt/lib/builtins/floatditf.c +++ b/compiler-rt/lib/builtins/floatditf.c @@ -16,7 +16,7 @@ #include "fp_lib.h" #if defined(CRT_HAS_128BIT) && defined(CRT_LDBL_128BIT) -COMPILER_RT_ABI fp_t __floatditf(di_int a) { +DECLARE_LIBCALL(fp_t, __floatditf, di_int a) { const int aWidth = sizeof a * CHAR_BIT; diff --git a/compiler-rt/lib/builtins/floatdixf.c b/compiler-rt/lib/builtins/floatdixf.c --- a/compiler-rt/lib/builtins/floatdixf.c +++ b/compiler-rt/lib/builtins/floatdixf.c @@ -23,7 +23,7 @@ // eeee | 1mmm mmmm mmmm mmmm mmmm mmmm mmmm mmmm | mmmm mmmm mmmm mmmm mmmm // mmmm mmmm mmmm -COMPILER_RT_ABI long double __floatdixf(di_int a) { +DECLARE_LIBCALL(long double, __floatdixf, di_int a) { if (a == 0) return 0.0; const unsigned N = sizeof(di_int) * CHAR_BIT; diff --git a/compiler-rt/lib/builtins/floatsidf.c b/compiler-rt/lib/builtins/floatsidf.c --- a/compiler-rt/lib/builtins/floatsidf.c +++ b/compiler-rt/lib/builtins/floatsidf.c @@ -17,7 +17,7 @@ #include "int_lib.h" -COMPILER_RT_ABI fp_t __floatsidf(si_int a) { +DECLARE_LIBCALL(fp_t, __floatsidf, si_int a) { const int aWidth = sizeof a * CHAR_BIT; @@ -48,10 +48,4 @@ return fromRep(result | sign); } -#if defined(__ARM_EABI__) -#if defined(COMPILER_RT_ARMHF_TARGET) -AEABI_RTABI fp_t __aeabi_i2d(si_int a) { return __floatsidf(a); } -#else -COMPILER_RT_ALIAS(__floatsidf, __aeabi_i2d) -#endif -#endif +AUX_DECLS(__floatsidf) diff --git a/compiler-rt/lib/builtins/floatsisf.c b/compiler-rt/lib/builtins/floatsisf.c --- a/compiler-rt/lib/builtins/floatsisf.c +++ b/compiler-rt/lib/builtins/floatsisf.c @@ -17,7 +17,7 @@ #include "int_lib.h" -COMPILER_RT_ABI fp_t __floatsisf(int a) { +DECLARE_LIBCALL(fp_t, __floatsisf, int a) { const int aWidth = sizeof a * CHAR_BIT; @@ -56,10 +56,4 @@ return fromRep(result | sign); } -#if defined(__ARM_EABI__) -#if defined(COMPILER_RT_ARMHF_TARGET) -AEABI_RTABI fp_t __aeabi_i2f(int a) { return __floatsisf(a); } -#else -COMPILER_RT_ALIAS(__floatsisf, __aeabi_i2f) -#endif -#endif +AUX_DECLS(__floatsisf) diff --git a/compiler-rt/lib/builtins/floatsitf.c b/compiler-rt/lib/builtins/floatsitf.c --- a/compiler-rt/lib/builtins/floatsitf.c +++ b/compiler-rt/lib/builtins/floatsitf.c @@ -16,7 +16,7 @@ #include "fp_lib.h" #if defined(CRT_HAS_128BIT) && defined(CRT_LDBL_128BIT) -COMPILER_RT_ABI fp_t __floatsitf(int a) { +DECLARE_LIBCALL(fp_t, __floatsitf, int a) { const int aWidth = sizeof a * CHAR_BIT; diff --git a/compiler-rt/lib/builtins/floattidf.c b/compiler-rt/lib/builtins/floattidf.c --- a/compiler-rt/lib/builtins/floattidf.c +++ b/compiler-rt/lib/builtins/floattidf.c @@ -22,7 +22,7 @@ // seee eeee eeee mmmm mmmm mmmm mmmm mmmm | mmmm mmmm mmmm mmmm mmmm mmmm mmmm // mmmm -COMPILER_RT_ABI double __floattidf(ti_int a) { +DECLARE_LIBCALL(double, __floattidf, ti_int a) { if (a == 0) return 0.0; const unsigned N = sizeof(ti_int) * CHAR_BIT; diff --git a/compiler-rt/lib/builtins/floattisf.c b/compiler-rt/lib/builtins/floattisf.c --- a/compiler-rt/lib/builtins/floattisf.c +++ b/compiler-rt/lib/builtins/floattisf.c @@ -21,7 +21,7 @@ // seee eeee emmm mmmm mmmm mmmm mmmm mmmm -COMPILER_RT_ABI float __floattisf(ti_int a) { +DECLARE_LIBCALL(float, __floattisf, ti_int a) { if (a == 0) return 0.0F; const unsigned N = sizeof(ti_int) * CHAR_BIT; diff --git a/compiler-rt/lib/builtins/floattitf.c b/compiler-rt/lib/builtins/floattitf.c --- a/compiler-rt/lib/builtins/floattitf.c +++ b/compiler-rt/lib/builtins/floattitf.c @@ -26,7 +26,7 @@ // mmmm mmmm mmmm #if defined(CRT_HAS_128BIT) && defined(CRT_LDBL_128BIT) -COMPILER_RT_ABI fp_t __floattitf(ti_int a) { +DECLARE_LIBCALL(fp_t, __floattitf, ti_int a) { if (a == 0) return 0.0; const unsigned N = sizeof(ti_int) * CHAR_BIT; diff --git a/compiler-rt/lib/builtins/floattixf.c b/compiler-rt/lib/builtins/floattixf.c --- a/compiler-rt/lib/builtins/floattixf.c +++ b/compiler-rt/lib/builtins/floattixf.c @@ -23,7 +23,7 @@ // eeee | 1mmm mmmm mmmm mmmm mmmm mmmm mmmm mmmm | mmmm mmmm mmmm mmmm mmmm // mmmm mmmm mmmm -COMPILER_RT_ABI long double __floattixf(ti_int a) { +DECLARE_LIBCALL(long double, __floattixf, ti_int a) { if (a == 0) return 0.0; const unsigned N = sizeof(ti_int) * CHAR_BIT; diff --git a/compiler-rt/lib/builtins/floatundidf.c b/compiler-rt/lib/builtins/floatundidf.c --- a/compiler-rt/lib/builtins/floatundidf.c +++ b/compiler-rt/lib/builtins/floatundidf.c @@ -24,7 +24,7 @@ // Support for systems that have hardware floating-point; we'll set the inexact // flag as a side-effect of this computation. -COMPILER_RT_ABI double __floatundidf(du_int a) { +DECLARE_LIBCALL(double, __floatundidf, du_int a) { static const double twop52 = 4503599627370496.0; // 0x1.0p52 static const double twop84 = 19342813113834066795298816.0; // 0x1.0p84 static const double twop84_plus_twop52 = @@ -51,7 +51,7 @@ // flags to set, and we don't want to code-gen to an unknown soft-float // implementation. -COMPILER_RT_ABI double __floatundidf(du_int a) { +DECLARE_LIBCALL(double, __floatundidf, du_int a) { if (a == 0) return 0.0; const unsigned N = sizeof(du_int) * CHAR_BIT; @@ -97,10 +97,4 @@ } #endif -#if defined(__ARM_EABI__) -#if defined(COMPILER_RT_ARMHF_TARGET) -AEABI_RTABI double __aeabi_ul2d(du_int a) { return __floatundidf(a); } -#else -COMPILER_RT_ALIAS(__floatundidf, __aeabi_ul2d) -#endif -#endif +AUX_DECLS(__floatundidf) diff --git a/compiler-rt/lib/builtins/floatundisf.c b/compiler-rt/lib/builtins/floatundisf.c --- a/compiler-rt/lib/builtins/floatundisf.c +++ b/compiler-rt/lib/builtins/floatundisf.c @@ -19,7 +19,7 @@ #include "int_lib.h" -COMPILER_RT_ABI float __floatundisf(du_int a) { +DECLARE_LIBCALL(float, __floatundisf, du_int a) { if (a == 0) return 0.0F; const unsigned N = sizeof(du_int) * CHAR_BIT; @@ -63,10 +63,4 @@ return fb.f; } -#if defined(__ARM_EABI__) -#if defined(COMPILER_RT_ARMHF_TARGET) -AEABI_RTABI float __aeabi_ul2f(du_int a) { return __floatundisf(a); } -#else -COMPILER_RT_ALIAS(__floatundisf, __aeabi_ul2f) -#endif -#endif +AUX_DECLS(__floatundisf) diff --git a/compiler-rt/lib/builtins/floatunditf.c b/compiler-rt/lib/builtins/floatunditf.c --- a/compiler-rt/lib/builtins/floatunditf.c +++ b/compiler-rt/lib/builtins/floatunditf.c @@ -16,7 +16,7 @@ #include "fp_lib.h" #if defined(CRT_HAS_128BIT) && defined(CRT_LDBL_128BIT) -COMPILER_RT_ABI fp_t __floatunditf(du_int a) { +DECLARE_LIBCALL(fp_t, __floatunditf, du_int a) { const int aWidth = sizeof a * CHAR_BIT; diff --git a/compiler-rt/lib/builtins/floatundixf.c b/compiler-rt/lib/builtins/floatundixf.c --- a/compiler-rt/lib/builtins/floatundixf.c +++ b/compiler-rt/lib/builtins/floatundixf.c @@ -22,7 +22,7 @@ // gggg gggg gggg gggg gggg gggg gggg gggg | gggg gggg gggg gggg seee eeee eeee // eeee | 1mmm mmmm mmmm mmmm mmmm mmmm mmmm mmmm | mmmm mmmm mmmm mmmm mmmm // mmmm mmmm mmmm -COMPILER_RT_ABI long double __floatundixf(du_int a) { +DECLARE_LIBCALL(long double, __floatundixf, du_int a) { if (a == 0) return 0.0; const unsigned N = sizeof(du_int) * CHAR_BIT; diff --git a/compiler-rt/lib/builtins/floatunsidf.c b/compiler-rt/lib/builtins/floatunsidf.c --- a/compiler-rt/lib/builtins/floatunsidf.c +++ b/compiler-rt/lib/builtins/floatunsidf.c @@ -17,7 +17,7 @@ #include "int_lib.h" -COMPILER_RT_ABI fp_t __floatunsidf(su_int a) { +DECLARE_LIBCALL(fp_t, __floatunsidf, su_int a) { const int aWidth = sizeof a * CHAR_BIT; @@ -38,10 +38,4 @@ return fromRep(result); } -#if defined(__ARM_EABI__) -#if defined(COMPILER_RT_ARMHF_TARGET) -AEABI_RTABI fp_t __aeabi_ui2d(su_int a) { return __floatunsidf(a); } -#else -COMPILER_RT_ALIAS(__floatunsidf, __aeabi_ui2d) -#endif -#endif +AUX_DECLS(__floatunsidf) diff --git a/compiler-rt/lib/builtins/floatunsisf.c b/compiler-rt/lib/builtins/floatunsisf.c --- a/compiler-rt/lib/builtins/floatunsisf.c +++ b/compiler-rt/lib/builtins/floatunsisf.c @@ -17,7 +17,7 @@ #include "int_lib.h" -COMPILER_RT_ABI fp_t __floatunsisf(unsigned int a) { +DECLARE_LIBCALL(fp_t, __floatunsisf, unsigned int a) { const int aWidth = sizeof a * CHAR_BIT; @@ -48,10 +48,4 @@ return fromRep(result); } -#if defined(__ARM_EABI__) -#if defined(COMPILER_RT_ARMHF_TARGET) -AEABI_RTABI fp_t __aeabi_ui2f(unsigned int a) { return __floatunsisf(a); } -#else -COMPILER_RT_ALIAS(__floatunsisf, __aeabi_ui2f) -#endif -#endif +AUX_DECLS(__floatunsisf) diff --git a/compiler-rt/lib/builtins/floatunsitf.c b/compiler-rt/lib/builtins/floatunsitf.c --- a/compiler-rt/lib/builtins/floatunsitf.c +++ b/compiler-rt/lib/builtins/floatunsitf.c @@ -16,7 +16,7 @@ #include "fp_lib.h" #if defined(CRT_HAS_128BIT) && defined(CRT_LDBL_128BIT) -COMPILER_RT_ABI fp_t __floatunsitf(unsigned int a) { +DECLARE_LIBCALL(fp_t, __floatunsitf, unsigned int a) { const int aWidth = sizeof a * CHAR_BIT; diff --git a/compiler-rt/lib/builtins/floatuntidf.c b/compiler-rt/lib/builtins/floatuntidf.c --- a/compiler-rt/lib/builtins/floatuntidf.c +++ b/compiler-rt/lib/builtins/floatuntidf.c @@ -22,7 +22,7 @@ // seee eeee eeee mmmm mmmm mmmm mmmm mmmm | mmmm mmmm mmmm mmmm mmmm mmmm mmmm // mmmm -COMPILER_RT_ABI double __floatuntidf(tu_int a) { +DECLARE_LIBCALL(double, __floatuntidf, tu_int a) { if (a == 0) return 0.0; const unsigned N = sizeof(tu_int) * CHAR_BIT; diff --git a/compiler-rt/lib/builtins/floatuntisf.c b/compiler-rt/lib/builtins/floatuntisf.c --- a/compiler-rt/lib/builtins/floatuntisf.c +++ b/compiler-rt/lib/builtins/floatuntisf.c @@ -21,7 +21,7 @@ // seee eeee emmm mmmm mmmm mmmm mmmm mmmm -COMPILER_RT_ABI float __floatuntisf(tu_int a) { +DECLARE_LIBCALL(float, __floatuntisf, tu_int a) { if (a == 0) return 0.0F; const unsigned N = sizeof(tu_int) * CHAR_BIT; diff --git a/compiler-rt/lib/builtins/floatuntitf.c b/compiler-rt/lib/builtins/floatuntitf.c --- a/compiler-rt/lib/builtins/floatuntitf.c +++ b/compiler-rt/lib/builtins/floatuntitf.c @@ -26,7 +26,7 @@ // mmmm mmmm mmmm #if defined(CRT_HAS_128BIT) && defined(CRT_LDBL_128BIT) -COMPILER_RT_ABI fp_t __floatuntitf(tu_int a) { +DECLARE_LIBCALL(fp_t, __floatuntitf, tu_int a) { if (a == 0) return 0.0; const unsigned N = sizeof(tu_int) * CHAR_BIT; diff --git a/compiler-rt/lib/builtins/floatuntixf.c b/compiler-rt/lib/builtins/floatuntixf.c --- a/compiler-rt/lib/builtins/floatuntixf.c +++ b/compiler-rt/lib/builtins/floatuntixf.c @@ -23,7 +23,7 @@ // eeee | 1mmm mmmm mmmm mmmm mmmm mmmm mmmm mmmm | mmmm mmmm mmmm mmmm mmmm // mmmm mmmm mmmm -COMPILER_RT_ABI long double __floatuntixf(tu_int a) { +DECLARE_LIBCALL(long double, __floatuntixf, tu_int a) { if (a == 0) return 0.0; const unsigned N = sizeof(tu_int) * CHAR_BIT; diff --git a/compiler-rt/lib/builtins/fp_lib.h b/compiler-rt/lib/builtins/fp_lib.h --- a/compiler-rt/lib/builtins/fp_lib.h +++ b/compiler-rt/lib/builtins/fp_lib.h @@ -54,7 +54,7 @@ *hi = product >> 32; *lo = product; } -COMPILER_RT_ABI fp_t __addsf3(fp_t a, fp_t b); +DECLARE_LIBCALL(fp_t, __addsf3, fp_t a, fp_t b); #elif defined DOUBLE_PRECISION @@ -97,7 +97,7 @@ #undef loWord #undef hiWord -COMPILER_RT_ABI fp_t __adddf3(fp_t a, fp_t b); +DECLARE_LIBCALL(fp_t, __adddf3, fp_t a, fp_t b); #elif defined QUAD_PRECISION #if __LDBL_MANT_DIG__ == 113 && defined(__SIZEOF_INT128__) diff --git a/compiler-rt/lib/builtins/gcc_personality_v0.c b/compiler-rt/lib/builtins/gcc_personality_v0.c --- a/compiler-rt/lib/builtins/gcc_personality_v0.c +++ b/compiler-rt/lib/builtins/gcc_personality_v0.c @@ -160,16 +160,16 @@ #if __USING_SJLJ_EXCEPTIONS__ // the setjump-longjump based exceptions personality routine has a // different name -COMPILER_RT_ABI _Unwind_Reason_Code __gcc_personality_sj0( +DECLARE_LIBCALL(_Unwind_Reason_Code, __gcc_personality_sj0, int version, _Unwind_Action actions, uint64_t exceptionClass, struct _Unwind_Exception *exceptionObject, struct _Unwind_Context *context) #elif USING_ARM_EHABI // The ARM EHABI personality routine has a different signature. -COMPILER_RT_ABI _Unwind_Reason_Code __gcc_personality_v0( +DECLARE_LIBCALL(_Unwind_Reason_Code, __gcc_personality_v0, _Unwind_State state, struct _Unwind_Exception *exceptionObject, struct _Unwind_Context *context) #else -COMPILER_RT_ABI _Unwind_Reason_Code __gcc_personality_v0( +DECLARE_LIBCALL(_Unwind_Reason_Code, __gcc_personality_v0, int version, _Unwind_Action actions, uint64_t exceptionClass, struct _Unwind_Exception *exceptionObject, struct _Unwind_Context *context) #endif diff --git a/compiler-rt/lib/builtins/int_lib.h b/compiler-rt/lib/builtins/int_lib.h --- a/compiler-rt/lib/builtins/int_lib.h +++ b/compiler-rt/lib/builtins/int_lib.h @@ -21,16 +21,19 @@ // ABI macro definitions #if __ARM_EABI__ -#ifdef COMPILER_RT_ARMHF_TARGET -#define COMPILER_RT_ABI -#else -#define COMPILER_RT_ABI __attribute__((__pcs__("aapcs"))) +#include "arm-libcall-overrides.h" #endif -#else + +#ifndef COMPILER_RT_ABI #define COMPILER_RT_ABI #endif -#define AEABI_RTABI __attribute__((__pcs__("aapcs"))) +#include "libcall-set-defaults.inc" + +#define DECLARE_LIBCALL(rettype, libcall_name, ...) \ + ATTR##libcall_name rettype libcall_name(__VA_ARGS__) + +#define AUX_DECLS(libcall_name) AUX_DECLS##libcall_name #if defined(_MSC_VER) && !defined(__clang__) #define ALWAYS_INLINE __forceinline @@ -92,18 +95,18 @@ // Include internal utility function declarations. #include "int_util.h" -COMPILER_RT_ABI int __paritysi2(si_int a); -COMPILER_RT_ABI int __paritydi2(di_int a); +DECLARE_LIBCALL(int, __paritysi2, si_int a); +DECLARE_LIBCALL(int, __paritydi2, di_int a); -COMPILER_RT_ABI di_int __divdi3(di_int a, di_int b); -COMPILER_RT_ABI si_int __divsi3(si_int a, si_int b); -COMPILER_RT_ABI su_int __udivsi3(su_int n, su_int d); +DECLARE_LIBCALL(di_int, __divdi3, di_int a, di_int b); +DECLARE_LIBCALL(si_int, __divsi3, si_int a, si_int b); +DECLARE_LIBCALL(su_int, __udivsi3, su_int n, su_int d); -COMPILER_RT_ABI su_int __udivmodsi4(su_int a, su_int b, su_int *rem); -COMPILER_RT_ABI du_int __udivmoddi4(du_int a, du_int b, du_int *rem); +DECLARE_LIBCALL(su_int, __udivmodsi4, su_int a, su_int b, su_int *rem); +DECLARE_LIBCALL(du_int, __udivmoddi4, du_int a, du_int b, du_int *rem); #ifdef CRT_HAS_128BIT -COMPILER_RT_ABI int __clzti2(ti_int a); -COMPILER_RT_ABI tu_int __udivmodti4(tu_int a, tu_int b, tu_int *rem); +DECLARE_LIBCALL(int, __clzti2, ti_int a); +DECLARE_LIBCALL(tu_int, __udivmodti4, tu_int a, tu_int b, tu_int *rem); #endif // Definitions for builtins unavailable on MSVC diff --git a/compiler-rt/lib/builtins/libcall-set-defaults.inc b/compiler-rt/lib/builtins/libcall-set-defaults.inc new file mode 100644 --- /dev/null +++ b/compiler-rt/lib/builtins/libcall-set-defaults.inc @@ -0,0 +1,1060 @@ +//===-- libcall-set-defaults.inc ------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +// +// This file is not part of the interface of this library. +// +// The particular target implementation can define some macroses customizing +// target-specific aliases, calling conventions, etc. After that, this file +// sets the default values for everything not yet set. +// +// DO NOT EDIT! This file was auto-generated by: +// +// ../../utils/generate_builtins_macro.sh > libcall-set-defaults.inc +// +//===----------------------------------------------------------------------===// + +#ifndef LIBCALL_DEFAULTS +#define LIBCALL_DEFAULTS + +// Special LibCall attributes, empty by default +#ifndef ATTR__absvdi2 +#define ATTR__absvdi2 COMPILER_RT_ABI +#endif +#ifndef ATTR__absvsi2 +#define ATTR__absvsi2 COMPILER_RT_ABI +#endif +#ifndef ATTR__absvti2 +#define ATTR__absvti2 COMPILER_RT_ABI +#endif +#ifndef ATTR__adddf3 +#define ATTR__adddf3 COMPILER_RT_ABI +#endif +#ifndef ATTR__addsf3 +#define ATTR__addsf3 COMPILER_RT_ABI +#endif +#ifndef ATTR__addtf3 +#define ATTR__addtf3 COMPILER_RT_ABI +#endif +#ifndef ATTR__addvdi3 +#define ATTR__addvdi3 COMPILER_RT_ABI +#endif +#ifndef ATTR__addvsi3 +#define ATTR__addvsi3 COMPILER_RT_ABI +#endif +#ifndef ATTR__addvti3 +#define ATTR__addvti3 COMPILER_RT_ABI +#endif +#ifndef ATTR__aeabi_lcmp +#define ATTR__aeabi_lcmp COMPILER_RT_ABI +#endif +#ifndef ATTR__aeabi_ulcmp +#define ATTR__aeabi_ulcmp COMPILER_RT_ABI +#endif +#ifndef ATTR__ashldi3 +#define ATTR__ashldi3 COMPILER_RT_ABI +#endif +#ifndef ATTR__ashlti3 +#define ATTR__ashlti3 COMPILER_RT_ABI +#endif +#ifndef ATTR__ashrdi3 +#define ATTR__ashrdi3 COMPILER_RT_ABI +#endif +#ifndef ATTR__ashrti3 +#define ATTR__ashrti3 COMPILER_RT_ABI +#endif +#ifndef ATTR__bswapdi2 +#define ATTR__bswapdi2 COMPILER_RT_ABI +#endif +#ifndef ATTR__bswapsi2 +#define ATTR__bswapsi2 COMPILER_RT_ABI +#endif +#ifndef ATTR__clzdi2 +#define ATTR__clzdi2 COMPILER_RT_ABI +#endif +#ifndef ATTR__clzsi2 +#define ATTR__clzsi2 COMPILER_RT_ABI +#endif +#ifndef ATTR__clzti2 +#define ATTR__clzti2 COMPILER_RT_ABI +#endif +#ifndef ATTR__cmpdi2 +#define ATTR__cmpdi2 COMPILER_RT_ABI +#endif +#ifndef ATTR__cmpti2 +#define ATTR__cmpti2 COMPILER_RT_ABI +#endif +#ifndef ATTR__ctzdi2 +#define ATTR__ctzdi2 COMPILER_RT_ABI +#endif +#ifndef ATTR__ctzsi2 +#define ATTR__ctzsi2 COMPILER_RT_ABI +#endif +#ifndef ATTR__ctzti2 +#define ATTR__ctzti2 COMPILER_RT_ABI +#endif +#ifndef ATTR__divdc3 +#define ATTR__divdc3 COMPILER_RT_ABI +#endif +#ifndef ATTR__divdf3 +#define ATTR__divdf3 COMPILER_RT_ABI +#endif +#ifndef ATTR__divdi3 +#define ATTR__divdi3 COMPILER_RT_ABI +#endif +#ifndef ATTR__divmoddi4 +#define ATTR__divmoddi4 COMPILER_RT_ABI +#endif +#ifndef ATTR__divmodsi4 +#define ATTR__divmodsi4 COMPILER_RT_ABI +#endif +#ifndef ATTR__divsc3 +#define ATTR__divsc3 COMPILER_RT_ABI +#endif +#ifndef ATTR__divsf3 +#define ATTR__divsf3 COMPILER_RT_ABI +#endif +#ifndef ATTR__divsi3 +#define ATTR__divsi3 COMPILER_RT_ABI +#endif +#ifndef ATTR__divtc3 +#define ATTR__divtc3 COMPILER_RT_ABI +#endif +#ifndef ATTR__divtf3 +#define ATTR__divtf3 COMPILER_RT_ABI +#endif +#ifndef ATTR__divti3 +#define ATTR__divti3 COMPILER_RT_ABI +#endif +#ifndef ATTR__divxc3 +#define ATTR__divxc3 COMPILER_RT_ABI +#endif +#ifndef ATTR__dtoi64 +#define ATTR__dtoi64 COMPILER_RT_ABI +#endif +#ifndef ATTR__dtou64 +#define ATTR__dtou64 COMPILER_RT_ABI +#endif +#ifndef ATTR__enable_execute_stack +#define ATTR__enable_execute_stack COMPILER_RT_ABI +#endif +#ifndef ATTR__eprintf +#define ATTR__eprintf COMPILER_RT_ABI +#endif +#ifndef ATTR__extenddftf2 +#define ATTR__extenddftf2 COMPILER_RT_ABI +#endif +#ifndef ATTR__extendhfsf2 +#define ATTR__extendhfsf2 COMPILER_RT_ABI +#endif +#ifndef ATTR__extendsfdf2 +#define ATTR__extendsfdf2 COMPILER_RT_ABI +#endif +#ifndef ATTR__extendsftf2 +#define ATTR__extendsftf2 COMPILER_RT_ABI +#endif +#ifndef ATTR__ffsdi2 +#define ATTR__ffsdi2 COMPILER_RT_ABI +#endif +#ifndef ATTR__ffssi2 +#define ATTR__ffssi2 COMPILER_RT_ABI +#endif +#ifndef ATTR__ffsti2 +#define ATTR__ffsti2 COMPILER_RT_ABI +#endif +#ifndef ATTR__fixdfdi +#define ATTR__fixdfdi COMPILER_RT_ABI +#endif +#ifndef ATTR__fixdfsi +#define ATTR__fixdfsi COMPILER_RT_ABI +#endif +#ifndef ATTR__fixdfti +#define ATTR__fixdfti COMPILER_RT_ABI +#endif +#ifndef ATTR__fixsfdi +#define ATTR__fixsfdi COMPILER_RT_ABI +#endif +#ifndef ATTR__fixsfsi +#define ATTR__fixsfsi COMPILER_RT_ABI +#endif +#ifndef ATTR__fixsfti +#define ATTR__fixsfti COMPILER_RT_ABI +#endif +#ifndef ATTR__fixtfdi +#define ATTR__fixtfdi COMPILER_RT_ABI +#endif +#ifndef ATTR__fixtfsi +#define ATTR__fixtfsi COMPILER_RT_ABI +#endif +#ifndef ATTR__fixtfti +#define ATTR__fixtfti COMPILER_RT_ABI +#endif +#ifndef ATTR__fixunsdfdi +#define ATTR__fixunsdfdi COMPILER_RT_ABI +#endif +#ifndef ATTR__fixunsdfsi +#define ATTR__fixunsdfsi COMPILER_RT_ABI +#endif +#ifndef ATTR__fixunsdfti +#define ATTR__fixunsdfti COMPILER_RT_ABI +#endif +#ifndef ATTR__fixunssfdi +#define ATTR__fixunssfdi COMPILER_RT_ABI +#endif +#ifndef ATTR__fixunssfsi +#define ATTR__fixunssfsi COMPILER_RT_ABI +#endif +#ifndef ATTR__fixunssfti +#define ATTR__fixunssfti COMPILER_RT_ABI +#endif +#ifndef ATTR__fixunstfdi +#define ATTR__fixunstfdi COMPILER_RT_ABI +#endif +#ifndef ATTR__fixunstfsi +#define ATTR__fixunstfsi COMPILER_RT_ABI +#endif +#ifndef ATTR__fixunstfti +#define ATTR__fixunstfti COMPILER_RT_ABI +#endif +#ifndef ATTR__fixunsxfdi +#define ATTR__fixunsxfdi COMPILER_RT_ABI +#endif +#ifndef ATTR__fixunsxfsi +#define ATTR__fixunsxfsi COMPILER_RT_ABI +#endif +#ifndef ATTR__fixunsxfti +#define ATTR__fixunsxfti COMPILER_RT_ABI +#endif +#ifndef ATTR__fixxfdi +#define ATTR__fixxfdi COMPILER_RT_ABI +#endif +#ifndef ATTR__fixxfti +#define ATTR__fixxfti COMPILER_RT_ABI +#endif +#ifndef ATTR__floatdidf +#define ATTR__floatdidf COMPILER_RT_ABI +#endif +#ifndef ATTR__floatdisf +#define ATTR__floatdisf COMPILER_RT_ABI +#endif +#ifndef ATTR__floatditf +#define ATTR__floatditf COMPILER_RT_ABI +#endif +#ifndef ATTR__floatdixf +#define ATTR__floatdixf COMPILER_RT_ABI +#endif +#ifndef ATTR__floatsidf +#define ATTR__floatsidf COMPILER_RT_ABI +#endif +#ifndef ATTR__floatsisf +#define ATTR__floatsisf COMPILER_RT_ABI +#endif +#ifndef ATTR__floatsitf +#define ATTR__floatsitf COMPILER_RT_ABI +#endif +#ifndef ATTR__floattidf +#define ATTR__floattidf COMPILER_RT_ABI +#endif +#ifndef ATTR__floattisf +#define ATTR__floattisf COMPILER_RT_ABI +#endif +#ifndef ATTR__floattitf +#define ATTR__floattitf COMPILER_RT_ABI +#endif +#ifndef ATTR__floattixf +#define ATTR__floattixf COMPILER_RT_ABI +#endif +#ifndef ATTR__floatundidf +#define ATTR__floatundidf COMPILER_RT_ABI +#endif +#ifndef ATTR__floatundisf +#define ATTR__floatundisf COMPILER_RT_ABI +#endif +#ifndef ATTR__floatunditf +#define ATTR__floatunditf COMPILER_RT_ABI +#endif +#ifndef ATTR__floatundixf +#define ATTR__floatundixf COMPILER_RT_ABI +#endif +#ifndef ATTR__floatunsidf +#define ATTR__floatunsidf COMPILER_RT_ABI +#endif +#ifndef ATTR__floatunsisf +#define ATTR__floatunsisf COMPILER_RT_ABI +#endif +#ifndef ATTR__floatunsitf +#define ATTR__floatunsitf COMPILER_RT_ABI +#endif +#ifndef ATTR__floatuntidf +#define ATTR__floatuntidf COMPILER_RT_ABI +#endif +#ifndef ATTR__floatuntisf +#define ATTR__floatuntisf COMPILER_RT_ABI +#endif +#ifndef ATTR__floatuntitf +#define ATTR__floatuntitf COMPILER_RT_ABI +#endif +#ifndef ATTR__floatuntixf +#define ATTR__floatuntixf COMPILER_RT_ABI +#endif +#ifndef ATTR__gcc_personality_sj0 +#define ATTR__gcc_personality_sj0 COMPILER_RT_ABI +#endif +#ifndef ATTR__gcc_personality_v0 +#define ATTR__gcc_personality_v0 COMPILER_RT_ABI +#endif +#ifndef ATTR__gedf2 +#define ATTR__gedf2 COMPILER_RT_ABI +#endif +#ifndef ATTR__gesf2 +#define ATTR__gesf2 COMPILER_RT_ABI +#endif +#ifndef ATTR__getf2 +#define ATTR__getf2 COMPILER_RT_ABI +#endif +#ifndef ATTR__gnu_f2h_ieee +#define ATTR__gnu_f2h_ieee COMPILER_RT_ABI +#endif +#ifndef ATTR__gnu_h2f_ieee +#define ATTR__gnu_h2f_ieee COMPILER_RT_ABI +#endif +#ifndef ATTR__i64tod +#define ATTR__i64tod COMPILER_RT_ABI +#endif +#ifndef ATTR__i64tos +#define ATTR__i64tos COMPILER_RT_ABI +#endif +#ifndef ATTR__ledf2 +#define ATTR__ledf2 COMPILER_RT_ABI +#endif +#ifndef ATTR__lesf2 +#define ATTR__lesf2 COMPILER_RT_ABI +#endif +#ifndef ATTR__letf2 +#define ATTR__letf2 COMPILER_RT_ABI +#endif +#ifndef ATTR__lshrdi3 +#define ATTR__lshrdi3 COMPILER_RT_ABI +#endif +#ifndef ATTR__lshrti3 +#define ATTR__lshrti3 COMPILER_RT_ABI +#endif +#ifndef ATTR__moddi3 +#define ATTR__moddi3 COMPILER_RT_ABI +#endif +#ifndef ATTR__modsi3 +#define ATTR__modsi3 COMPILER_RT_ABI +#endif +#ifndef ATTR__modti3 +#define ATTR__modti3 COMPILER_RT_ABI +#endif +#ifndef ATTR__muldc3 +#define ATTR__muldc3 COMPILER_RT_ABI +#endif +#ifndef ATTR__muldf3 +#define ATTR__muldf3 COMPILER_RT_ABI +#endif +#ifndef ATTR__muldi3 +#define ATTR__muldi3 COMPILER_RT_ABI +#endif +#ifndef ATTR__mulodi4 +#define ATTR__mulodi4 COMPILER_RT_ABI +#endif +#ifndef ATTR__mulosi4 +#define ATTR__mulosi4 COMPILER_RT_ABI +#endif +#ifndef ATTR__muloti4 +#define ATTR__muloti4 COMPILER_RT_ABI +#endif +#ifndef ATTR__mulsc3 +#define ATTR__mulsc3 COMPILER_RT_ABI +#endif +#ifndef ATTR__mulsf3 +#define ATTR__mulsf3 COMPILER_RT_ABI +#endif +#ifndef ATTR__multc3 +#define ATTR__multc3 COMPILER_RT_ABI +#endif +#ifndef ATTR__multf3 +#define ATTR__multf3 COMPILER_RT_ABI +#endif +#ifndef ATTR__multi3 +#define ATTR__multi3 COMPILER_RT_ABI +#endif +#ifndef ATTR__mulvdi3 +#define ATTR__mulvdi3 COMPILER_RT_ABI +#endif +#ifndef ATTR__mulvsi3 +#define ATTR__mulvsi3 COMPILER_RT_ABI +#endif +#ifndef ATTR__mulvti3 +#define ATTR__mulvti3 COMPILER_RT_ABI +#endif +#ifndef ATTR__mulxc3 +#define ATTR__mulxc3 COMPILER_RT_ABI +#endif +#ifndef ATTR__negdf2 +#define ATTR__negdf2 COMPILER_RT_ABI +#endif +#ifndef ATTR__negdi2 +#define ATTR__negdi2 COMPILER_RT_ABI +#endif +#ifndef ATTR__negsf2 +#define ATTR__negsf2 COMPILER_RT_ABI +#endif +#ifndef ATTR__negti2 +#define ATTR__negti2 COMPILER_RT_ABI +#endif +#ifndef ATTR__negvdi2 +#define ATTR__negvdi2 COMPILER_RT_ABI +#endif +#ifndef ATTR__negvsi2 +#define ATTR__negvsi2 COMPILER_RT_ABI +#endif +#ifndef ATTR__negvti2 +#define ATTR__negvti2 COMPILER_RT_ABI +#endif +#ifndef ATTR__paritydi2 +#define ATTR__paritydi2 COMPILER_RT_ABI +#endif +#ifndef ATTR__paritysi2 +#define ATTR__paritysi2 COMPILER_RT_ABI +#endif +#ifndef ATTR__parityti2 +#define ATTR__parityti2 COMPILER_RT_ABI +#endif +#ifndef ATTR__popcountdi2 +#define ATTR__popcountdi2 COMPILER_RT_ABI +#endif +#ifndef ATTR__popcountsi2 +#define ATTR__popcountsi2 COMPILER_RT_ABI +#endif +#ifndef ATTR__popcountti2 +#define ATTR__popcountti2 COMPILER_RT_ABI +#endif +#ifndef ATTR__powidf2 +#define ATTR__powidf2 COMPILER_RT_ABI +#endif +#ifndef ATTR__powisf2 +#define ATTR__powisf2 COMPILER_RT_ABI +#endif +#ifndef ATTR__powitf2 +#define ATTR__powitf2 COMPILER_RT_ABI +#endif +#ifndef ATTR__powixf2 +#define ATTR__powixf2 COMPILER_RT_ABI +#endif +#ifndef ATTR__stoi64 +#define ATTR__stoi64 COMPILER_RT_ABI +#endif +#ifndef ATTR__stou64 +#define ATTR__stou64 COMPILER_RT_ABI +#endif +#ifndef ATTR__subdf3 +#define ATTR__subdf3 COMPILER_RT_ABI +#endif +#ifndef ATTR__subsf3 +#define ATTR__subsf3 COMPILER_RT_ABI +#endif +#ifndef ATTR__subtf3 +#define ATTR__subtf3 COMPILER_RT_ABI +#endif +#ifndef ATTR__subvdi3 +#define ATTR__subvdi3 COMPILER_RT_ABI +#endif +#ifndef ATTR__subvsi3 +#define ATTR__subvsi3 COMPILER_RT_ABI +#endif +#ifndef ATTR__subvti3 +#define ATTR__subvti3 COMPILER_RT_ABI +#endif +#ifndef ATTR__trampoline_setup +#define ATTR__trampoline_setup COMPILER_RT_ABI +#endif +#ifndef ATTR__truncdfhf2 +#define ATTR__truncdfhf2 COMPILER_RT_ABI +#endif +#ifndef ATTR__truncdfsf2 +#define ATTR__truncdfsf2 COMPILER_RT_ABI +#endif +#ifndef ATTR__truncsfhf2 +#define ATTR__truncsfhf2 COMPILER_RT_ABI +#endif +#ifndef ATTR__trunctfdf2 +#define ATTR__trunctfdf2 COMPILER_RT_ABI +#endif +#ifndef ATTR__trunctfsf2 +#define ATTR__trunctfsf2 COMPILER_RT_ABI +#endif +#ifndef ATTR__u64tod +#define ATTR__u64tod COMPILER_RT_ABI +#endif +#ifndef ATTR__u64tos +#define ATTR__u64tos COMPILER_RT_ABI +#endif +#ifndef ATTR__ucmpdi2 +#define ATTR__ucmpdi2 COMPILER_RT_ABI +#endif +#ifndef ATTR__ucmpti2 +#define ATTR__ucmpti2 COMPILER_RT_ABI +#endif +#ifndef ATTR__udivdi3 +#define ATTR__udivdi3 COMPILER_RT_ABI +#endif +#ifndef ATTR__udivmoddi4 +#define ATTR__udivmoddi4 COMPILER_RT_ABI +#endif +#ifndef ATTR__udivmodsi4 +#define ATTR__udivmodsi4 COMPILER_RT_ABI +#endif +#ifndef ATTR__udivmodti4 +#define ATTR__udivmodti4 COMPILER_RT_ABI +#endif +#ifndef ATTR__udivsi3 +#define ATTR__udivsi3 COMPILER_RT_ABI +#endif +#ifndef ATTR__udivti3 +#define ATTR__udivti3 COMPILER_RT_ABI +#endif +#ifndef ATTR__umoddi3 +#define ATTR__umoddi3 COMPILER_RT_ABI +#endif +#ifndef ATTR__umodsi3 +#define ATTR__umodsi3 COMPILER_RT_ABI +#endif +#ifndef ATTR__umodti3 +#define ATTR__umodti3 COMPILER_RT_ABI +#endif +#ifndef ATTR__unordsf2 +#define ATTR__unordsf2 COMPILER_RT_ABI +#endif +#ifndef ATTR__unorddf2 +#define ATTR__unorddf2 COMPILER_RT_ABI +#endif +#ifndef ATTR__unordtf2 +#define ATTR__unordtf2 COMPILER_RT_ABI +#endif + +// Misc auxiliary declarations to place at the end of source file +#ifndef AUX_DECLS__absvdi2 +#define AUX_DECLS__absvdi2 +#endif +#ifndef AUX_DECLS__absvsi2 +#define AUX_DECLS__absvsi2 +#endif +#ifndef AUX_DECLS__absvti2 +#define AUX_DECLS__absvti2 +#endif +#ifndef AUX_DECLS__adddf3 +#define AUX_DECLS__adddf3 +#endif +#ifndef AUX_DECLS__addsf3 +#define AUX_DECLS__addsf3 +#endif +#ifndef AUX_DECLS__addtf3 +#define AUX_DECLS__addtf3 +#endif +#ifndef AUX_DECLS__addvdi3 +#define AUX_DECLS__addvdi3 +#endif +#ifndef AUX_DECLS__addvsi3 +#define AUX_DECLS__addvsi3 +#endif +#ifndef AUX_DECLS__addvti3 +#define AUX_DECLS__addvti3 +#endif +#ifndef AUX_DECLS__aeabi_lcmp +#define AUX_DECLS__aeabi_lcmp +#endif +#ifndef AUX_DECLS__aeabi_ulcmp +#define AUX_DECLS__aeabi_ulcmp +#endif +#ifndef AUX_DECLS__ashldi3 +#define AUX_DECLS__ashldi3 +#endif +#ifndef AUX_DECLS__ashlti3 +#define AUX_DECLS__ashlti3 +#endif +#ifndef AUX_DECLS__ashrdi3 +#define AUX_DECLS__ashrdi3 +#endif +#ifndef AUX_DECLS__ashrti3 +#define AUX_DECLS__ashrti3 +#endif +#ifndef AUX_DECLS__bswapdi2 +#define AUX_DECLS__bswapdi2 +#endif +#ifndef AUX_DECLS__bswapsi2 +#define AUX_DECLS__bswapsi2 +#endif +#ifndef AUX_DECLS__clzdi2 +#define AUX_DECLS__clzdi2 +#endif +#ifndef AUX_DECLS__clzsi2 +#define AUX_DECLS__clzsi2 +#endif +#ifndef AUX_DECLS__clzti2 +#define AUX_DECLS__clzti2 +#endif +#ifndef AUX_DECLS__cmpdi2 +#define AUX_DECLS__cmpdi2 +#endif +#ifndef AUX_DECLS__cmpti2 +#define AUX_DECLS__cmpti2 +#endif +#ifndef AUX_DECLS__ctzdi2 +#define AUX_DECLS__ctzdi2 +#endif +#ifndef AUX_DECLS__ctzsi2 +#define AUX_DECLS__ctzsi2 +#endif +#ifndef AUX_DECLS__ctzti2 +#define AUX_DECLS__ctzti2 +#endif +#ifndef AUX_DECLS__divdc3 +#define AUX_DECLS__divdc3 +#endif +#ifndef AUX_DECLS__divdf3 +#define AUX_DECLS__divdf3 +#endif +#ifndef AUX_DECLS__divdi3 +#define AUX_DECLS__divdi3 +#endif +#ifndef AUX_DECLS__divmoddi4 +#define AUX_DECLS__divmoddi4 +#endif +#ifndef AUX_DECLS__divmodsi4 +#define AUX_DECLS__divmodsi4 +#endif +#ifndef AUX_DECLS__divsc3 +#define AUX_DECLS__divsc3 +#endif +#ifndef AUX_DECLS__divsf3 +#define AUX_DECLS__divsf3 +#endif +#ifndef AUX_DECLS__divsi3 +#define AUX_DECLS__divsi3 +#endif +#ifndef AUX_DECLS__divtc3 +#define AUX_DECLS__divtc3 +#endif +#ifndef AUX_DECLS__divtf3 +#define AUX_DECLS__divtf3 +#endif +#ifndef AUX_DECLS__divti3 +#define AUX_DECLS__divti3 +#endif +#ifndef AUX_DECLS__divxc3 +#define AUX_DECLS__divxc3 +#endif +#ifndef AUX_DECLS__dtoi64 +#define AUX_DECLS__dtoi64 +#endif +#ifndef AUX_DECLS__dtou64 +#define AUX_DECLS__dtou64 +#endif +#ifndef AUX_DECLS__enable_execute_stack +#define AUX_DECLS__enable_execute_stack +#endif +#ifndef AUX_DECLS__eprintf +#define AUX_DECLS__eprintf +#endif +#ifndef AUX_DECLS__extenddftf2 +#define AUX_DECLS__extenddftf2 +#endif +#ifndef AUX_DECLS__extendhfsf2 +#define AUX_DECLS__extendhfsf2 +#endif +#ifndef AUX_DECLS__extendsfdf2 +#define AUX_DECLS__extendsfdf2 +#endif +#ifndef AUX_DECLS__extendsftf2 +#define AUX_DECLS__extendsftf2 +#endif +#ifndef AUX_DECLS__ffsdi2 +#define AUX_DECLS__ffsdi2 +#endif +#ifndef AUX_DECLS__ffssi2 +#define AUX_DECLS__ffssi2 +#endif +#ifndef AUX_DECLS__ffsti2 +#define AUX_DECLS__ffsti2 +#endif +#ifndef AUX_DECLS__fixdfdi +#define AUX_DECLS__fixdfdi +#endif +#ifndef AUX_DECLS__fixdfsi +#define AUX_DECLS__fixdfsi +#endif +#ifndef AUX_DECLS__fixdfti +#define AUX_DECLS__fixdfti +#endif +#ifndef AUX_DECLS__fixsfdi +#define AUX_DECLS__fixsfdi +#endif +#ifndef AUX_DECLS__fixsfsi +#define AUX_DECLS__fixsfsi +#endif +#ifndef AUX_DECLS__fixsfti +#define AUX_DECLS__fixsfti +#endif +#ifndef AUX_DECLS__fixtfdi +#define AUX_DECLS__fixtfdi +#endif +#ifndef AUX_DECLS__fixtfsi +#define AUX_DECLS__fixtfsi +#endif +#ifndef AUX_DECLS__fixtfti +#define AUX_DECLS__fixtfti +#endif +#ifndef AUX_DECLS__fixunsdfdi +#define AUX_DECLS__fixunsdfdi +#endif +#ifndef AUX_DECLS__fixunsdfsi +#define AUX_DECLS__fixunsdfsi +#endif +#ifndef AUX_DECLS__fixunsdfti +#define AUX_DECLS__fixunsdfti +#endif +#ifndef AUX_DECLS__fixunssfdi +#define AUX_DECLS__fixunssfdi +#endif +#ifndef AUX_DECLS__fixunssfsi +#define AUX_DECLS__fixunssfsi +#endif +#ifndef AUX_DECLS__fixunssfti +#define AUX_DECLS__fixunssfti +#endif +#ifndef AUX_DECLS__fixunstfdi +#define AUX_DECLS__fixunstfdi +#endif +#ifndef AUX_DECLS__fixunstfsi +#define AUX_DECLS__fixunstfsi +#endif +#ifndef AUX_DECLS__fixunstfti +#define AUX_DECLS__fixunstfti +#endif +#ifndef AUX_DECLS__fixunsxfdi +#define AUX_DECLS__fixunsxfdi +#endif +#ifndef AUX_DECLS__fixunsxfsi +#define AUX_DECLS__fixunsxfsi +#endif +#ifndef AUX_DECLS__fixunsxfti +#define AUX_DECLS__fixunsxfti +#endif +#ifndef AUX_DECLS__fixxfdi +#define AUX_DECLS__fixxfdi +#endif +#ifndef AUX_DECLS__fixxfti +#define AUX_DECLS__fixxfti +#endif +#ifndef AUX_DECLS__floatdidf +#define AUX_DECLS__floatdidf +#endif +#ifndef AUX_DECLS__floatdisf +#define AUX_DECLS__floatdisf +#endif +#ifndef AUX_DECLS__floatditf +#define AUX_DECLS__floatditf +#endif +#ifndef AUX_DECLS__floatdixf +#define AUX_DECLS__floatdixf +#endif +#ifndef AUX_DECLS__floatsidf +#define AUX_DECLS__floatsidf +#endif +#ifndef AUX_DECLS__floatsisf +#define AUX_DECLS__floatsisf +#endif +#ifndef AUX_DECLS__floatsitf +#define AUX_DECLS__floatsitf +#endif +#ifndef AUX_DECLS__floattidf +#define AUX_DECLS__floattidf +#endif +#ifndef AUX_DECLS__floattisf +#define AUX_DECLS__floattisf +#endif +#ifndef AUX_DECLS__floattitf +#define AUX_DECLS__floattitf +#endif +#ifndef AUX_DECLS__floattixf +#define AUX_DECLS__floattixf +#endif +#ifndef AUX_DECLS__floatundidf +#define AUX_DECLS__floatundidf +#endif +#ifndef AUX_DECLS__floatundisf +#define AUX_DECLS__floatundisf +#endif +#ifndef AUX_DECLS__floatunditf +#define AUX_DECLS__floatunditf +#endif +#ifndef AUX_DECLS__floatundixf +#define AUX_DECLS__floatundixf +#endif +#ifndef AUX_DECLS__floatunsidf +#define AUX_DECLS__floatunsidf +#endif +#ifndef AUX_DECLS__floatunsisf +#define AUX_DECLS__floatunsisf +#endif +#ifndef AUX_DECLS__floatunsitf +#define AUX_DECLS__floatunsitf +#endif +#ifndef AUX_DECLS__floatuntidf +#define AUX_DECLS__floatuntidf +#endif +#ifndef AUX_DECLS__floatuntisf +#define AUX_DECLS__floatuntisf +#endif +#ifndef AUX_DECLS__floatuntitf +#define AUX_DECLS__floatuntitf +#endif +#ifndef AUX_DECLS__floatuntixf +#define AUX_DECLS__floatuntixf +#endif +#ifndef AUX_DECLS__gcc_personality_sj0 +#define AUX_DECLS__gcc_personality_sj0 +#endif +#ifndef AUX_DECLS__gcc_personality_v0 +#define AUX_DECLS__gcc_personality_v0 +#endif +#ifndef AUX_DECLS__gedf2 +#define AUX_DECLS__gedf2 +#endif +#ifndef AUX_DECLS__gesf2 +#define AUX_DECLS__gesf2 +#endif +#ifndef AUX_DECLS__getf2 +#define AUX_DECLS__getf2 +#endif +#ifndef AUX_DECLS__gnu_f2h_ieee +#define AUX_DECLS__gnu_f2h_ieee +#endif +#ifndef AUX_DECLS__gnu_h2f_ieee +#define AUX_DECLS__gnu_h2f_ieee +#endif +#ifndef AUX_DECLS__i64tod +#define AUX_DECLS__i64tod +#endif +#ifndef AUX_DECLS__i64tos +#define AUX_DECLS__i64tos +#endif +#ifndef AUX_DECLS__ledf2 +#define AUX_DECLS__ledf2 +#endif +#ifndef AUX_DECLS__lesf2 +#define AUX_DECLS__lesf2 +#endif +#ifndef AUX_DECLS__letf2 +#define AUX_DECLS__letf2 +#endif +#ifndef AUX_DECLS__lshrdi3 +#define AUX_DECLS__lshrdi3 +#endif +#ifndef AUX_DECLS__lshrti3 +#define AUX_DECLS__lshrti3 +#endif +#ifndef AUX_DECLS__moddi3 +#define AUX_DECLS__moddi3 +#endif +#ifndef AUX_DECLS__modsi3 +#define AUX_DECLS__modsi3 +#endif +#ifndef AUX_DECLS__modti3 +#define AUX_DECLS__modti3 +#endif +#ifndef AUX_DECLS__muldc3 +#define AUX_DECLS__muldc3 +#endif +#ifndef AUX_DECLS__muldf3 +#define AUX_DECLS__muldf3 +#endif +#ifndef AUX_DECLS__muldi3 +#define AUX_DECLS__muldi3 +#endif +#ifndef AUX_DECLS__mulodi4 +#define AUX_DECLS__mulodi4 +#endif +#ifndef AUX_DECLS__mulosi4 +#define AUX_DECLS__mulosi4 +#endif +#ifndef AUX_DECLS__muloti4 +#define AUX_DECLS__muloti4 +#endif +#ifndef AUX_DECLS__mulsc3 +#define AUX_DECLS__mulsc3 +#endif +#ifndef AUX_DECLS__mulsf3 +#define AUX_DECLS__mulsf3 +#endif +#ifndef AUX_DECLS__multc3 +#define AUX_DECLS__multc3 +#endif +#ifndef AUX_DECLS__multf3 +#define AUX_DECLS__multf3 +#endif +#ifndef AUX_DECLS__multi3 +#define AUX_DECLS__multi3 +#endif +#ifndef AUX_DECLS__mulvdi3 +#define AUX_DECLS__mulvdi3 +#endif +#ifndef AUX_DECLS__mulvsi3 +#define AUX_DECLS__mulvsi3 +#endif +#ifndef AUX_DECLS__mulvti3 +#define AUX_DECLS__mulvti3 +#endif +#ifndef AUX_DECLS__mulxc3 +#define AUX_DECLS__mulxc3 +#endif +#ifndef AUX_DECLS__negdf2 +#define AUX_DECLS__negdf2 +#endif +#ifndef AUX_DECLS__negdi2 +#define AUX_DECLS__negdi2 +#endif +#ifndef AUX_DECLS__negsf2 +#define AUX_DECLS__negsf2 +#endif +#ifndef AUX_DECLS__negti2 +#define AUX_DECLS__negti2 +#endif +#ifndef AUX_DECLS__negvdi2 +#define AUX_DECLS__negvdi2 +#endif +#ifndef AUX_DECLS__negvsi2 +#define AUX_DECLS__negvsi2 +#endif +#ifndef AUX_DECLS__negvti2 +#define AUX_DECLS__negvti2 +#endif +#ifndef AUX_DECLS__paritydi2 +#define AUX_DECLS__paritydi2 +#endif +#ifndef AUX_DECLS__paritysi2 +#define AUX_DECLS__paritysi2 +#endif +#ifndef AUX_DECLS__parityti2 +#define AUX_DECLS__parityti2 +#endif +#ifndef AUX_DECLS__popcountdi2 +#define AUX_DECLS__popcountdi2 +#endif +#ifndef AUX_DECLS__popcountsi2 +#define AUX_DECLS__popcountsi2 +#endif +#ifndef AUX_DECLS__popcountti2 +#define AUX_DECLS__popcountti2 +#endif +#ifndef AUX_DECLS__powidf2 +#define AUX_DECLS__powidf2 +#endif +#ifndef AUX_DECLS__powisf2 +#define AUX_DECLS__powisf2 +#endif +#ifndef AUX_DECLS__powitf2 +#define AUX_DECLS__powitf2 +#endif +#ifndef AUX_DECLS__powixf2 +#define AUX_DECLS__powixf2 +#endif +#ifndef AUX_DECLS__stoi64 +#define AUX_DECLS__stoi64 +#endif +#ifndef AUX_DECLS__stou64 +#define AUX_DECLS__stou64 +#endif +#ifndef AUX_DECLS__subdf3 +#define AUX_DECLS__subdf3 +#endif +#ifndef AUX_DECLS__subsf3 +#define AUX_DECLS__subsf3 +#endif +#ifndef AUX_DECLS__subtf3 +#define AUX_DECLS__subtf3 +#endif +#ifndef AUX_DECLS__subvdi3 +#define AUX_DECLS__subvdi3 +#endif +#ifndef AUX_DECLS__subvsi3 +#define AUX_DECLS__subvsi3 +#endif +#ifndef AUX_DECLS__subvti3 +#define AUX_DECLS__subvti3 +#endif +#ifndef AUX_DECLS__trampoline_setup +#define AUX_DECLS__trampoline_setup +#endif +#ifndef AUX_DECLS__truncdfhf2 +#define AUX_DECLS__truncdfhf2 +#endif +#ifndef AUX_DECLS__truncdfsf2 +#define AUX_DECLS__truncdfsf2 +#endif +#ifndef AUX_DECLS__truncsfhf2 +#define AUX_DECLS__truncsfhf2 +#endif +#ifndef AUX_DECLS__trunctfdf2 +#define AUX_DECLS__trunctfdf2 +#endif +#ifndef AUX_DECLS__trunctfsf2 +#define AUX_DECLS__trunctfsf2 +#endif +#ifndef AUX_DECLS__u64tod +#define AUX_DECLS__u64tod +#endif +#ifndef AUX_DECLS__u64tos +#define AUX_DECLS__u64tos +#endif +#ifndef AUX_DECLS__ucmpdi2 +#define AUX_DECLS__ucmpdi2 +#endif +#ifndef AUX_DECLS__ucmpti2 +#define AUX_DECLS__ucmpti2 +#endif +#ifndef AUX_DECLS__udivdi3 +#define AUX_DECLS__udivdi3 +#endif +#ifndef AUX_DECLS__udivmoddi4 +#define AUX_DECLS__udivmoddi4 +#endif +#ifndef AUX_DECLS__udivmodsi4 +#define AUX_DECLS__udivmodsi4 +#endif +#ifndef AUX_DECLS__udivmodti4 +#define AUX_DECLS__udivmodti4 +#endif +#ifndef AUX_DECLS__udivsi3 +#define AUX_DECLS__udivsi3 +#endif +#ifndef AUX_DECLS__udivti3 +#define AUX_DECLS__udivti3 +#endif +#ifndef AUX_DECLS__umoddi3 +#define AUX_DECLS__umoddi3 +#endif +#ifndef AUX_DECLS__umodsi3 +#define AUX_DECLS__umodsi3 +#endif +#ifndef AUX_DECLS__umodti3 +#define AUX_DECLS__umodti3 +#endif +#ifndef AUX_DECLS__unordsf2 +#define AUX_DECLS__unordsf2 +#endif +#ifndef AUX_DECLS__unorddf2 +#define AUX_DECLS__unorddf2 +#endif +#ifndef AUX_DECLS__unordtf2 +#define AUX_DECLS__unordtf2 +#endif + +#endif // LIBCALL_DEFAULTS diff --git a/compiler-rt/lib/builtins/lshrdi3.c b/compiler-rt/lib/builtins/lshrdi3.c --- a/compiler-rt/lib/builtins/lshrdi3.c +++ b/compiler-rt/lib/builtins/lshrdi3.c @@ -16,7 +16,7 @@ // Precondition: 0 <= b < bits_in_dword -COMPILER_RT_ABI di_int __lshrdi3(di_int a, int b) { +DECLARE_LIBCALL(di_int, __lshrdi3, di_int a, int b) { const int bits_in_word = (int)(sizeof(si_int) * CHAR_BIT); udwords input; udwords result; @@ -33,6 +33,4 @@ return result.all; } -#if defined(__ARM_EABI__) -COMPILER_RT_ALIAS(__lshrdi3, __aeabi_llsr) -#endif +AUX_DECLS(__lshrdi3) diff --git a/compiler-rt/lib/builtins/lshrti3.c b/compiler-rt/lib/builtins/lshrti3.c --- a/compiler-rt/lib/builtins/lshrti3.c +++ b/compiler-rt/lib/builtins/lshrti3.c @@ -18,7 +18,7 @@ // Precondition: 0 <= b < bits_in_tword -COMPILER_RT_ABI ti_int __lshrti3(ti_int a, si_int b) { +DECLARE_LIBCALL(ti_int, __lshrti3, ti_int a, si_int b) { const int bits_in_dword = (int)(sizeof(di_int) * CHAR_BIT); utwords input; utwords result; diff --git a/compiler-rt/lib/builtins/mingw_fixfloat.c b/compiler-rt/lib/builtins/mingw_fixfloat.c --- a/compiler-rt/lib/builtins/mingw_fixfloat.c +++ b/compiler-rt/lib/builtins/mingw_fixfloat.c @@ -8,27 +8,27 @@ #include "int_lib.h" -COMPILER_RT_ABI di_int __fixdfdi(double a); -COMPILER_RT_ABI di_int __fixsfdi(float a); -COMPILER_RT_ABI du_int __fixunsdfdi(double a); -COMPILER_RT_ABI du_int __fixunssfdi(float a); -COMPILER_RT_ABI double __floatdidf(di_int a); -COMPILER_RT_ABI float __floatdisf(di_int a); -COMPILER_RT_ABI double __floatundidf(du_int a); -COMPILER_RT_ABI float __floatundisf(du_int a); +DECLARE_LIBCALL(di_int, __fixdfdi, double a); +DECLARE_LIBCALL(di_int, __fixsfdi, float a); +DECLARE_LIBCALL(du_int, __fixunsdfdi, double a); +DECLARE_LIBCALL(du_int, __fixunssfdi, float a); +DECLARE_LIBCALL(double, __floatdidf, di_int a); +DECLARE_LIBCALL(float, __floatdisf, di_int a); +DECLARE_LIBCALL(double, __floatundidf, du_int a); +DECLARE_LIBCALL(float, __floatundisf, du_int a); -COMPILER_RT_ABI di_int __dtoi64(double a) { return __fixdfdi(a); } +DECLARE_LIBCALL(di_int, __dtoi64, double a) { return __fixdfdi(a); } -COMPILER_RT_ABI di_int __stoi64(float a) { return __fixsfdi(a); } +DECLARE_LIBCALL(di_int, __stoi64, float a) { return __fixsfdi(a); } -COMPILER_RT_ABI du_int __dtou64(double a) { return __fixunsdfdi(a); } +DECLARE_LIBCALL(du_int, __dtou64, double a) { return __fixunsdfdi(a); } -COMPILER_RT_ABI du_int __stou64(float a) { return __fixunssfdi(a); } +DECLARE_LIBCALL(du_int, __stou64, float a) { return __fixunssfdi(a); } -COMPILER_RT_ABI double __i64tod(di_int a) { return __floatdidf(a); } +DECLARE_LIBCALL(double, __i64tod, di_int a) { return __floatdidf(a); } -COMPILER_RT_ABI float __i64tos(di_int a) { return __floatdisf(a); } +DECLARE_LIBCALL(float, __i64tos, di_int a) { return __floatdisf(a); } -COMPILER_RT_ABI double __u64tod(du_int a) { return __floatundidf(a); } +DECLARE_LIBCALL(double, __u64tod, du_int a) { return __floatundidf(a); } -COMPILER_RT_ABI float __u64tos(du_int a) { return __floatundisf(a); } +DECLARE_LIBCALL(float, __u64tos, du_int a) { return __floatundisf(a); } diff --git a/compiler-rt/lib/builtins/moddi3.c b/compiler-rt/lib/builtins/moddi3.c --- a/compiler-rt/lib/builtins/moddi3.c +++ b/compiler-rt/lib/builtins/moddi3.c @@ -14,7 +14,7 @@ // Returns: a % b -COMPILER_RT_ABI di_int __moddi3(di_int a, di_int b) { +DECLARE_LIBCALL(di_int, __moddi3, di_int a, di_int b) { const int bits_in_dword_m1 = (int)(sizeof(di_int) * CHAR_BIT) - 1; di_int s = b >> bits_in_dword_m1; // s = b < 0 ? -1 : 0 b = (b ^ s) - s; // negate if s == -1 diff --git a/compiler-rt/lib/builtins/modsi3.c b/compiler-rt/lib/builtins/modsi3.c --- a/compiler-rt/lib/builtins/modsi3.c +++ b/compiler-rt/lib/builtins/modsi3.c @@ -14,6 +14,6 @@ // Returns: a % b -COMPILER_RT_ABI si_int __modsi3(si_int a, si_int b) { +DECLARE_LIBCALL(si_int, __modsi3, si_int a, si_int b) { return a - __divsi3(a, b) * b; } diff --git a/compiler-rt/lib/builtins/modti3.c b/compiler-rt/lib/builtins/modti3.c --- a/compiler-rt/lib/builtins/modti3.c +++ b/compiler-rt/lib/builtins/modti3.c @@ -16,7 +16,7 @@ // Returns: a % b -COMPILER_RT_ABI ti_int __modti3(ti_int a, ti_int b) { +DECLARE_LIBCALL(ti_int, __modti3, ti_int a, ti_int b) { const int bits_in_tword_m1 = (int)(sizeof(ti_int) * CHAR_BIT) - 1; ti_int s = b >> bits_in_tword_m1; // s = b < 0 ? -1 : 0 b = (b ^ s) - s; // negate if s == -1 diff --git a/compiler-rt/lib/builtins/muldc3.c b/compiler-rt/lib/builtins/muldc3.c --- a/compiler-rt/lib/builtins/muldc3.c +++ b/compiler-rt/lib/builtins/muldc3.c @@ -15,7 +15,7 @@ // Returns: the product of a + ib and c + id -COMPILER_RT_ABI Dcomplex __muldc3(double __a, double __b, double __c, +DECLARE_LIBCALL(Dcomplex, __muldc3, double __a, double __b, double __c, double __d) { double __ac = __a * __c; double __bd = __b * __d; diff --git a/compiler-rt/lib/builtins/muldf3.c b/compiler-rt/lib/builtins/muldf3.c --- a/compiler-rt/lib/builtins/muldf3.c +++ b/compiler-rt/lib/builtins/muldf3.c @@ -14,12 +14,6 @@ #define DOUBLE_PRECISION #include "fp_mul_impl.inc" -COMPILER_RT_ABI fp_t __muldf3(fp_t a, fp_t b) { return __mulXf3__(a, b); } +DECLARE_LIBCALL(fp_t, __muldf3, fp_t a, fp_t b) { return __mulXf3__(a, b); } -#if defined(__ARM_EABI__) -#if defined(COMPILER_RT_ARMHF_TARGET) -AEABI_RTABI fp_t __aeabi_dmul(fp_t a, fp_t b) { return __muldf3(a, b); } -#else -COMPILER_RT_ALIAS(__muldf3, __aeabi_dmul) -#endif -#endif +AUX_DECLS(__muldf3) diff --git a/compiler-rt/lib/builtins/muldi3.c b/compiler-rt/lib/builtins/muldi3.c --- a/compiler-rt/lib/builtins/muldi3.c +++ b/compiler-rt/lib/builtins/muldi3.c @@ -35,7 +35,7 @@ // Returns: a * b -COMPILER_RT_ABI di_int __muldi3(di_int a, di_int b) { +DECLARE_LIBCALL(di_int, __muldi3, di_int a, di_int b) { dwords x; x.all = a; dwords y; @@ -46,6 +46,4 @@ return r.all; } -#if defined(__ARM_EABI__) -COMPILER_RT_ALIAS(__muldi3, __aeabi_lmul) -#endif +AUX_DECLS(__muldi3) diff --git a/compiler-rt/lib/builtins/mulodi4.c b/compiler-rt/lib/builtins/mulodi4.c --- a/compiler-rt/lib/builtins/mulodi4.c +++ b/compiler-rt/lib/builtins/mulodi4.c @@ -16,7 +16,7 @@ // Effects: sets *overflow to 1 if a * b overflows -COMPILER_RT_ABI di_int __mulodi4(di_int a, di_int b, int *overflow) { +DECLARE_LIBCALL(di_int, __mulodi4, di_int a, di_int b, int *overflow) { const int N = (int)(sizeof(di_int) * CHAR_BIT); const di_int MIN = (di_int)1 << (N - 1); const di_int MAX = ~MIN; diff --git a/compiler-rt/lib/builtins/mulosi4.c b/compiler-rt/lib/builtins/mulosi4.c --- a/compiler-rt/lib/builtins/mulosi4.c +++ b/compiler-rt/lib/builtins/mulosi4.c @@ -16,7 +16,7 @@ // Effects: sets *overflow to 1 if a * b overflows -COMPILER_RT_ABI si_int __mulosi4(si_int a, si_int b, int *overflow) { +DECLARE_LIBCALL(si_int, __mulosi4, si_int a, si_int b, int *overflow) { const int N = (int)(sizeof(si_int) * CHAR_BIT); const si_int MIN = (si_int)1 << (N - 1); const si_int MAX = ~MIN; diff --git a/compiler-rt/lib/builtins/muloti4.c b/compiler-rt/lib/builtins/muloti4.c --- a/compiler-rt/lib/builtins/muloti4.c +++ b/compiler-rt/lib/builtins/muloti4.c @@ -18,7 +18,7 @@ // Effects: sets *overflow to 1 if a * b overflows -COMPILER_RT_ABI ti_int __muloti4(ti_int a, ti_int b, int *overflow) { +DECLARE_LIBCALL(ti_int, __muloti4, ti_int a, ti_int b, int *overflow) { const int N = (int)(sizeof(ti_int) * CHAR_BIT); const ti_int MIN = (ti_int)1 << (N - 1); const ti_int MAX = ~MIN; diff --git a/compiler-rt/lib/builtins/mulsc3.c b/compiler-rt/lib/builtins/mulsc3.c --- a/compiler-rt/lib/builtins/mulsc3.c +++ b/compiler-rt/lib/builtins/mulsc3.c @@ -15,7 +15,7 @@ // Returns: the product of a + ib and c + id -COMPILER_RT_ABI Fcomplex __mulsc3(float __a, float __b, float __c, float __d) { +DECLARE_LIBCALL(Fcomplex, __mulsc3, float __a, float __b, float __c, float __d) { float __ac = __a * __c; float __bd = __b * __d; float __ad = __a * __d; diff --git a/compiler-rt/lib/builtins/mulsf3.c b/compiler-rt/lib/builtins/mulsf3.c --- a/compiler-rt/lib/builtins/mulsf3.c +++ b/compiler-rt/lib/builtins/mulsf3.c @@ -14,12 +14,6 @@ #define SINGLE_PRECISION #include "fp_mul_impl.inc" -COMPILER_RT_ABI fp_t __mulsf3(fp_t a, fp_t b) { return __mulXf3__(a, b); } +DECLARE_LIBCALL(fp_t, __mulsf3, fp_t a, fp_t b) { return __mulXf3__(a, b); } -#if defined(__ARM_EABI__) -#if defined(COMPILER_RT_ARMHF_TARGET) -AEABI_RTABI fp_t __aeabi_fmul(fp_t a, fp_t b) { return __mulsf3(a, b); } -#else -COMPILER_RT_ALIAS(__mulsf3, __aeabi_fmul) -#endif -#endif +AUX_DECLS(__mulsf3) diff --git a/compiler-rt/lib/builtins/multc3.c b/compiler-rt/lib/builtins/multc3.c --- a/compiler-rt/lib/builtins/multc3.c +++ b/compiler-rt/lib/builtins/multc3.c @@ -15,7 +15,7 @@ // Returns: the product of a + ib and c + id -COMPILER_RT_ABI long double _Complex __multc3(long double a, long double b, +DECLARE_LIBCALL(long double _Complex, __multc3, long double a, long double b, long double c, long double d) { long double ac = a * c; long double bd = b * d; diff --git a/compiler-rt/lib/builtins/multf3.c b/compiler-rt/lib/builtins/multf3.c --- a/compiler-rt/lib/builtins/multf3.c +++ b/compiler-rt/lib/builtins/multf3.c @@ -17,6 +17,6 @@ #if defined(CRT_HAS_128BIT) && defined(CRT_LDBL_128BIT) #include "fp_mul_impl.inc" -COMPILER_RT_ABI fp_t __multf3(fp_t a, fp_t b) { return __mulXf3__(a, b); } +DECLARE_LIBCALL(fp_t, __multf3, fp_t a, fp_t b) { return __mulXf3__(a, b); } #endif diff --git a/compiler-rt/lib/builtins/multi3.c b/compiler-rt/lib/builtins/multi3.c --- a/compiler-rt/lib/builtins/multi3.c +++ b/compiler-rt/lib/builtins/multi3.c @@ -37,7 +37,7 @@ // Returns: a * b -COMPILER_RT_ABI ti_int __multi3(ti_int a, ti_int b) { +DECLARE_LIBCALL(ti_int, __multi3, ti_int a, ti_int b) { twords x; x.all = a; twords y; diff --git a/compiler-rt/lib/builtins/mulvdi3.c b/compiler-rt/lib/builtins/mulvdi3.c --- a/compiler-rt/lib/builtins/mulvdi3.c +++ b/compiler-rt/lib/builtins/mulvdi3.c @@ -16,7 +16,7 @@ // Effects: aborts if a * b overflows -COMPILER_RT_ABI di_int __mulvdi3(di_int a, di_int b) { +DECLARE_LIBCALL(di_int, __mulvdi3, di_int a, di_int b) { const int N = (int)(sizeof(di_int) * CHAR_BIT); const di_int MIN = (di_int)1 << (N - 1); const di_int MAX = ~MIN; diff --git a/compiler-rt/lib/builtins/mulvsi3.c b/compiler-rt/lib/builtins/mulvsi3.c --- a/compiler-rt/lib/builtins/mulvsi3.c +++ b/compiler-rt/lib/builtins/mulvsi3.c @@ -16,7 +16,7 @@ // Effects: aborts if a * b overflows -COMPILER_RT_ABI si_int __mulvsi3(si_int a, si_int b) { +DECLARE_LIBCALL(si_int, __mulvsi3, si_int a, si_int b) { const int N = (int)(sizeof(si_int) * CHAR_BIT); const si_int MIN = (si_int)1 << (N - 1); const si_int MAX = ~MIN; diff --git a/compiler-rt/lib/builtins/mulvti3.c b/compiler-rt/lib/builtins/mulvti3.c --- a/compiler-rt/lib/builtins/mulvti3.c +++ b/compiler-rt/lib/builtins/mulvti3.c @@ -18,7 +18,7 @@ // Effects: aborts if a * b overflows -COMPILER_RT_ABI ti_int __mulvti3(ti_int a, ti_int b) { +DECLARE_LIBCALL(ti_int, __mulvti3, ti_int a, ti_int b) { const int N = (int)(sizeof(ti_int) * CHAR_BIT); const ti_int MIN = (ti_int)1 << (N - 1); const ti_int MAX = ~MIN; diff --git a/compiler-rt/lib/builtins/mulxc3.c b/compiler-rt/lib/builtins/mulxc3.c --- a/compiler-rt/lib/builtins/mulxc3.c +++ b/compiler-rt/lib/builtins/mulxc3.c @@ -17,7 +17,7 @@ // Returns: the product of a + ib and c + id -COMPILER_RT_ABI Lcomplex __mulxc3(long double __a, long double __b, +DECLARE_LIBCALL(Lcomplex, __mulxc3, long double __a, long double __b, long double __c, long double __d) { long double __ac = __a * __c; long double __bd = __b * __d; diff --git a/compiler-rt/lib/builtins/negdf2.c b/compiler-rt/lib/builtins/negdf2.c --- a/compiler-rt/lib/builtins/negdf2.c +++ b/compiler-rt/lib/builtins/negdf2.c @@ -13,12 +13,6 @@ #define DOUBLE_PRECISION #include "fp_lib.h" -COMPILER_RT_ABI fp_t __negdf2(fp_t a) { return fromRep(toRep(a) ^ signBit); } +DECLARE_LIBCALL(fp_t, __negdf2, fp_t a) { return fromRep(toRep(a) ^ signBit); } -#if defined(__ARM_EABI__) -#if defined(COMPILER_RT_ARMHF_TARGET) -AEABI_RTABI fp_t __aeabi_dneg(fp_t a) { return __negdf2(a); } -#else -COMPILER_RT_ALIAS(__negdf2, __aeabi_dneg) -#endif -#endif +AUX_DECLS(__negdf2) diff --git a/compiler-rt/lib/builtins/negdi2.c b/compiler-rt/lib/builtins/negdi2.c --- a/compiler-rt/lib/builtins/negdi2.c +++ b/compiler-rt/lib/builtins/negdi2.c @@ -14,7 +14,7 @@ // Returns: -a -COMPILER_RT_ABI di_int __negdi2(di_int a) { +DECLARE_LIBCALL(di_int, __negdi2, di_int a) { // Note: this routine is here for API compatibility; any sane compiler // should expand it inline. return -a; diff --git a/compiler-rt/lib/builtins/negsf2.c b/compiler-rt/lib/builtins/negsf2.c --- a/compiler-rt/lib/builtins/negsf2.c +++ b/compiler-rt/lib/builtins/negsf2.c @@ -13,12 +13,6 @@ #define SINGLE_PRECISION #include "fp_lib.h" -COMPILER_RT_ABI fp_t __negsf2(fp_t a) { return fromRep(toRep(a) ^ signBit); } +DECLARE_LIBCALL(fp_t, __negsf2, fp_t a) { return fromRep(toRep(a) ^ signBit); } -#if defined(__ARM_EABI__) -#if defined(COMPILER_RT_ARMHF_TARGET) -AEABI_RTABI fp_t __aeabi_fneg(fp_t a) { return __negsf2(a); } -#else -COMPILER_RT_ALIAS(__negsf2, __aeabi_fneg) -#endif -#endif +AUX_DECLS(__negsf2) diff --git a/compiler-rt/lib/builtins/negti2.c b/compiler-rt/lib/builtins/negti2.c --- a/compiler-rt/lib/builtins/negti2.c +++ b/compiler-rt/lib/builtins/negti2.c @@ -16,7 +16,7 @@ // Returns: -a -COMPILER_RT_ABI ti_int __negti2(ti_int a) { +DECLARE_LIBCALL(ti_int, __negti2, ti_int a) { // Note: this routine is here for API compatibility; any sane compiler // should expand it inline. return -a; diff --git a/compiler-rt/lib/builtins/negvdi2.c b/compiler-rt/lib/builtins/negvdi2.c --- a/compiler-rt/lib/builtins/negvdi2.c +++ b/compiler-rt/lib/builtins/negvdi2.c @@ -16,7 +16,7 @@ // Effects: aborts if -a overflows -COMPILER_RT_ABI di_int __negvdi2(di_int a) { +DECLARE_LIBCALL(di_int, __negvdi2, di_int a) { const di_int MIN = (di_int)1 << ((int)(sizeof(di_int) * CHAR_BIT) - 1); if (a == MIN) compilerrt_abort(); diff --git a/compiler-rt/lib/builtins/negvsi2.c b/compiler-rt/lib/builtins/negvsi2.c --- a/compiler-rt/lib/builtins/negvsi2.c +++ b/compiler-rt/lib/builtins/negvsi2.c @@ -16,7 +16,7 @@ // Effects: aborts if -a overflows -COMPILER_RT_ABI si_int __negvsi2(si_int a) { +DECLARE_LIBCALL(si_int, __negvsi2, si_int a) { const si_int MIN = (si_int)1 << ((int)(sizeof(si_int) * CHAR_BIT) - 1); if (a == MIN) compilerrt_abort(); diff --git a/compiler-rt/lib/builtins/negvti2.c b/compiler-rt/lib/builtins/negvti2.c --- a/compiler-rt/lib/builtins/negvti2.c +++ b/compiler-rt/lib/builtins/negvti2.c @@ -18,7 +18,7 @@ // Effects: aborts if -a overflows -COMPILER_RT_ABI ti_int __negvti2(ti_int a) { +DECLARE_LIBCALL(ti_int, __negvti2, ti_int a) { const ti_int MIN = (ti_int)1 << ((int)(sizeof(ti_int) * CHAR_BIT) - 1); if (a == MIN) compilerrt_abort(); diff --git a/compiler-rt/lib/builtins/paritydi2.c b/compiler-rt/lib/builtins/paritydi2.c --- a/compiler-rt/lib/builtins/paritydi2.c +++ b/compiler-rt/lib/builtins/paritydi2.c @@ -14,7 +14,7 @@ // Returns: 1 if number of bits is odd else returns 0 -COMPILER_RT_ABI int __paritydi2(di_int a) { +DECLARE_LIBCALL(int, __paritydi2, di_int a) { dwords x; x.all = a; return __paritysi2(x.s.high ^ x.s.low); diff --git a/compiler-rt/lib/builtins/paritysi2.c b/compiler-rt/lib/builtins/paritysi2.c --- a/compiler-rt/lib/builtins/paritysi2.c +++ b/compiler-rt/lib/builtins/paritysi2.c @@ -14,7 +14,7 @@ // Returns: 1 if number of bits is odd else returns 0 -COMPILER_RT_ABI int __paritysi2(si_int a) { +DECLARE_LIBCALL(int, __paritysi2, si_int a) { su_int x = (su_int)a; x ^= x >> 16; x ^= x >> 8; diff --git a/compiler-rt/lib/builtins/parityti2.c b/compiler-rt/lib/builtins/parityti2.c --- a/compiler-rt/lib/builtins/parityti2.c +++ b/compiler-rt/lib/builtins/parityti2.c @@ -16,7 +16,7 @@ // Returns: 1 if number of bits is odd else returns 0 -COMPILER_RT_ABI int __parityti2(ti_int a) { +DECLARE_LIBCALL(int, __parityti2, ti_int a) { twords x; x.all = a; return __paritydi2(x.s.high ^ x.s.low); diff --git a/compiler-rt/lib/builtins/popcountdi2.c b/compiler-rt/lib/builtins/popcountdi2.c --- a/compiler-rt/lib/builtins/popcountdi2.c +++ b/compiler-rt/lib/builtins/popcountdi2.c @@ -14,7 +14,7 @@ // Returns: count of 1 bits -COMPILER_RT_ABI int __popcountdi2(di_int a) { +DECLARE_LIBCALL(int, __popcountdi2, di_int a) { du_int x2 = (du_int)a; x2 = x2 - ((x2 >> 1) & 0x5555555555555555uLL); // Every 2 bits holds the sum of every pair of bits (32) diff --git a/compiler-rt/lib/builtins/popcountsi2.c b/compiler-rt/lib/builtins/popcountsi2.c --- a/compiler-rt/lib/builtins/popcountsi2.c +++ b/compiler-rt/lib/builtins/popcountsi2.c @@ -14,7 +14,7 @@ // Returns: count of 1 bits -COMPILER_RT_ABI int __popcountsi2(si_int a) { +DECLARE_LIBCALL(int, __popcountsi2, si_int a) { su_int x = (su_int)a; x = x - ((x >> 1) & 0x55555555); // Every 2 bits holds the sum of every pair of bits diff --git a/compiler-rt/lib/builtins/popcountti2.c b/compiler-rt/lib/builtins/popcountti2.c --- a/compiler-rt/lib/builtins/popcountti2.c +++ b/compiler-rt/lib/builtins/popcountti2.c @@ -17,7 +17,7 @@ // Returns: count of 1 bits -COMPILER_RT_ABI int __popcountti2(ti_int a) { +DECLARE_LIBCALL(int, __popcountti2, ti_int a) { tu_int x3 = (tu_int)a; x3 = x3 - ((x3 >> 1) & (((tu_int)0x5555555555555555uLL << 64) | 0x5555555555555555uLL)); diff --git a/compiler-rt/lib/builtins/powidf2.c b/compiler-rt/lib/builtins/powidf2.c --- a/compiler-rt/lib/builtins/powidf2.c +++ b/compiler-rt/lib/builtins/powidf2.c @@ -14,7 +14,7 @@ // Returns: a ^ b -COMPILER_RT_ABI double __powidf2(double a, int b) { +DECLARE_LIBCALL(double, __powidf2, double a, int b) { const int recip = b < 0; double r = 1; while (1) { diff --git a/compiler-rt/lib/builtins/powisf2.c b/compiler-rt/lib/builtins/powisf2.c --- a/compiler-rt/lib/builtins/powisf2.c +++ b/compiler-rt/lib/builtins/powisf2.c @@ -14,7 +14,7 @@ // Returns: a ^ b -COMPILER_RT_ABI float __powisf2(float a, int b) { +DECLARE_LIBCALL(float, __powisf2, float a, int b) { const int recip = b < 0; float r = 1; while (1) { diff --git a/compiler-rt/lib/builtins/powitf2.c b/compiler-rt/lib/builtins/powitf2.c --- a/compiler-rt/lib/builtins/powitf2.c +++ b/compiler-rt/lib/builtins/powitf2.c @@ -17,7 +17,7 @@ // Returns: a ^ b -COMPILER_RT_ABI long double __powitf2(long double a, int b) { +DECLARE_LIBCALL(long double, __powitf2, long double a, int b) { const int recip = b < 0; long double r = 1; while (1) { diff --git a/compiler-rt/lib/builtins/powixf2.c b/compiler-rt/lib/builtins/powixf2.c --- a/compiler-rt/lib/builtins/powixf2.c +++ b/compiler-rt/lib/builtins/powixf2.c @@ -16,7 +16,7 @@ // Returns: a ^ b -COMPILER_RT_ABI long double __powixf2(long double a, int b) { +DECLARE_LIBCALL(long double, __powixf2, long double a, int b) { const int recip = b < 0; long double r = 1; while (1) { diff --git a/compiler-rt/lib/builtins/subdf3.c b/compiler-rt/lib/builtins/subdf3.c --- a/compiler-rt/lib/builtins/subdf3.c +++ b/compiler-rt/lib/builtins/subdf3.c @@ -14,14 +14,8 @@ #include "fp_lib.h" // Subtraction; flip the sign bit of b and add. -COMPILER_RT_ABI fp_t __subdf3(fp_t a, fp_t b) { +DECLARE_LIBCALL(fp_t, __subdf3, fp_t a, fp_t b) { return __adddf3(a, fromRep(toRep(b) ^ signBit)); } -#if defined(__ARM_EABI__) -#if defined(COMPILER_RT_ARMHF_TARGET) -AEABI_RTABI fp_t __aeabi_dsub(fp_t a, fp_t b) { return __subdf3(a, b); } -#else -COMPILER_RT_ALIAS(__subdf3, __aeabi_dsub) -#endif -#endif +AUX_DECLS(__subdf3) diff --git a/compiler-rt/lib/builtins/subsf3.c b/compiler-rt/lib/builtins/subsf3.c --- a/compiler-rt/lib/builtins/subsf3.c +++ b/compiler-rt/lib/builtins/subsf3.c @@ -14,14 +14,8 @@ #include "fp_lib.h" // Subtraction; flip the sign bit of b and add. -COMPILER_RT_ABI fp_t __subsf3(fp_t a, fp_t b) { +DECLARE_LIBCALL(fp_t, __subsf3, fp_t a, fp_t b) { return __addsf3(a, fromRep(toRep(b) ^ signBit)); } -#if defined(__ARM_EABI__) -#if defined(COMPILER_RT_ARMHF_TARGET) -AEABI_RTABI fp_t __aeabi_fsub(fp_t a, fp_t b) { return __subsf3(a, b); } -#else -COMPILER_RT_ALIAS(__subsf3, __aeabi_fsub) -#endif -#endif +AUX_DECLS(__subsf3) diff --git a/compiler-rt/lib/builtins/subtf3.c b/compiler-rt/lib/builtins/subtf3.c --- a/compiler-rt/lib/builtins/subtf3.c +++ b/compiler-rt/lib/builtins/subtf3.c @@ -14,10 +14,10 @@ #include "fp_lib.h" #if defined(CRT_HAS_128BIT) && defined(CRT_LDBL_128BIT) -COMPILER_RT_ABI fp_t __addtf3(fp_t a, fp_t b); +DECLARE_LIBCALL(fp_t, __addtf3, fp_t a, fp_t b); // Subtraction; flip the sign bit of b and add. -COMPILER_RT_ABI fp_t __subtf3(fp_t a, fp_t b) { +DECLARE_LIBCALL(fp_t, __subtf3, fp_t a, fp_t b) { return __addtf3(a, fromRep(toRep(b) ^ signBit)); } diff --git a/compiler-rt/lib/builtins/subvdi3.c b/compiler-rt/lib/builtins/subvdi3.c --- a/compiler-rt/lib/builtins/subvdi3.c +++ b/compiler-rt/lib/builtins/subvdi3.c @@ -16,7 +16,7 @@ // Effects: aborts if a - b overflows -COMPILER_RT_ABI di_int __subvdi3(di_int a, di_int b) { +DECLARE_LIBCALL(di_int, __subvdi3, di_int a, di_int b) { di_int s = (du_int)a - (du_int)b; if (b >= 0) { if (s > a) diff --git a/compiler-rt/lib/builtins/subvsi3.c b/compiler-rt/lib/builtins/subvsi3.c --- a/compiler-rt/lib/builtins/subvsi3.c +++ b/compiler-rt/lib/builtins/subvsi3.c @@ -16,7 +16,7 @@ // Effects: aborts if a - b overflows -COMPILER_RT_ABI si_int __subvsi3(si_int a, si_int b) { +DECLARE_LIBCALL(si_int, __subvsi3, si_int a, si_int b) { si_int s = (su_int)a - (su_int)b; if (b >= 0) { if (s > a) diff --git a/compiler-rt/lib/builtins/subvti3.c b/compiler-rt/lib/builtins/subvti3.c --- a/compiler-rt/lib/builtins/subvti3.c +++ b/compiler-rt/lib/builtins/subvti3.c @@ -18,7 +18,7 @@ // Effects: aborts if a - b overflows -COMPILER_RT_ABI ti_int __subvti3(ti_int a, ti_int b) { +DECLARE_LIBCALL(ti_int, __subvti3, ti_int a, ti_int b) { ti_int s = (tu_int)a - (tu_int)b; if (b >= 0) { if (s > a) diff --git a/compiler-rt/lib/builtins/trampoline_setup.c b/compiler-rt/lib/builtins/trampoline_setup.c --- a/compiler-rt/lib/builtins/trampoline_setup.c +++ b/compiler-rt/lib/builtins/trampoline_setup.c @@ -17,7 +17,7 @@ // and then jumps to the target nested function. #if __ppc__ && !defined(__powerpc64__) -COMPILER_RT_ABI void __trampoline_setup(uint32_t *trampOnStack, +DECLARE_LIBCALL(void, __trampoline_setup, uint32_t *trampOnStack, int trampSizeAllocated, const void *realFunc, void *localsPtr) { // should never happen, but if compiler did not allocate diff --git a/compiler-rt/lib/builtins/truncdfhf2.c b/compiler-rt/lib/builtins/truncdfhf2.c --- a/compiler-rt/lib/builtins/truncdfhf2.c +++ b/compiler-rt/lib/builtins/truncdfhf2.c @@ -10,12 +10,6 @@ #define DST_HALF #include "fp_trunc_impl.inc" -COMPILER_RT_ABI uint16_t __truncdfhf2(double a) { return __truncXfYf2__(a); } +DECLARE_LIBCALL(uint16_t, __truncdfhf2, double a) { return __truncXfYf2__(a); } -#if defined(__ARM_EABI__) -#if defined(COMPILER_RT_ARMHF_TARGET) -AEABI_RTABI uint16_t __aeabi_d2h(double a) { return __truncdfhf2(a); } -#else -COMPILER_RT_ALIAS(__truncdfhf2, __aeabi_d2h) -#endif -#endif +AUX_DECLS(__truncdfhf2) diff --git a/compiler-rt/lib/builtins/truncdfsf2.c b/compiler-rt/lib/builtins/truncdfsf2.c --- a/compiler-rt/lib/builtins/truncdfsf2.c +++ b/compiler-rt/lib/builtins/truncdfsf2.c @@ -10,12 +10,6 @@ #define DST_SINGLE #include "fp_trunc_impl.inc" -COMPILER_RT_ABI float __truncdfsf2(double a) { return __truncXfYf2__(a); } +DECLARE_LIBCALL(float, __truncdfsf2, double a) { return __truncXfYf2__(a); } -#if defined(__ARM_EABI__) -#if defined(COMPILER_RT_ARMHF_TARGET) -AEABI_RTABI float __aeabi_d2f(double a) { return __truncdfsf2(a); } -#else -COMPILER_RT_ALIAS(__truncdfsf2, __aeabi_d2f) -#endif -#endif +AUX_DECLS(__truncdfsf2) diff --git a/compiler-rt/lib/builtins/truncsfhf2.c b/compiler-rt/lib/builtins/truncsfhf2.c --- a/compiler-rt/lib/builtins/truncsfhf2.c +++ b/compiler-rt/lib/builtins/truncsfhf2.c @@ -12,16 +12,10 @@ // Use a forwarding definition and noinline to implement a poor man's alias, // as there isn't a good cross-platform way of defining one. -COMPILER_RT_ABI NOINLINE uint16_t __truncsfhf2(float a) { +DECLARE_LIBCALL(NOINLINE uint16_t, __truncsfhf2, float a) { return __truncXfYf2__(a); } -COMPILER_RT_ABI uint16_t __gnu_f2h_ieee(float a) { return __truncsfhf2(a); } +DECLARE_LIBCALL(uint16_t, __gnu_f2h_ieee, float a) { return __truncsfhf2(a); } -#if defined(__ARM_EABI__) -#if defined(COMPILER_RT_ARMHF_TARGET) -AEABI_RTABI uint16_t __aeabi_f2h(float a) { return __truncsfhf2(a); } -#else -COMPILER_RT_ALIAS(__truncsfhf2, __aeabi_f2h) -#endif -#endif +AUX_DECLS(__truncsfhf2) diff --git a/compiler-rt/lib/builtins/trunctfdf2.c b/compiler-rt/lib/builtins/trunctfdf2.c --- a/compiler-rt/lib/builtins/trunctfdf2.c +++ b/compiler-rt/lib/builtins/trunctfdf2.c @@ -14,6 +14,6 @@ #define DST_DOUBLE #include "fp_trunc_impl.inc" -COMPILER_RT_ABI double __trunctfdf2(long double a) { return __truncXfYf2__(a); } +DECLARE_LIBCALL(double, __trunctfdf2, long double a) { return __truncXfYf2__(a); } #endif diff --git a/compiler-rt/lib/builtins/trunctfsf2.c b/compiler-rt/lib/builtins/trunctfsf2.c --- a/compiler-rt/lib/builtins/trunctfsf2.c +++ b/compiler-rt/lib/builtins/trunctfsf2.c @@ -14,6 +14,6 @@ #define DST_SINGLE #include "fp_trunc_impl.inc" -COMPILER_RT_ABI float __trunctfsf2(long double a) { return __truncXfYf2__(a); } +DECLARE_LIBCALL(float, __trunctfsf2, long double a) { return __truncXfYf2__(a); } #endif diff --git a/compiler-rt/lib/builtins/ucmpdi2.c b/compiler-rt/lib/builtins/ucmpdi2.c --- a/compiler-rt/lib/builtins/ucmpdi2.c +++ b/compiler-rt/lib/builtins/ucmpdi2.c @@ -16,7 +16,7 @@ // if (a == b) returns 1 // if (a > b) returns 2 -COMPILER_RT_ABI si_int __ucmpdi2(du_int a, du_int b) { +DECLARE_LIBCALL(si_int, __ucmpdi2, du_int a, du_int b) { udwords x; x.all = a; udwords y; @@ -36,7 +36,7 @@ // Returns: if (a < b) returns -1 // if (a == b) returns 0 // if (a > b) returns 1 -COMPILER_RT_ABI si_int __aeabi_ulcmp(di_int a, di_int b) { +DECLARE_LIBCALL(si_int, __aeabi_ulcmp, di_int a, di_int b) { return __ucmpdi2(a, b) - 1; } #endif diff --git a/compiler-rt/lib/builtins/ucmpti2.c b/compiler-rt/lib/builtins/ucmpti2.c --- a/compiler-rt/lib/builtins/ucmpti2.c +++ b/compiler-rt/lib/builtins/ucmpti2.c @@ -18,7 +18,7 @@ // if (a == b) returns 1 // if (a > b) returns 2 -COMPILER_RT_ABI si_int __ucmpti2(tu_int a, tu_int b) { +DECLARE_LIBCALL(si_int, __ucmpti2, tu_int a, tu_int b) { utwords x; x.all = a; utwords y; diff --git a/compiler-rt/lib/builtins/udivdi3.c b/compiler-rt/lib/builtins/udivdi3.c --- a/compiler-rt/lib/builtins/udivdi3.c +++ b/compiler-rt/lib/builtins/udivdi3.c @@ -18,6 +18,6 @@ // Returns: a / b -COMPILER_RT_ABI du_int __udivdi3(du_int a, du_int b) { +DECLARE_LIBCALL(du_int, __udivdi3, du_int a, du_int b) { return __udivXi3(a, b); } diff --git a/compiler-rt/lib/builtins/udivmoddi4.c b/compiler-rt/lib/builtins/udivmoddi4.c --- a/compiler-rt/lib/builtins/udivmoddi4.c +++ b/compiler-rt/lib/builtins/udivmoddi4.c @@ -24,7 +24,7 @@ #pragma warning(disable : 4724) #endif -COMPILER_RT_ABI du_int __udivmoddi4(du_int a, du_int b, du_int *rem) { +DECLARE_LIBCALL(du_int, __udivmoddi4, du_int a, du_int b, du_int *rem) { const unsigned n_uword_bits = sizeof(su_int) * CHAR_BIT; const unsigned n_udword_bits = sizeof(du_int) * CHAR_BIT; udwords n; diff --git a/compiler-rt/lib/builtins/udivmodsi4.c b/compiler-rt/lib/builtins/udivmodsi4.c --- a/compiler-rt/lib/builtins/udivmodsi4.c +++ b/compiler-rt/lib/builtins/udivmodsi4.c @@ -14,7 +14,7 @@ // Returns: a / b, *rem = a % b -COMPILER_RT_ABI su_int __udivmodsi4(su_int a, su_int b, su_int *rem) { +DECLARE_LIBCALL(su_int, __udivmodsi4, su_int a, su_int b, su_int *rem) { si_int d = __udivsi3(a, b); *rem = a - (d * b); return d; diff --git a/compiler-rt/lib/builtins/udivmodti4.c b/compiler-rt/lib/builtins/udivmodti4.c --- a/compiler-rt/lib/builtins/udivmodti4.c +++ b/compiler-rt/lib/builtins/udivmodti4.c @@ -97,7 +97,7 @@ // Effects: if rem != 0, *rem = a % b // Returns: a / b -COMPILER_RT_ABI tu_int __udivmodti4(tu_int a, tu_int b, tu_int *rem) { +DECLARE_LIBCALL(tu_int, __udivmodti4, tu_int a, tu_int b, tu_int *rem) { const unsigned n_utword_bits = sizeof(tu_int) * CHAR_BIT; utwords dividend; dividend.all = a; diff --git a/compiler-rt/lib/builtins/udivsi3.c b/compiler-rt/lib/builtins/udivsi3.c --- a/compiler-rt/lib/builtins/udivsi3.c +++ b/compiler-rt/lib/builtins/udivsi3.c @@ -18,10 +18,8 @@ // Returns: a / b -COMPILER_RT_ABI su_int __udivsi3(su_int a, su_int b) { +DECLARE_LIBCALL(su_int, __udivsi3, su_int a, su_int b) { return __udivXi3(a, b); } -#if defined(__ARM_EABI__) -COMPILER_RT_ALIAS(__udivsi3, __aeabi_uidiv) -#endif +AUX_DECLS(__udivsi3) diff --git a/compiler-rt/lib/builtins/udivti3.c b/compiler-rt/lib/builtins/udivti3.c --- a/compiler-rt/lib/builtins/udivti3.c +++ b/compiler-rt/lib/builtins/udivti3.c @@ -16,7 +16,7 @@ // Returns: a / b -COMPILER_RT_ABI tu_int __udivti3(tu_int a, tu_int b) { +DECLARE_LIBCALL(tu_int, __udivti3, tu_int a, tu_int b) { return __udivmodti4(a, b, 0); } diff --git a/compiler-rt/lib/builtins/umoddi3.c b/compiler-rt/lib/builtins/umoddi3.c --- a/compiler-rt/lib/builtins/umoddi3.c +++ b/compiler-rt/lib/builtins/umoddi3.c @@ -18,6 +18,6 @@ // Returns: a % b -COMPILER_RT_ABI du_int __umoddi3(du_int a, du_int b) { +DECLARE_LIBCALL(du_int, __umoddi3, du_int a, du_int b) { return __umodXi3(a, b); } diff --git a/compiler-rt/lib/builtins/umodsi3.c b/compiler-rt/lib/builtins/umodsi3.c --- a/compiler-rt/lib/builtins/umodsi3.c +++ b/compiler-rt/lib/builtins/umodsi3.c @@ -18,6 +18,6 @@ // Returns: a % b -COMPILER_RT_ABI su_int __umodsi3(su_int a, su_int b) { +DECLARE_LIBCALL(su_int, __umodsi3, su_int a, su_int b) { return __umodXi3(a, b); } diff --git a/compiler-rt/lib/builtins/umodti3.c b/compiler-rt/lib/builtins/umodti3.c --- a/compiler-rt/lib/builtins/umodti3.c +++ b/compiler-rt/lib/builtins/umodti3.c @@ -16,7 +16,7 @@ // Returns: a % b -COMPILER_RT_ABI tu_int __umodti3(tu_int a, tu_int b) { +DECLARE_LIBCALL(tu_int, __umodti3, tu_int a, tu_int b) { tu_int r; __udivmodti4(a, b, &r); return r; diff --git a/compiler-rt/test/builtins/Unit/absvdi2_test.c b/compiler-rt/test/builtins/Unit/absvdi2_test.c --- a/compiler-rt/test/builtins/Unit/absvdi2_test.c +++ b/compiler-rt/test/builtins/Unit/absvdi2_test.c @@ -9,7 +9,7 @@ // Effects: aborts if abs(x) < 0 -COMPILER_RT_ABI di_int __absvdi2(di_int a); +DECLARE_LIBCALL(di_int, __absvdi2, di_int a); int test__absvdi2(di_int a) { diff --git a/compiler-rt/test/builtins/Unit/absvsi2_test.c b/compiler-rt/test/builtins/Unit/absvsi2_test.c --- a/compiler-rt/test/builtins/Unit/absvsi2_test.c +++ b/compiler-rt/test/builtins/Unit/absvsi2_test.c @@ -9,7 +9,7 @@ // Effects: aborts if abs(x) < 0 -COMPILER_RT_ABI si_int __absvsi2(si_int a); +DECLARE_LIBCALL(si_int, __absvsi2, si_int a); int test__absvsi2(si_int a) { diff --git a/compiler-rt/test/builtins/Unit/absvti2_test.c b/compiler-rt/test/builtins/Unit/absvti2_test.c --- a/compiler-rt/test/builtins/Unit/absvti2_test.c +++ b/compiler-rt/test/builtins/Unit/absvti2_test.c @@ -12,7 +12,7 @@ // Effects: aborts if abs(x) < 0 -COMPILER_RT_ABI ti_int __absvti2(ti_int a); +DECLARE_LIBCALL(ti_int, __absvti2, ti_int a); int test__absvti2(ti_int a) { diff --git a/compiler-rt/test/builtins/Unit/adddf3vfp_test.c b/compiler-rt/test/builtins/Unit/adddf3vfp_test.c --- a/compiler-rt/test/builtins/Unit/adddf3vfp_test.c +++ b/compiler-rt/test/builtins/Unit/adddf3vfp_test.c @@ -8,7 +8,7 @@ #if __arm__ && __VFP_FP__ -extern COMPILER_RT_ABI double __adddf3vfp(double a, double b); +extern DECLARE_LIBCALL(double, __adddf3vfp, double a, double b); int test__adddf3vfp(double a, double b) { diff --git a/compiler-rt/test/builtins/Unit/addsf3vfp_test.c b/compiler-rt/test/builtins/Unit/addsf3vfp_test.c --- a/compiler-rt/test/builtins/Unit/addsf3vfp_test.c +++ b/compiler-rt/test/builtins/Unit/addsf3vfp_test.c @@ -7,7 +7,7 @@ #include -extern COMPILER_RT_ABI float __addsf3vfp(float a, float b); +extern DECLARE_LIBCALL(float, __addsf3vfp, float a, float b); #if __arm__ && __VFP_FP__ int test__addsf3vfp(float a, float b) diff --git a/compiler-rt/test/builtins/Unit/addtf3_test.c b/compiler-rt/test/builtins/Unit/addtf3_test.c --- a/compiler-rt/test/builtins/Unit/addtf3_test.c +++ b/compiler-rt/test/builtins/Unit/addtf3_test.c @@ -10,7 +10,7 @@ #include "fp_test.h" // Returns: a + b -COMPILER_RT_ABI long double __addtf3(long double a, long double b); +DECLARE_LIBCALL(long double, __addtf3, long double a, long double b); int test__addtf3(long double a, long double b, uint64_t expectedHi, uint64_t expectedLo) diff --git a/compiler-rt/test/builtins/Unit/addvdi3_test.c b/compiler-rt/test/builtins/Unit/addvdi3_test.c --- a/compiler-rt/test/builtins/Unit/addvdi3_test.c +++ b/compiler-rt/test/builtins/Unit/addvdi3_test.c @@ -8,7 +8,7 @@ // Effects: aborts if a + b overflows -COMPILER_RT_ABI di_int __addvdi3(di_int a, di_int b); +DECLARE_LIBCALL(di_int, __addvdi3, di_int a, di_int b); int test__addvdi3(di_int a, di_int b) { diff --git a/compiler-rt/test/builtins/Unit/addvsi3_test.c b/compiler-rt/test/builtins/Unit/addvsi3_test.c --- a/compiler-rt/test/builtins/Unit/addvsi3_test.c +++ b/compiler-rt/test/builtins/Unit/addvsi3_test.c @@ -8,7 +8,7 @@ // Effects: aborts if a + b overflows -COMPILER_RT_ABI si_int __addvsi3(si_int a, si_int b); +DECLARE_LIBCALL(si_int, __addvsi3, si_int a, si_int b); int test__addvsi3(si_int a, si_int b) { diff --git a/compiler-rt/test/builtins/Unit/addvti3_test.c b/compiler-rt/test/builtins/Unit/addvti3_test.c --- a/compiler-rt/test/builtins/Unit/addvti3_test.c +++ b/compiler-rt/test/builtins/Unit/addvti3_test.c @@ -11,7 +11,7 @@ // Effects: aborts if a + b overflows -COMPILER_RT_ABI ti_int __addvti3(ti_int a, ti_int b); +DECLARE_LIBCALL(ti_int, __addvti3, ti_int a, ti_int b); int test__addvti3(ti_int a, ti_int b) { diff --git a/compiler-rt/test/builtins/Unit/ashldi3_test.c b/compiler-rt/test/builtins/Unit/ashldi3_test.c --- a/compiler-rt/test/builtins/Unit/ashldi3_test.c +++ b/compiler-rt/test/builtins/Unit/ashldi3_test.c @@ -8,7 +8,7 @@ // Precondition: 0 <= b < bits_in_dword -COMPILER_RT_ABI di_int __ashldi3(di_int a, int b); +DECLARE_LIBCALL(di_int, __ashldi3, di_int a, int b); int test__ashldi3(di_int a, int b, di_int expected) { diff --git a/compiler-rt/test/builtins/Unit/ashlti3_test.c b/compiler-rt/test/builtins/Unit/ashlti3_test.c --- a/compiler-rt/test/builtins/Unit/ashlti3_test.c +++ b/compiler-rt/test/builtins/Unit/ashlti3_test.c @@ -11,7 +11,7 @@ // Precondition: 0 <= b < bits_in_tword -COMPILER_RT_ABI ti_int __ashlti3(ti_int a, si_int b); +DECLARE_LIBCALL(ti_int, __ashlti3, ti_int a, si_int b); int test__ashlti3(ti_int a, si_int b, ti_int expected) { diff --git a/compiler-rt/test/builtins/Unit/ashrdi3_test.c b/compiler-rt/test/builtins/Unit/ashrdi3_test.c --- a/compiler-rt/test/builtins/Unit/ashrdi3_test.c +++ b/compiler-rt/test/builtins/Unit/ashrdi3_test.c @@ -8,7 +8,7 @@ // Precondition: 0 <= b < bits_in_dword -COMPILER_RT_ABI di_int __ashrdi3(di_int a, int b); +DECLARE_LIBCALL(di_int, __ashrdi3, di_int a, int b); int test__ashrdi3(di_int a, int b, di_int expected) { diff --git a/compiler-rt/test/builtins/Unit/ashrti3_test.c b/compiler-rt/test/builtins/Unit/ashrti3_test.c --- a/compiler-rt/test/builtins/Unit/ashrti3_test.c +++ b/compiler-rt/test/builtins/Unit/ashrti3_test.c @@ -11,7 +11,7 @@ // Precondition: 0 <= b < bits_in_tword -COMPILER_RT_ABI ti_int __ashrti3(ti_int a, si_int b); +DECLARE_LIBCALL(ti_int, __ashrti3, ti_int a, si_int b); int test__ashrti3(ti_int a, si_int b, ti_int expected) { diff --git a/compiler-rt/test/builtins/Unit/clzdi2_test.c b/compiler-rt/test/builtins/Unit/clzdi2_test.c --- a/compiler-rt/test/builtins/Unit/clzdi2_test.c +++ b/compiler-rt/test/builtins/Unit/clzdi2_test.c @@ -8,7 +8,7 @@ // Precondition: a != 0 -COMPILER_RT_ABI int __clzdi2(di_int a); +DECLARE_LIBCALL(int, __clzdi2, di_int a); int test__clzdi2(di_int a, int expected) { diff --git a/compiler-rt/test/builtins/Unit/clzsi2_test.c b/compiler-rt/test/builtins/Unit/clzsi2_test.c --- a/compiler-rt/test/builtins/Unit/clzsi2_test.c +++ b/compiler-rt/test/builtins/Unit/clzsi2_test.c @@ -8,7 +8,7 @@ // Precondition: a != 0 -COMPILER_RT_ABI int __clzsi2(si_int a); +DECLARE_LIBCALL(int, __clzsi2, si_int a); int test__clzsi2(si_int a, int expected) { diff --git a/compiler-rt/test/builtins/Unit/clzti2_test.c b/compiler-rt/test/builtins/Unit/clzti2_test.c --- a/compiler-rt/test/builtins/Unit/clzti2_test.c +++ b/compiler-rt/test/builtins/Unit/clzti2_test.c @@ -11,7 +11,7 @@ // Precondition: a != 0 -COMPILER_RT_ABI int __clzti2(ti_int a); +DECLARE_LIBCALL(int, __clzti2, ti_int a); int test__clzti2(ti_int a, int expected) { diff --git a/compiler-rt/test/builtins/Unit/cmpdi2_test.c b/compiler-rt/test/builtins/Unit/cmpdi2_test.c --- a/compiler-rt/test/builtins/Unit/cmpdi2_test.c +++ b/compiler-rt/test/builtins/Unit/cmpdi2_test.c @@ -8,7 +8,7 @@ // if (a == b) returns 1 // if (a > b) returns 2 -COMPILER_RT_ABI si_int __cmpdi2(di_int a, di_int b); +DECLARE_LIBCALL(si_int, __cmpdi2, di_int a, di_int b); int test__cmpdi2(di_int a, di_int b, si_int expected) { diff --git a/compiler-rt/test/builtins/Unit/cmpti2_test.c b/compiler-rt/test/builtins/Unit/cmpti2_test.c --- a/compiler-rt/test/builtins/Unit/cmpti2_test.c +++ b/compiler-rt/test/builtins/Unit/cmpti2_test.c @@ -11,7 +11,7 @@ // if (a == b) returns 1 // if (a > b) returns 2 -COMPILER_RT_ABI si_int __cmpti2(ti_int a, ti_int b); +DECLARE_LIBCALL(si_int, __cmpti2, ti_int a, ti_int b); int test__cmpti2(ti_int a, ti_int b, si_int expected) { diff --git a/compiler-rt/test/builtins/Unit/ctzdi2_test.c b/compiler-rt/test/builtins/Unit/ctzdi2_test.c --- a/compiler-rt/test/builtins/Unit/ctzdi2_test.c +++ b/compiler-rt/test/builtins/Unit/ctzdi2_test.c @@ -8,7 +8,7 @@ // Precondition: a != 0 -COMPILER_RT_ABI int __ctzdi2(di_int a); +DECLARE_LIBCALL(int, __ctzdi2, di_int a); int test__ctzdi2(di_int a, int expected) { diff --git a/compiler-rt/test/builtins/Unit/ctzsi2_test.c b/compiler-rt/test/builtins/Unit/ctzsi2_test.c --- a/compiler-rt/test/builtins/Unit/ctzsi2_test.c +++ b/compiler-rt/test/builtins/Unit/ctzsi2_test.c @@ -8,7 +8,7 @@ // Precondition: a != 0 -COMPILER_RT_ABI int __ctzsi2(si_int a); +DECLARE_LIBCALL(int, __ctzsi2, si_int a); int test__ctzsi2(si_int a, int expected) { diff --git a/compiler-rt/test/builtins/Unit/ctzti2_test.c b/compiler-rt/test/builtins/Unit/ctzti2_test.c --- a/compiler-rt/test/builtins/Unit/ctzti2_test.c +++ b/compiler-rt/test/builtins/Unit/ctzti2_test.c @@ -11,7 +11,7 @@ // Precondition: a != 0 -COMPILER_RT_ABI int __ctzti2(ti_int a); +DECLARE_LIBCALL(int, __ctzti2, ti_int a); int test__ctzti2(ti_int a, int expected) { diff --git a/compiler-rt/test/builtins/Unit/divdc3_test.c b/compiler-rt/test/builtins/Unit/divdc3_test.c --- a/compiler-rt/test/builtins/Unit/divdc3_test.c +++ b/compiler-rt/test/builtins/Unit/divdc3_test.c @@ -10,8 +10,8 @@ // Returns: the quotient of (a + ib) / (c + id) -COMPILER_RT_ABI double _Complex -__divdc3(double __a, double __b, double __c, double __d); +DECLARE_LIBCALL(double _Complex, __divdc3, + double __a, double __b, double __c, double __d); enum {zero, non_zero, inf, NaN, non_zero_nan}; diff --git a/compiler-rt/test/builtins/Unit/divdf3_test.c b/compiler-rt/test/builtins/Unit/divdf3_test.c --- a/compiler-rt/test/builtins/Unit/divdf3_test.c +++ b/compiler-rt/test/builtins/Unit/divdf3_test.c @@ -7,7 +7,7 @@ #include "fp_test.h" // Returns: a / b -COMPILER_RT_ABI double __divdf3(double a, double b); +DECLARE_LIBCALL(double, __divdf3, double a, double b); int test__divdf3(double a, double b, uint64_t expected) { diff --git a/compiler-rt/test/builtins/Unit/divdf3vfp_test.c b/compiler-rt/test/builtins/Unit/divdf3vfp_test.c --- a/compiler-rt/test/builtins/Unit/divdf3vfp_test.c +++ b/compiler-rt/test/builtins/Unit/divdf3vfp_test.c @@ -8,7 +8,7 @@ #if __arm__ && __VFP_FP__ -extern COMPILER_RT_ABI double __divdf3vfp(double a, double b); +extern DECLARE_LIBCALL(double, __divdf3vfp, double a, double b); int test__divdf3vfp(double a, double b) { diff --git a/compiler-rt/test/builtins/Unit/divdi3_test.c b/compiler-rt/test/builtins/Unit/divdi3_test.c --- a/compiler-rt/test/builtins/Unit/divdi3_test.c +++ b/compiler-rt/test/builtins/Unit/divdi3_test.c @@ -6,7 +6,7 @@ // Returns: a / b -COMPILER_RT_ABI di_int __divdi3(di_int a, di_int b); +DECLARE_LIBCALL(di_int, __divdi3, di_int a, di_int b); int test__divdi3(di_int a, di_int b, di_int expected) { diff --git a/compiler-rt/test/builtins/Unit/divmodsi4_test.c b/compiler-rt/test/builtins/Unit/divmodsi4_test.c --- a/compiler-rt/test/builtins/Unit/divmodsi4_test.c +++ b/compiler-rt/test/builtins/Unit/divmodsi4_test.c @@ -6,7 +6,7 @@ // Returns: a / b -extern COMPILER_RT_ABI si_int __divmodsi4(si_int a, si_int b, si_int* rem); +extern DECLARE_LIBCALL(si_int, __divmodsi4, si_int a, si_int b, si_int* rem); int test__divmodsi4(si_int a, si_int b, diff --git a/compiler-rt/test/builtins/Unit/divsc3_test.c b/compiler-rt/test/builtins/Unit/divsc3_test.c --- a/compiler-rt/test/builtins/Unit/divsc3_test.c +++ b/compiler-rt/test/builtins/Unit/divsc3_test.c @@ -10,8 +10,8 @@ // Returns: the quotient of (a + ib) / (c + id) -COMPILER_RT_ABI float _Complex -__divsc3(float __a, float __b, float __c, float __d); +DECLARE_LIBCALL(float _Complex, __divsc3, + float __a, float __b, float __c, float __d); enum {zero, non_zero, inf, NaN, non_zero_nan}; diff --git a/compiler-rt/test/builtins/Unit/divsf3_test.c b/compiler-rt/test/builtins/Unit/divsf3_test.c --- a/compiler-rt/test/builtins/Unit/divsf3_test.c +++ b/compiler-rt/test/builtins/Unit/divsf3_test.c @@ -7,7 +7,7 @@ #include "fp_test.h" // Returns: a / b -COMPILER_RT_ABI float __divsf3(float a, float b); +DECLARE_LIBCALL(float, __divsf3, float a, float b); int test__divsf3(float a, float b, uint32_t expected) { diff --git a/compiler-rt/test/builtins/Unit/divsf3vfp_test.c b/compiler-rt/test/builtins/Unit/divsf3vfp_test.c --- a/compiler-rt/test/builtins/Unit/divsf3vfp_test.c +++ b/compiler-rt/test/builtins/Unit/divsf3vfp_test.c @@ -7,7 +7,7 @@ #include -extern COMPILER_RT_ABI float __divsf3vfp(float a, float b); +extern DECLARE_LIBCALL(float, __divsf3vfp, float a, float b); #if __arm__ && __VFP_FP__ int test__divsf3vfp(float a, float b) diff --git a/compiler-rt/test/builtins/Unit/divsi3_test.c b/compiler-rt/test/builtins/Unit/divsi3_test.c --- a/compiler-rt/test/builtins/Unit/divsi3_test.c +++ b/compiler-rt/test/builtins/Unit/divsi3_test.c @@ -6,7 +6,7 @@ // Returns: a / b -COMPILER_RT_ABI si_int __divsi3(si_int a, si_int b); +DECLARE_LIBCALL(si_int, __divsi3, si_int a, si_int b); int test__divsi3(si_int a, si_int b, si_int expected) { diff --git a/compiler-rt/test/builtins/Unit/divtc3_test.c b/compiler-rt/test/builtins/Unit/divtc3_test.c --- a/compiler-rt/test/builtins/Unit/divtc3_test.c +++ b/compiler-rt/test/builtins/Unit/divtc3_test.c @@ -15,8 +15,8 @@ // Returns: the quotient of (a + ib) / (c + id) -COMPILER_RT_ABI long double _Complex -__divtc3(long double __a, long double __b, long double __c, long double __d); +DECLARE_LIBCALL(long double _Complex, __divtc3, + long double __a, long double __b, long double __c, long double __d); enum {zero, non_zero, inf, NaN, non_zero_nan}; diff --git a/compiler-rt/test/builtins/Unit/divtf3_test.c b/compiler-rt/test/builtins/Unit/divtf3_test.c --- a/compiler-rt/test/builtins/Unit/divtf3_test.c +++ b/compiler-rt/test/builtins/Unit/divtf3_test.c @@ -9,7 +9,7 @@ #include "fp_test.h" // Returns: a / b -COMPILER_RT_ABI long double __divtf3(long double a, long double b); +DECLARE_LIBCALL(long double, __divtf3, long double a, long double b); int test__divtf3(long double a, long double b, uint64_t expectedHi, uint64_t expectedLo) diff --git a/compiler-rt/test/builtins/Unit/divti3_test.c b/compiler-rt/test/builtins/Unit/divti3_test.c --- a/compiler-rt/test/builtins/Unit/divti3_test.c +++ b/compiler-rt/test/builtins/Unit/divti3_test.c @@ -9,7 +9,7 @@ // Returns: a / b -COMPILER_RT_ABI ti_int __divti3(ti_int a, ti_int b); +DECLARE_LIBCALL(ti_int, __divti3, ti_int a, ti_int b); int test__divti3(ti_int a, ti_int b, ti_int expected) { diff --git a/compiler-rt/test/builtins/Unit/divxc3_test.c b/compiler-rt/test/builtins/Unit/divxc3_test.c --- a/compiler-rt/test/builtins/Unit/divxc3_test.c +++ b/compiler-rt/test/builtins/Unit/divxc3_test.c @@ -15,8 +15,8 @@ // Returns: the quotient of (a + ib) / (c + id) -COMPILER_RT_ABI long double _Complex -__divxc3(long double __a, long double __b, long double __c, long double __d); +DECLARE_LIBCALL(long double _Complex, __divxc3, + long double __a, long double __b, long double __c, long double __d); enum {zero, non_zero, inf, NaN, non_zero_nan}; diff --git a/compiler-rt/test/builtins/Unit/extenddftf2_test.c b/compiler-rt/test/builtins/Unit/extenddftf2_test.c --- a/compiler-rt/test/builtins/Unit/extenddftf2_test.c +++ b/compiler-rt/test/builtins/Unit/extenddftf2_test.c @@ -8,7 +8,7 @@ #include "fp_test.h" -COMPILER_RT_ABI long double __extenddftf2(double a); +DECLARE_LIBCALL(long double, __extenddftf2, double a); int test__extenddftf2(double a, uint64_t expectedHi, uint64_t expectedLo) { diff --git a/compiler-rt/test/builtins/Unit/extendsfdf2vfp_test.c b/compiler-rt/test/builtins/Unit/extendsfdf2vfp_test.c --- a/compiler-rt/test/builtins/Unit/extendsfdf2vfp_test.c +++ b/compiler-rt/test/builtins/Unit/extendsfdf2vfp_test.c @@ -7,7 +7,7 @@ #include -extern COMPILER_RT_ABI double __extendsfdf2vfp(float a); +extern DECLARE_LIBCALL(double, __extendsfdf2vfp, float a); #if __arm__ && __VFP_FP__ int test__extendsfdf2vfp(float a) diff --git a/compiler-rt/test/builtins/Unit/extendsftf2_test.c b/compiler-rt/test/builtins/Unit/extendsftf2_test.c --- a/compiler-rt/test/builtins/Unit/extendsftf2_test.c +++ b/compiler-rt/test/builtins/Unit/extendsftf2_test.c @@ -8,7 +8,7 @@ #include "fp_test.h" -COMPILER_RT_ABI long double __extendsftf2(float a); +DECLARE_LIBCALL(long double, __extendsftf2, float a); int test__extendsftf2(float a, uint64_t expectedHi, uint64_t expectedLo) { diff --git a/compiler-rt/test/builtins/Unit/ffsdi2_test.c b/compiler-rt/test/builtins/Unit/ffsdi2_test.c --- a/compiler-rt/test/builtins/Unit/ffsdi2_test.c +++ b/compiler-rt/test/builtins/Unit/ffsdi2_test.c @@ -7,7 +7,7 @@ // Returns: the index of the least significant 1-bit in a, or // the value zero if a is zero. The least significant bit is index one. -COMPILER_RT_ABI int __ffsdi2(di_int a); +DECLARE_LIBCALL(int, __ffsdi2, di_int a); int test__ffsdi2(di_int a, int expected) { diff --git a/compiler-rt/test/builtins/Unit/ffssi2_test.c b/compiler-rt/test/builtins/Unit/ffssi2_test.c --- a/compiler-rt/test/builtins/Unit/ffssi2_test.c +++ b/compiler-rt/test/builtins/Unit/ffssi2_test.c @@ -7,7 +7,7 @@ // Returns: the index of the least significant 1-bit in a, or // the value zero if a is zero. The least significant bit is index one. -COMPILER_RT_ABI int __ffssi2(si_int a); +DECLARE_LIBCALL(int, __ffssi2, si_int a); int test__ffssi2(si_int a, int expected) { diff --git a/compiler-rt/test/builtins/Unit/ffsti2_test.c b/compiler-rt/test/builtins/Unit/ffsti2_test.c --- a/compiler-rt/test/builtins/Unit/ffsti2_test.c +++ b/compiler-rt/test/builtins/Unit/ffsti2_test.c @@ -10,7 +10,7 @@ // Returns: the index of the least significant 1-bit in a, or // the value zero if a is zero. The least significant bit is index one. -COMPILER_RT_ABI int __ffsti2(ti_int a); +DECLARE_LIBCALL(int, __ffsti2, ti_int a); int test__ffsti2(ti_int a, int expected) { diff --git a/compiler-rt/test/builtins/Unit/fixdfdi_test.c b/compiler-rt/test/builtins/Unit/fixdfdi_test.c --- a/compiler-rt/test/builtins/Unit/fixdfdi_test.c +++ b/compiler-rt/test/builtins/Unit/fixdfdi_test.c @@ -12,7 +12,7 @@ // seee eeee eeee mmmm mmmm mmmm mmmm mmmm | mmmm mmmm mmmm mmmm mmmm mmmm mmmm mmmm -COMPILER_RT_ABI di_int __fixdfdi(double a); +DECLARE_LIBCALL(di_int, __fixdfdi, double a); int test__fixdfdi(double a, di_int expected) { diff --git a/compiler-rt/test/builtins/Unit/fixdfti_test.c b/compiler-rt/test/builtins/Unit/fixdfti_test.c --- a/compiler-rt/test/builtins/Unit/fixdfti_test.c +++ b/compiler-rt/test/builtins/Unit/fixdfti_test.c @@ -15,7 +15,7 @@ // seee eeee eeee mmmm mmmm mmmm mmmm mmmm | mmmm mmmm mmmm mmmm mmmm mmmm mmmm mmmm -COMPILER_RT_ABI ti_int __fixdfti(double a); +DECLARE_LIBCALL(ti_int, __fixdfti, double a); int test__fixdfti(double a, ti_int expected) { diff --git a/compiler-rt/test/builtins/Unit/fixsfdi_test.c b/compiler-rt/test/builtins/Unit/fixsfdi_test.c --- a/compiler-rt/test/builtins/Unit/fixsfdi_test.c +++ b/compiler-rt/test/builtins/Unit/fixsfdi_test.c @@ -12,7 +12,7 @@ // seee eeee emmm mmmm mmmm mmmm mmmm mmmm -COMPILER_RT_ABI di_int __fixsfdi(float a); +DECLARE_LIBCALL(di_int, __fixsfdi, float a); int test__fixsfdi(float a, di_int expected) { diff --git a/compiler-rt/test/builtins/Unit/fixsfti_test.c b/compiler-rt/test/builtins/Unit/fixsfti_test.c --- a/compiler-rt/test/builtins/Unit/fixsfti_test.c +++ b/compiler-rt/test/builtins/Unit/fixsfti_test.c @@ -15,7 +15,7 @@ // seee eeee emmm mmmm mmmm mmmm mmmm mmmm -COMPILER_RT_ABI ti_int __fixsfti(float a); +DECLARE_LIBCALL(ti_int, __fixsfti, float a); int test__fixsfti(float a, ti_int expected) { diff --git a/compiler-rt/test/builtins/Unit/fixunsdfdi_test.c b/compiler-rt/test/builtins/Unit/fixunsdfdi_test.c --- a/compiler-rt/test/builtins/Unit/fixunsdfdi_test.c +++ b/compiler-rt/test/builtins/Unit/fixunsdfdi_test.c @@ -14,7 +14,7 @@ // seee eeee eeee mmmm mmmm mmmm mmmm mmmm | mmmm mmmm mmmm mmmm mmmm mmmm mmmm mmmm -COMPILER_RT_ABI du_int __fixunsdfdi(double a); +DECLARE_LIBCALL(du_int, __fixunsdfdi, double a); int test__fixunsdfdi(double a, du_int expected) { diff --git a/compiler-rt/test/builtins/Unit/fixunsdfsi_test.c b/compiler-rt/test/builtins/Unit/fixunsdfsi_test.c --- a/compiler-rt/test/builtins/Unit/fixunsdfsi_test.c +++ b/compiler-rt/test/builtins/Unit/fixunsdfsi_test.c @@ -14,7 +14,7 @@ // seee eeee eeee mmmm mmmm mmmm mmmm mmmm | mmmm mmmm mmmm mmmm mmmm mmmm mmmm mmmm -COMPILER_RT_ABI su_int __fixunsdfsi(double a); +DECLARE_LIBCALL(su_int, __fixunsdfsi, double a); int test__fixunsdfsi(double a, su_int expected) { diff --git a/compiler-rt/test/builtins/Unit/fixunsdfsivfp_test.c b/compiler-rt/test/builtins/Unit/fixunsdfsivfp_test.c --- a/compiler-rt/test/builtins/Unit/fixunsdfsivfp_test.c +++ b/compiler-rt/test/builtins/Unit/fixunsdfsivfp_test.c @@ -7,7 +7,7 @@ #include -extern COMPILER_RT_ABI unsigned int __fixunsdfsivfp(double a); +extern DECLARE_LIBCALL(unsigned int, __fixunsdfsivfp, double a); #if __arm__ && __VFP_FP__ int test__fixunsdfsivfp(double a) diff --git a/compiler-rt/test/builtins/Unit/fixunsdfti_test.c b/compiler-rt/test/builtins/Unit/fixunsdfti_test.c --- a/compiler-rt/test/builtins/Unit/fixunsdfti_test.c +++ b/compiler-rt/test/builtins/Unit/fixunsdfti_test.c @@ -17,7 +17,7 @@ #ifdef CRT_HAS_128BIT -COMPILER_RT_ABI tu_int __fixunsdfti(double a); +DECLARE_LIBCALL(tu_int, __fixunsdfti, double a); int test__fixunsdfti(double a, tu_int expected) { diff --git a/compiler-rt/test/builtins/Unit/fixunssfdi_test.c b/compiler-rt/test/builtins/Unit/fixunssfdi_test.c --- a/compiler-rt/test/builtins/Unit/fixunssfdi_test.c +++ b/compiler-rt/test/builtins/Unit/fixunssfdi_test.c @@ -14,7 +14,7 @@ // seee eeee emmm mmmm mmmm mmmm mmmm mmmm -COMPILER_RT_ABI du_int __fixunssfdi(float a); +DECLARE_LIBCALL(du_int, __fixunssfdi, float a); int test__fixunssfdi(float a, du_int expected) { diff --git a/compiler-rt/test/builtins/Unit/fixunssfsi_test.c b/compiler-rt/test/builtins/Unit/fixunssfsi_test.c --- a/compiler-rt/test/builtins/Unit/fixunssfsi_test.c +++ b/compiler-rt/test/builtins/Unit/fixunssfsi_test.c @@ -14,7 +14,7 @@ // seee eeee emmm mmmm mmmm mmmm mmmm mmmm -COMPILER_RT_ABI su_int __fixunssfsi(float a); +DECLARE_LIBCALL(su_int, __fixunssfsi, float a); int test__fixunssfsi(float a, su_int expected) { diff --git a/compiler-rt/test/builtins/Unit/fixunssfti_test.c b/compiler-rt/test/builtins/Unit/fixunssfti_test.c --- a/compiler-rt/test/builtins/Unit/fixunssfti_test.c +++ b/compiler-rt/test/builtins/Unit/fixunssfti_test.c @@ -17,7 +17,7 @@ // seee eeee emmm mmmm mmmm mmmm mmmm mmmm -COMPILER_RT_ABI tu_int __fixunssfti(float a); +DECLARE_LIBCALL(tu_int, __fixunssfti, float a); int test__fixunssfti(float a, tu_int expected) { diff --git a/compiler-rt/test/builtins/Unit/fixunstfdi_test.c b/compiler-rt/test/builtins/Unit/fixunstfdi_test.c --- a/compiler-rt/test/builtins/Unit/fixunstfdi_test.c +++ b/compiler-rt/test/builtins/Unit/fixunstfdi_test.c @@ -15,7 +15,7 @@ // value in long double is representable in du_int or is negative // (no range checking performed) -COMPILER_RT_ABI du_int __fixunstfdi(long double a); +DECLARE_LIBCALL(du_int, __fixunstfdi, long double a); int test__fixunstfdi(long double a, du_int expected) { diff --git a/compiler-rt/test/builtins/Unit/fixunstfti_test.c b/compiler-rt/test/builtins/Unit/fixunstfti_test.c --- a/compiler-rt/test/builtins/Unit/fixunstfti_test.c +++ b/compiler-rt/test/builtins/Unit/fixunstfti_test.c @@ -18,7 +18,7 @@ // value in long double is representable in tu_int or is negative // (no range checking performed) -COMPILER_RT_ABI tu_int __fixunstfti(long double a); +DECLARE_LIBCALL(tu_int, __fixunstfti, long double a); int test__fixunstfti(long double a, tu_int expected) { diff --git a/compiler-rt/test/builtins/Unit/fixunsxfdi_test.c b/compiler-rt/test/builtins/Unit/fixunsxfdi_test.c --- a/compiler-rt/test/builtins/Unit/fixunsxfdi_test.c +++ b/compiler-rt/test/builtins/Unit/fixunsxfdi_test.c @@ -18,7 +18,7 @@ // gggg gggg gggg gggg gggg gggg gggg gggg | gggg gggg gggg gggg seee eeee eeee eeee | // 1mmm mmmm mmmm mmmm mmmm mmmm mmmm mmmm | mmmm mmmm mmmm mmmm mmmm mmmm mmmm mmmm -COMPILER_RT_ABI du_int __fixunsxfdi(long double a); +DECLARE_LIBCALL(du_int, __fixunsxfdi, long double a); int test__fixunsxfdi(long double a, du_int expected) { diff --git a/compiler-rt/test/builtins/Unit/fixunsxfsi_test.c b/compiler-rt/test/builtins/Unit/fixunsxfsi_test.c --- a/compiler-rt/test/builtins/Unit/fixunsxfsi_test.c +++ b/compiler-rt/test/builtins/Unit/fixunsxfsi_test.c @@ -16,7 +16,7 @@ // gggg gggg gggg gggg gggg gggg gggg gggg | gggg gggg gggg gggg seee eeee eeee eeee | // 1mmm mmmm mmmm mmmm mmmm mmmm mmmm mmmm | mmmm mmmm mmmm mmmm mmmm mmmm mmmm mmmm -COMPILER_RT_ABI su_int __fixunsxfsi(long double a); +DECLARE_LIBCALL(su_int, __fixunsxfsi, long double a); int test__fixunsxfsi(long double a, su_int expected) { diff --git a/compiler-rt/test/builtins/Unit/fixunsxfti_test.c b/compiler-rt/test/builtins/Unit/fixunsxfti_test.c --- a/compiler-rt/test/builtins/Unit/fixunsxfti_test.c +++ b/compiler-rt/test/builtins/Unit/fixunsxfti_test.c @@ -18,7 +18,7 @@ // gggg gggg gggg gggg gggg gggg gggg gggg | gggg gggg gggg gggg seee eeee eeee eeee | // 1mmm mmmm mmmm mmmm mmmm mmmm mmmm mmmm | mmmm mmmm mmmm mmmm mmmm mmmm mmmm mmmm -COMPILER_RT_ABI tu_int __fixunsxfti(long double a); +DECLARE_LIBCALL(tu_int, __fixunsxfti, long double a); int test__fixunsxfti(long double a, tu_int expected) { diff --git a/compiler-rt/test/builtins/Unit/fixxfdi_test.c b/compiler-rt/test/builtins/Unit/fixxfdi_test.c --- a/compiler-rt/test/builtins/Unit/fixxfdi_test.c +++ b/compiler-rt/test/builtins/Unit/fixxfdi_test.c @@ -15,7 +15,7 @@ // gggg gggg gggg gggg gggg gggg gggg gggg | gggg gggg gggg gggg seee eeee eeee eeee | // 1mmm mmmm mmmm mmmm mmmm mmmm mmmm mmmm | mmmm mmmm mmmm mmmm mmmm mmmm mmmm mmmm -COMPILER_RT_ABI di_int __fixxfdi(long double a); +DECLARE_LIBCALL(di_int, __fixxfdi, long double a); int test__fixxfdi(long double a, di_int expected) { diff --git a/compiler-rt/test/builtins/Unit/fixxfti_test.c b/compiler-rt/test/builtins/Unit/fixxfti_test.c --- a/compiler-rt/test/builtins/Unit/fixxfti_test.c +++ b/compiler-rt/test/builtins/Unit/fixxfti_test.c @@ -16,7 +16,7 @@ // gggg gggg gggg gggg gggg gggg gggg gggg | gggg gggg gggg gggg seee eeee eeee eeee | // 1mmm mmmm mmmm mmmm mmmm mmmm mmmm mmmm | mmmm mmmm mmmm mmmm mmmm mmmm mmmm mmmm -COMPILER_RT_ABI ti_int __fixxfti(long double a); +DECLARE_LIBCALL(ti_int, __fixxfti, long double a); int test__fixxfti(long double a, ti_int expected) { diff --git a/compiler-rt/test/builtins/Unit/floatdidf_test.c b/compiler-rt/test/builtins/Unit/floatdidf_test.c --- a/compiler-rt/test/builtins/Unit/floatdidf_test.c +++ b/compiler-rt/test/builtins/Unit/floatdidf_test.c @@ -12,7 +12,7 @@ // seee eeee eeee mmmm mmmm mmmm mmmm mmmm | mmmm mmmm mmmm mmmm mmmm mmmm mmmm mmmm -COMPILER_RT_ABI double __floatdidf(di_int a); +DECLARE_LIBCALL(double, __floatdidf, di_int a); int test__floatdidf(di_int a, double expected) { diff --git a/compiler-rt/test/builtins/Unit/floatdisf_test.c b/compiler-rt/test/builtins/Unit/floatdisf_test.c --- a/compiler-rt/test/builtins/Unit/floatdisf_test.c +++ b/compiler-rt/test/builtins/Unit/floatdisf_test.c @@ -12,7 +12,7 @@ // seee eeee emmm mmmm mmmm mmmm mmmm mmmm -COMPILER_RT_ABI float __floatdisf(di_int a); +DECLARE_LIBCALL(float, __floatdisf, di_int a); int test__floatdisf(di_int a, float expected) { diff --git a/compiler-rt/test/builtins/Unit/floatditf_test.c b/compiler-rt/test/builtins/Unit/floatditf_test.c --- a/compiler-rt/test/builtins/Unit/floatditf_test.c +++ b/compiler-rt/test/builtins/Unit/floatditf_test.c @@ -12,7 +12,7 @@ // Returns: long integer converted to long double -COMPILER_RT_ABI long double __floatditf(long long a); +DECLARE_LIBCALL(long double, __floatditf, long long a); int test__floatditf(long long a, uint64_t expectedHi, uint64_t expectedLo) { diff --git a/compiler-rt/test/builtins/Unit/floatdixf_test.c b/compiler-rt/test/builtins/Unit/floatdixf_test.c --- a/compiler-rt/test/builtins/Unit/floatdixf_test.c +++ b/compiler-rt/test/builtins/Unit/floatdixf_test.c @@ -13,7 +13,7 @@ // gggg gggg gggg gggg gggg gggg gggg gggg | gggg gggg gggg gggg seee eeee eeee eeee | // 1mmm mmmm mmmm mmmm mmmm mmmm mmmm mmmm | mmmm mmmm mmmm mmmm mmmm mmmm mmmm mmmm -long COMPILER_RT_ABI double __floatdixf(di_int a); +long DECLARE_LIBCALL(double, __floatdixf, di_int a); int test__floatdixf(di_int a, long double expected) { diff --git a/compiler-rt/test/builtins/Unit/floatsidfvfp_test.c b/compiler-rt/test/builtins/Unit/floatsidfvfp_test.c --- a/compiler-rt/test/builtins/Unit/floatsidfvfp_test.c +++ b/compiler-rt/test/builtins/Unit/floatsidfvfp_test.c @@ -7,7 +7,7 @@ #include -extern COMPILER_RT_ABI double __floatsidfvfp(int a); +extern DECLARE_LIBCALL(double, __floatsidfvfp, int a); #if __arm__ && __VFP_FP__ int test__floatsidfvfp(int a) diff --git a/compiler-rt/test/builtins/Unit/floatsisfvfp_test.c b/compiler-rt/test/builtins/Unit/floatsisfvfp_test.c --- a/compiler-rt/test/builtins/Unit/floatsisfvfp_test.c +++ b/compiler-rt/test/builtins/Unit/floatsisfvfp_test.c @@ -7,7 +7,7 @@ #include -extern COMPILER_RT_ABI float __floatsisfvfp(int a); +extern DECLARE_LIBCALL(float, __floatsisfvfp, int a); #if __arm__ && __VFP_FP__ int test__floatsisfvfp(int a) diff --git a/compiler-rt/test/builtins/Unit/floatsitf_test.c b/compiler-rt/test/builtins/Unit/floatsitf_test.c --- a/compiler-rt/test/builtins/Unit/floatsitf_test.c +++ b/compiler-rt/test/builtins/Unit/floatsitf_test.c @@ -8,7 +8,7 @@ #include "fp_test.h" -long COMPILER_RT_ABI double __floatsitf(int a); +long DECLARE_LIBCALL(double, __floatsitf, int a); int test__floatsitf(int a, uint64_t expectedHi, uint64_t expectedLo) { diff --git a/compiler-rt/test/builtins/Unit/floattidf_test.c b/compiler-rt/test/builtins/Unit/floattidf_test.c --- a/compiler-rt/test/builtins/Unit/floattidf_test.c +++ b/compiler-rt/test/builtins/Unit/floattidf_test.c @@ -15,7 +15,7 @@ // seee eeee eeee mmmm mmmm mmmm mmmm mmmm | mmmm mmmm mmmm mmmm mmmm mmmm mmmm mmmm -COMPILER_RT_ABI double __floattidf(ti_int a); +DECLARE_LIBCALL(double, __floattidf, ti_int a); int test__floattidf(ti_int a, double expected) { diff --git a/compiler-rt/test/builtins/Unit/floattisf_test.c b/compiler-rt/test/builtins/Unit/floattisf_test.c --- a/compiler-rt/test/builtins/Unit/floattisf_test.c +++ b/compiler-rt/test/builtins/Unit/floattisf_test.c @@ -15,7 +15,7 @@ // seee eeee emmm mmmm mmmm mmmm mmmm mmmm -COMPILER_RT_ABI float __floattisf(ti_int a); +DECLARE_LIBCALL(float, __floattisf, ti_int a); int test__floattisf(ti_int a, float expected) { diff --git a/compiler-rt/test/builtins/Unit/floattitf_test.c b/compiler-rt/test/builtins/Unit/floattitf_test.c --- a/compiler-rt/test/builtins/Unit/floattitf_test.c +++ b/compiler-rt/test/builtins/Unit/floattitf_test.c @@ -19,7 +19,7 @@ * mmmm mmmm mmmm mmmm mmmm mmmm mmmm mmmm | mmmm mmmm mmmm mmmm mmmm mmmm mmmm mmmm */ -COMPILER_RT_ABI fp_t __floattitf(ti_int a); +DECLARE_LIBCALL(fp_t, __floattitf, ti_int a); int test__floattitf(ti_int a, fp_t expected) { fp_t x = __floattitf(a); diff --git a/compiler-rt/test/builtins/Unit/floattixf_test.c b/compiler-rt/test/builtins/Unit/floattixf_test.c --- a/compiler-rt/test/builtins/Unit/floattixf_test.c +++ b/compiler-rt/test/builtins/Unit/floattixf_test.c @@ -16,7 +16,7 @@ // gggg gggg gggg gggg gggg gggg gggg gggg | gggg gggg gggg gggg seee eeee eeee eeee | // 1mmm mmmm mmmm mmmm mmmm mmmm mmmm mmmm | mmmm mmmm mmmm mmmm mmmm mmmm mmmm mmmm -COMPILER_RT_ABI long double __floattixf(ti_int a); +DECLARE_LIBCALL(long double, __floattixf, ti_int a); int test__floattixf(ti_int a, long double expected) { diff --git a/compiler-rt/test/builtins/Unit/floatundidf_test.c b/compiler-rt/test/builtins/Unit/floatundidf_test.c --- a/compiler-rt/test/builtins/Unit/floatundidf_test.c +++ b/compiler-rt/test/builtins/Unit/floatundidf_test.c @@ -12,7 +12,7 @@ // seee eeee eeee mmmm mmmm mmmm mmmm mmmm | mmmm mmmm mmmm mmmm mmmm mmmm mmmm mmmm -COMPILER_RT_ABI double __floatundidf(du_int a); +DECLARE_LIBCALL(double, __floatundidf, du_int a); int test__floatundidf(di_int a, double expected) { diff --git a/compiler-rt/test/builtins/Unit/floatundisf_test.c b/compiler-rt/test/builtins/Unit/floatundisf_test.c --- a/compiler-rt/test/builtins/Unit/floatundisf_test.c +++ b/compiler-rt/test/builtins/Unit/floatundisf_test.c @@ -12,7 +12,7 @@ // seee eeee emmm mmmm mmmm mmmm mmmm mmmm -COMPILER_RT_ABI float __floatundisf(du_int a); +DECLARE_LIBCALL(float, __floatundisf, du_int a); int test__floatundisf(du_int a, float expected) { diff --git a/compiler-rt/test/builtins/Unit/floatunditf_test.c b/compiler-rt/test/builtins/Unit/floatunditf_test.c --- a/compiler-rt/test/builtins/Unit/floatunditf_test.c +++ b/compiler-rt/test/builtins/Unit/floatunditf_test.c @@ -12,7 +12,7 @@ // Returns: long integer converted to long double -COMPILER_RT_ABI long double __floatunditf(unsigned long long a); +DECLARE_LIBCALL(long double, __floatunditf, unsigned long long a); int test__floatunditf(unsigned long long a, uint64_t expectedHi, uint64_t expectedLo) { diff --git a/compiler-rt/test/builtins/Unit/floatundixf_test.c b/compiler-rt/test/builtins/Unit/floatundixf_test.c --- a/compiler-rt/test/builtins/Unit/floatundixf_test.c +++ b/compiler-rt/test/builtins/Unit/floatundixf_test.c @@ -14,7 +14,7 @@ // gggg gggg gggg gggg gggg gggg gggg gggg | gggg gggg gggg gggg seee eeee eeee eeee | // 1mmm mmmm mmmm mmmm mmmm mmmm mmmm mmmm | mmmm mmmm mmmm mmmm mmmm mmmm mmmm mmmm -COMPILER_RT_ABI long double __floatundixf(du_int a); +DECLARE_LIBCALL(long double, __floatundixf, du_int a); int test__floatundixf(du_int a, long double expected) { diff --git a/compiler-rt/test/builtins/Unit/floatunsitf_test.c b/compiler-rt/test/builtins/Unit/floatunsitf_test.c --- a/compiler-rt/test/builtins/Unit/floatunsitf_test.c +++ b/compiler-rt/test/builtins/Unit/floatunsitf_test.c @@ -8,7 +8,7 @@ #include "fp_test.h" -COMPILER_RT_ABI long double __floatunsitf(unsigned int a); +DECLARE_LIBCALL(long double, __floatunsitf, unsigned int a); int test__floatunsitf(unsigned int a, uint64_t expectedHi, uint64_t expectedLo) { diff --git a/compiler-rt/test/builtins/Unit/floatunssidfvfp_test.c b/compiler-rt/test/builtins/Unit/floatunssidfvfp_test.c --- a/compiler-rt/test/builtins/Unit/floatunssidfvfp_test.c +++ b/compiler-rt/test/builtins/Unit/floatunssidfvfp_test.c @@ -7,7 +7,7 @@ #include -extern COMPILER_RT_ABI double __floatunssidfvfp(unsigned int a); +extern DECLARE_LIBCALL(double, __floatunssidfvfp, unsigned int a); #if __arm__ && __VFP_FP__ int test__floatunssidfvfp(unsigned int a) diff --git a/compiler-rt/test/builtins/Unit/floatunssisfvfp_test.c b/compiler-rt/test/builtins/Unit/floatunssisfvfp_test.c --- a/compiler-rt/test/builtins/Unit/floatunssisfvfp_test.c +++ b/compiler-rt/test/builtins/Unit/floatunssisfvfp_test.c @@ -6,7 +6,7 @@ #include #include "int_lib.h" -extern COMPILER_RT_ABI float __floatunssisfvfp(unsigned int a); +extern DECLARE_LIBCALL(float, __floatunssisfvfp, unsigned int a); #if __arm__ && __VFP_FP__ int test__floatunssisfvfp(unsigned int a) diff --git a/compiler-rt/test/builtins/Unit/floatuntidf_test.c b/compiler-rt/test/builtins/Unit/floatuntidf_test.c --- a/compiler-rt/test/builtins/Unit/floatuntidf_test.c +++ b/compiler-rt/test/builtins/Unit/floatuntidf_test.c @@ -15,7 +15,7 @@ // seee eeee eeee mmmm mmmm mmmm mmmm mmmm | mmmm mmmm mmmm mmmm mmmm mmmm mmmm mmmm -COMPILER_RT_ABI double __floatuntidf(tu_int a); +DECLARE_LIBCALL(double, __floatuntidf, tu_int a); int test__floatuntidf(tu_int a, double expected) { diff --git a/compiler-rt/test/builtins/Unit/floatuntisf_test.c b/compiler-rt/test/builtins/Unit/floatuntisf_test.c --- a/compiler-rt/test/builtins/Unit/floatuntisf_test.c +++ b/compiler-rt/test/builtins/Unit/floatuntisf_test.c @@ -14,7 +14,7 @@ // seee eeee emmm mmmm mmmm mmmm mmmm mmmm -COMPILER_RT_ABI float __floatuntisf(tu_int a); +DECLARE_LIBCALL(float, __floatuntisf, tu_int a); int test__floatuntisf(tu_int a, float expected) { diff --git a/compiler-rt/test/builtins/Unit/floatuntitf_test.c b/compiler-rt/test/builtins/Unit/floatuntitf_test.c --- a/compiler-rt/test/builtins/Unit/floatuntitf_test.c +++ b/compiler-rt/test/builtins/Unit/floatuntitf_test.c @@ -19,7 +19,7 @@ * mmmm mmmm mmmm mmmm mmmm mmmm mmmm mmmm | mmmm mmmm mmmm mmmm mmmm mmmm mmmm mmmm */ -COMPILER_RT_ABI fp_t __floatuntitf(tu_int a); +DECLARE_LIBCALL(fp_t, __floatuntitf, tu_int a); int test__floatuntitf(tu_int a, fp_t expected) { fp_t x = __floatuntitf(a); diff --git a/compiler-rt/test/builtins/Unit/floatuntixf_test.c b/compiler-rt/test/builtins/Unit/floatuntixf_test.c --- a/compiler-rt/test/builtins/Unit/floatuntixf_test.c +++ b/compiler-rt/test/builtins/Unit/floatuntixf_test.c @@ -16,7 +16,7 @@ // gggg gggg gggg gggg gggg gggg gggg gggg | gggg gggg gggg gggg seee eeee eeee eeee | // 1mmm mmmm mmmm mmmm mmmm mmmm mmmm mmmm | mmmm mmmm mmmm mmmm mmmm mmmm mmmm mmmm -COMPILER_RT_ABI long double __floatuntixf(tu_int a); +DECLARE_LIBCALL(long double, __floatuntixf, tu_int a); int test__floatuntixf(tu_int a, long double expected) { diff --git a/compiler-rt/test/builtins/Unit/lshrdi3_test.c b/compiler-rt/test/builtins/Unit/lshrdi3_test.c --- a/compiler-rt/test/builtins/Unit/lshrdi3_test.c +++ b/compiler-rt/test/builtins/Unit/lshrdi3_test.c @@ -8,7 +8,7 @@ // Precondition: 0 <= b < bits_in_dword -COMPILER_RT_ABI di_int __lshrdi3(di_int a, int b); +DECLARE_LIBCALL(di_int, __lshrdi3, di_int a, int b); int test__lshrdi3(di_int a, int b, di_int expected) { diff --git a/compiler-rt/test/builtins/Unit/lshrti3_test.c b/compiler-rt/test/builtins/Unit/lshrti3_test.c --- a/compiler-rt/test/builtins/Unit/lshrti3_test.c +++ b/compiler-rt/test/builtins/Unit/lshrti3_test.c @@ -11,7 +11,7 @@ // Precondition: 0 <= b < bits_in_dword -COMPILER_RT_ABI ti_int __lshrti3(ti_int a, si_int b); +DECLARE_LIBCALL(ti_int, __lshrti3, ti_int a, si_int b); int test__lshrti3(ti_int a, si_int b, ti_int expected) { diff --git a/compiler-rt/test/builtins/Unit/moddi3_test.c b/compiler-rt/test/builtins/Unit/moddi3_test.c --- a/compiler-rt/test/builtins/Unit/moddi3_test.c +++ b/compiler-rt/test/builtins/Unit/moddi3_test.c @@ -6,7 +6,7 @@ // Returns: a % b -COMPILER_RT_ABI di_int __moddi3(di_int a, di_int b); +DECLARE_LIBCALL(di_int, __moddi3, di_int a, di_int b); int test__moddi3(di_int a, di_int b, di_int expected) { diff --git a/compiler-rt/test/builtins/Unit/modsi3_test.c b/compiler-rt/test/builtins/Unit/modsi3_test.c --- a/compiler-rt/test/builtins/Unit/modsi3_test.c +++ b/compiler-rt/test/builtins/Unit/modsi3_test.c @@ -6,7 +6,7 @@ /* Returns: a % b */ -COMPILER_RT_ABI si_int __modsi3(si_int a, si_int b); +DECLARE_LIBCALL(si_int, __modsi3, si_int a, si_int b); int test__modsi3(si_int a, si_int b, si_int expected) { si_int x = __modsi3(a, b); diff --git a/compiler-rt/test/builtins/Unit/modti3_test.c b/compiler-rt/test/builtins/Unit/modti3_test.c --- a/compiler-rt/test/builtins/Unit/modti3_test.c +++ b/compiler-rt/test/builtins/Unit/modti3_test.c @@ -9,7 +9,7 @@ // Returns: a % b -COMPILER_RT_ABI ti_int __modti3(ti_int a, ti_int b); +DECLARE_LIBCALL(ti_int, __modti3, ti_int a, ti_int b); int test__modti3(ti_int a, ti_int b, ti_int expected) { diff --git a/compiler-rt/test/builtins/Unit/muldc3_test.c b/compiler-rt/test/builtins/Unit/muldc3_test.c --- a/compiler-rt/test/builtins/Unit/muldc3_test.c +++ b/compiler-rt/test/builtins/Unit/muldc3_test.c @@ -10,8 +10,8 @@ // Returns: the product of a + ib and c + id -COMPILER_RT_ABI double _Complex -__muldc3(double __a, double __b, double __c, double __d); +DECLARE_LIBCALL(double _Complex, __muldc3, + double __a, double __b, double __c, double __d); enum {zero, non_zero, inf, NaN, non_zero_nan}; diff --git a/compiler-rt/test/builtins/Unit/muldf3vfp_test.c b/compiler-rt/test/builtins/Unit/muldf3vfp_test.c --- a/compiler-rt/test/builtins/Unit/muldf3vfp_test.c +++ b/compiler-rt/test/builtins/Unit/muldf3vfp_test.c @@ -8,7 +8,7 @@ #if __arm__ && __VFP_FP__ -extern COMPILER_RT_ABI double __muldf3vfp(double a, double b); +extern DECLARE_LIBCALL(double, __muldf3vfp, double a, double b); int test__muldf3vfp(double a, double b) { diff --git a/compiler-rt/test/builtins/Unit/muldi3_test.c b/compiler-rt/test/builtins/Unit/muldi3_test.c --- a/compiler-rt/test/builtins/Unit/muldi3_test.c +++ b/compiler-rt/test/builtins/Unit/muldi3_test.c @@ -4,7 +4,7 @@ #include "int_lib.h" #include -COMPILER_RT_ABI di_int __muldi3(di_int a, di_int b); +DECLARE_LIBCALL(di_int, __muldi3, di_int a, di_int b); int test__muldi3(di_int a, di_int b, di_int expected) { diff --git a/compiler-rt/test/builtins/Unit/mulodi4_test.c b/compiler-rt/test/builtins/Unit/mulodi4_test.c --- a/compiler-rt/test/builtins/Unit/mulodi4_test.c +++ b/compiler-rt/test/builtins/Unit/mulodi4_test.c @@ -4,7 +4,7 @@ #include "int_lib.h" #include -extern COMPILER_RT_ABI di_int __mulodi4(di_int a, di_int b, int* overflow); +extern DECLARE_LIBCALL(di_int, __mulodi4, di_int a, di_int b, int* overflow); int test__mulodi4(di_int a, di_int b, di_int expected, int expected_overflow) { diff --git a/compiler-rt/test/builtins/Unit/mulosi4_test.c b/compiler-rt/test/builtins/Unit/mulosi4_test.c --- a/compiler-rt/test/builtins/Unit/mulosi4_test.c +++ b/compiler-rt/test/builtins/Unit/mulosi4_test.c @@ -8,7 +8,7 @@ // Effects: aborts if a * b overflows -COMPILER_RT_ABI si_int __mulosi4(si_int a, si_int b, int *overflow); +DECLARE_LIBCALL(si_int, __mulosi4, si_int a, si_int b, int *overflow); int test__mulosi4(si_int a, si_int b, si_int expected, int expected_overflow) { diff --git a/compiler-rt/test/builtins/Unit/muloti4_test.c b/compiler-rt/test/builtins/Unit/muloti4_test.c --- a/compiler-rt/test/builtins/Unit/muloti4_test.c +++ b/compiler-rt/test/builtins/Unit/muloti4_test.c @@ -11,7 +11,7 @@ // Effects: sets overflow if a * b overflows -COMPILER_RT_ABI ti_int __muloti4(ti_int a, ti_int b, int *overflow); +DECLARE_LIBCALL(ti_int, __muloti4, ti_int a, ti_int b, int *overflow); int test__muloti4(ti_int a, ti_int b, ti_int expected, int expected_overflow) { diff --git a/compiler-rt/test/builtins/Unit/mulsc3_test.c b/compiler-rt/test/builtins/Unit/mulsc3_test.c --- a/compiler-rt/test/builtins/Unit/mulsc3_test.c +++ b/compiler-rt/test/builtins/Unit/mulsc3_test.c @@ -10,8 +10,8 @@ // Returns: the product of a + ib and c + id -COMPILER_RT_ABI float _Complex -__mulsc3(float __a, float __b, float __c, float __d); +DECLARE_LIBCALL(float _Complex, __mulsc3, + float __a, float __b, float __c, float __d); enum {zero, non_zero, inf, NaN, non_zero_nan}; diff --git a/compiler-rt/test/builtins/Unit/mulsf3vfp_test.c b/compiler-rt/test/builtins/Unit/mulsf3vfp_test.c --- a/compiler-rt/test/builtins/Unit/mulsf3vfp_test.c +++ b/compiler-rt/test/builtins/Unit/mulsf3vfp_test.c @@ -7,7 +7,7 @@ #include -extern COMPILER_RT_ABI float __mulsf3vfp(float a, float b); +extern DECLARE_LIBCALL(float, __mulsf3vfp, float a, float b); #if __arm__ && __VFP_FP__ int test__mulsf3vfp(float a, float b) diff --git a/compiler-rt/test/builtins/Unit/multc3_test.c b/compiler-rt/test/builtins/Unit/multc3_test.c --- a/compiler-rt/test/builtins/Unit/multc3_test.c +++ b/compiler-rt/test/builtins/Unit/multc3_test.c @@ -11,8 +11,8 @@ // Returns: the product of a + ib and c + id -COMPILER_RT_ABI long double _Complex -__multc3(long double __a, long double __b, long double __c, long double __d); +DECLARE_LIBCALL(long double _Complex, __multc3, + long double __a, long double __b, long double __c, long double __d); enum {zero, non_zero, inf, NaN, non_zero_nan}; diff --git a/compiler-rt/test/builtins/Unit/multf3_test.c b/compiler-rt/test/builtins/Unit/multf3_test.c --- a/compiler-rt/test/builtins/Unit/multf3_test.c +++ b/compiler-rt/test/builtins/Unit/multf3_test.c @@ -9,7 +9,7 @@ #include "fp_test.h" // Returns: a * b -COMPILER_RT_ABI long double __multf3(long double a, long double b); +DECLARE_LIBCALL(long double, __multf3, long double a, long double b); int test__multf3(long double a, long double b, uint64_t expectedHi, uint64_t expectedLo) diff --git a/compiler-rt/test/builtins/Unit/multi3_test.c b/compiler-rt/test/builtins/Unit/multi3_test.c --- a/compiler-rt/test/builtins/Unit/multi3_test.c +++ b/compiler-rt/test/builtins/Unit/multi3_test.c @@ -7,7 +7,7 @@ #ifdef CRT_HAS_128BIT -COMPILER_RT_ABI ti_int __multi3(ti_int a, ti_int b); +DECLARE_LIBCALL(ti_int, __multi3, ti_int a, ti_int b); int test__multi3(ti_int a, ti_int b, ti_int expected) { diff --git a/compiler-rt/test/builtins/Unit/mulvdi3_test.c b/compiler-rt/test/builtins/Unit/mulvdi3_test.c --- a/compiler-rt/test/builtins/Unit/mulvdi3_test.c +++ b/compiler-rt/test/builtins/Unit/mulvdi3_test.c @@ -8,7 +8,7 @@ // Effects: aborts if a * b overflows -COMPILER_RT_ABI di_int __mulvdi3(di_int a, di_int b); +DECLARE_LIBCALL(di_int, __mulvdi3, di_int a, di_int b); int test__mulvdi3(di_int a, di_int b, di_int expected) { diff --git a/compiler-rt/test/builtins/Unit/mulvsi3_test.c b/compiler-rt/test/builtins/Unit/mulvsi3_test.c --- a/compiler-rt/test/builtins/Unit/mulvsi3_test.c +++ b/compiler-rt/test/builtins/Unit/mulvsi3_test.c @@ -8,7 +8,7 @@ // Effects: aborts if a * b overflows -COMPILER_RT_ABI si_int __mulvsi3(si_int a, si_int b); +DECLARE_LIBCALL(si_int, __mulvsi3, si_int a, si_int b); int test__mulvsi3(si_int a, si_int b, si_int expected) { diff --git a/compiler-rt/test/builtins/Unit/mulvti3_test.c b/compiler-rt/test/builtins/Unit/mulvti3_test.c --- a/compiler-rt/test/builtins/Unit/mulvti3_test.c +++ b/compiler-rt/test/builtins/Unit/mulvti3_test.c @@ -11,7 +11,7 @@ // Effects: aborts if a * b overflows -COMPILER_RT_ABI ti_int __mulvti3(ti_int a, ti_int b); +DECLARE_LIBCALL(ti_int, __mulvti3, ti_int a, ti_int b); int test__mulvti3(ti_int a, ti_int b, ti_int expected) { diff --git a/compiler-rt/test/builtins/Unit/mulxc3_test.c b/compiler-rt/test/builtins/Unit/mulxc3_test.c --- a/compiler-rt/test/builtins/Unit/mulxc3_test.c +++ b/compiler-rt/test/builtins/Unit/mulxc3_test.c @@ -15,8 +15,8 @@ // Returns: the product of a + ib and c + id -COMPILER_RT_ABI long double _Complex -__mulxc3(long double __a, long double __b, long double __c, long double __d); +DECLARE_LIBCALL(long double _Complex, __mulxc3, + long double __a, long double __b, long double __c, long double __d); enum {zero, non_zero, inf, NaN, non_zero_nan}; diff --git a/compiler-rt/test/builtins/Unit/negdf2vfp_test.c b/compiler-rt/test/builtins/Unit/negdf2vfp_test.c --- a/compiler-rt/test/builtins/Unit/negdf2vfp_test.c +++ b/compiler-rt/test/builtins/Unit/negdf2vfp_test.c @@ -8,7 +8,7 @@ #if __arm__ && __VFP_FP__ -extern COMPILER_RT_ABI double __negdf2vfp(double a); +extern DECLARE_LIBCALL(double, __negdf2vfp, double a); int test__negdf2vfp(double a) { diff --git a/compiler-rt/test/builtins/Unit/negdi2_test.c b/compiler-rt/test/builtins/Unit/negdi2_test.c --- a/compiler-rt/test/builtins/Unit/negdi2_test.c +++ b/compiler-rt/test/builtins/Unit/negdi2_test.c @@ -6,7 +6,7 @@ // Returns: -a -COMPILER_RT_ABI di_int __negdi2(di_int a); +DECLARE_LIBCALL(di_int, __negdi2, di_int a); int test__negdi2(di_int a, di_int expected) { diff --git a/compiler-rt/test/builtins/Unit/negsf2vfp_test.c b/compiler-rt/test/builtins/Unit/negsf2vfp_test.c --- a/compiler-rt/test/builtins/Unit/negsf2vfp_test.c +++ b/compiler-rt/test/builtins/Unit/negsf2vfp_test.c @@ -7,7 +7,7 @@ #include -extern COMPILER_RT_ABI float __negsf2vfp(float a); +extern DECLARE_LIBCALL(float, __negsf2vfp, float a); #if __arm__ && __VFP_FP__ int test__negsf2vfp(float a) diff --git a/compiler-rt/test/builtins/Unit/negti2_test.c b/compiler-rt/test/builtins/Unit/negti2_test.c --- a/compiler-rt/test/builtins/Unit/negti2_test.c +++ b/compiler-rt/test/builtins/Unit/negti2_test.c @@ -9,7 +9,7 @@ // Returns: -a -COMPILER_RT_ABI ti_int __negti2(ti_int a); +DECLARE_LIBCALL(ti_int, __negti2, ti_int a); int test__negti2(ti_int a, ti_int expected) { diff --git a/compiler-rt/test/builtins/Unit/negvdi2_test.c b/compiler-rt/test/builtins/Unit/negvdi2_test.c --- a/compiler-rt/test/builtins/Unit/negvdi2_test.c +++ b/compiler-rt/test/builtins/Unit/negvdi2_test.c @@ -8,7 +8,7 @@ // Effects: aborts if -a overflows -COMPILER_RT_ABI di_int __negvdi2(di_int a); +DECLARE_LIBCALL(di_int, __negvdi2, di_int a); int test__negvdi2(di_int a) { diff --git a/compiler-rt/test/builtins/Unit/negvsi2_test.c b/compiler-rt/test/builtins/Unit/negvsi2_test.c --- a/compiler-rt/test/builtins/Unit/negvsi2_test.c +++ b/compiler-rt/test/builtins/Unit/negvsi2_test.c @@ -8,7 +8,7 @@ // Effects: aborts if -a overflows -COMPILER_RT_ABI si_int __negvsi2(si_int a); +DECLARE_LIBCALL(si_int, __negvsi2, si_int a); int test__negvsi2(si_int a) { diff --git a/compiler-rt/test/builtins/Unit/negvti2_test.c b/compiler-rt/test/builtins/Unit/negvti2_test.c --- a/compiler-rt/test/builtins/Unit/negvti2_test.c +++ b/compiler-rt/test/builtins/Unit/negvti2_test.c @@ -11,8 +11,8 @@ // Effects: aborts if -a overflows -COMPILER_RT_ABI ti_int __negvti2(ti_int a); -COMPILER_RT_ABI ti_int __negti2(ti_int a); +DECLARE_LIBCALL(ti_int, __negvti2, ti_int a); +DECLARE_LIBCALL(ti_int, __negti2, ti_int a); int test__negvti2(ti_int a) { diff --git a/compiler-rt/test/builtins/Unit/paritydi2_test.c b/compiler-rt/test/builtins/Unit/paritydi2_test.c --- a/compiler-rt/test/builtins/Unit/paritydi2_test.c +++ b/compiler-rt/test/builtins/Unit/paritydi2_test.c @@ -7,7 +7,7 @@ // Returns: 1 if number of bits is odd else returns 0 -COMPILER_RT_ABI int __paritydi2(di_int a); +DECLARE_LIBCALL(int, __paritydi2, di_int a); int naive_parity(di_int a) { diff --git a/compiler-rt/test/builtins/Unit/paritysi2_test.c b/compiler-rt/test/builtins/Unit/paritysi2_test.c --- a/compiler-rt/test/builtins/Unit/paritysi2_test.c +++ b/compiler-rt/test/builtins/Unit/paritysi2_test.c @@ -7,7 +7,7 @@ // Returns: 1 if number of bits is odd else returns 0 -COMPILER_RT_ABI int __paritysi2(si_int a); +DECLARE_LIBCALL(int, __paritysi2, si_int a); int naive_parity(si_int a) { diff --git a/compiler-rt/test/builtins/Unit/parityti2_test.c b/compiler-rt/test/builtins/Unit/parityti2_test.c --- a/compiler-rt/test/builtins/Unit/parityti2_test.c +++ b/compiler-rt/test/builtins/Unit/parityti2_test.c @@ -10,7 +10,7 @@ // Returns: 1 if number of bits is odd else returns 0 -COMPILER_RT_ABI int __parityti2(ti_int a); +DECLARE_LIBCALL(int, __parityti2, ti_int a); int naive_parity(ti_int a) { diff --git a/compiler-rt/test/builtins/Unit/popcountdi2_test.c b/compiler-rt/test/builtins/Unit/popcountdi2_test.c --- a/compiler-rt/test/builtins/Unit/popcountdi2_test.c +++ b/compiler-rt/test/builtins/Unit/popcountdi2_test.c @@ -7,7 +7,7 @@ // Returns: count of 1 bits -COMPILER_RT_ABI int __popcountdi2(di_int a); +DECLARE_LIBCALL(int, __popcountdi2, di_int a); int naive_popcount(di_int a) { diff --git a/compiler-rt/test/builtins/Unit/popcountsi2_test.c b/compiler-rt/test/builtins/Unit/popcountsi2_test.c --- a/compiler-rt/test/builtins/Unit/popcountsi2_test.c +++ b/compiler-rt/test/builtins/Unit/popcountsi2_test.c @@ -7,7 +7,7 @@ // Returns: count of 1 bits -COMPILER_RT_ABI int __popcountsi2(si_int a); +DECLARE_LIBCALL(int, __popcountsi2, si_int a); int naive_popcount(si_int a) { diff --git a/compiler-rt/test/builtins/Unit/popcountti2_test.c b/compiler-rt/test/builtins/Unit/popcountti2_test.c --- a/compiler-rt/test/builtins/Unit/popcountti2_test.c +++ b/compiler-rt/test/builtins/Unit/popcountti2_test.c @@ -10,7 +10,7 @@ // Returns: count of 1 bits -COMPILER_RT_ABI int __popcountti2(ti_int a); +DECLARE_LIBCALL(int, __popcountti2, ti_int a); int naive_popcount(ti_int a) { diff --git a/compiler-rt/test/builtins/Unit/powidf2_test.c b/compiler-rt/test/builtins/Unit/powidf2_test.c --- a/compiler-rt/test/builtins/Unit/powidf2_test.c +++ b/compiler-rt/test/builtins/Unit/powidf2_test.c @@ -7,7 +7,7 @@ // Returns: a ^ b -COMPILER_RT_ABI double __powidf2(double a, int b); +DECLARE_LIBCALL(double, __powidf2, double a, int b); int test__powidf2(double a, int b, double expected) { diff --git a/compiler-rt/test/builtins/Unit/powisf2_test.c b/compiler-rt/test/builtins/Unit/powisf2_test.c --- a/compiler-rt/test/builtins/Unit/powisf2_test.c +++ b/compiler-rt/test/builtins/Unit/powisf2_test.c @@ -7,7 +7,7 @@ // Returns: a ^ b -COMPILER_RT_ABI float __powisf2(float a, int b); +DECLARE_LIBCALL(float, __powisf2, float a, int b); int test__powisf2(float a, int b, float expected) { diff --git a/compiler-rt/test/builtins/Unit/powitf2_test.c b/compiler-rt/test/builtins/Unit/powitf2_test.c --- a/compiler-rt/test/builtins/Unit/powitf2_test.c +++ b/compiler-rt/test/builtins/Unit/powitf2_test.c @@ -10,7 +10,7 @@ // Returns: a ^ b -COMPILER_RT_ABI long double __powitf2(long double a, int b); +DECLARE_LIBCALL(long double, __powitf2, long double a, int b); int test__powitf2(long double a, int b, long double expected) { diff --git a/compiler-rt/test/builtins/Unit/powixf2_test.c b/compiler-rt/test/builtins/Unit/powixf2_test.c --- a/compiler-rt/test/builtins/Unit/powixf2_test.c +++ b/compiler-rt/test/builtins/Unit/powixf2_test.c @@ -11,7 +11,7 @@ // Returns: a ^ b -COMPILER_RT_ABI long double __powixf2(long double a, int b); +DECLARE_LIBCALL(long double, __powixf2, long double a, int b); int test__powixf2(long double a, int b, long double expected) { diff --git a/compiler-rt/test/builtins/Unit/subdf3vfp_test.c b/compiler-rt/test/builtins/Unit/subdf3vfp_test.c --- a/compiler-rt/test/builtins/Unit/subdf3vfp_test.c +++ b/compiler-rt/test/builtins/Unit/subdf3vfp_test.c @@ -8,7 +8,7 @@ #if __arm__ && __VFP_FP__ -extern COMPILER_RT_ABI double __subdf3vfp(double a, double b); +extern DECLARE_LIBCALL(double, __subdf3vfp, double a, double b); int test__subdf3vfp(double a, double b) { diff --git a/compiler-rt/test/builtins/Unit/subsf3vfp_test.c b/compiler-rt/test/builtins/Unit/subsf3vfp_test.c --- a/compiler-rt/test/builtins/Unit/subsf3vfp_test.c +++ b/compiler-rt/test/builtins/Unit/subsf3vfp_test.c @@ -7,7 +7,7 @@ #include -extern COMPILER_RT_ABI float __subsf3vfp(float a, float b); +extern DECLARE_LIBCALL(float, __subsf3vfp, float a, float b); #if __arm__ && __VFP_FP__ int test__subsf3vfp(float a, float b) diff --git a/compiler-rt/test/builtins/Unit/subtf3_test.c b/compiler-rt/test/builtins/Unit/subtf3_test.c --- a/compiler-rt/test/builtins/Unit/subtf3_test.c +++ b/compiler-rt/test/builtins/Unit/subtf3_test.c @@ -10,7 +10,7 @@ #include "fp_test.h" // Returns: a - b -COMPILER_RT_ABI long double __subtf3(long double a, long double b); +DECLARE_LIBCALL(long double, __subtf3, long double a, long double b); int test__subtf3(long double a, long double b, uint64_t expectedHi, uint64_t expectedLo) diff --git a/compiler-rt/test/builtins/Unit/subvdi3_test.c b/compiler-rt/test/builtins/Unit/subvdi3_test.c --- a/compiler-rt/test/builtins/Unit/subvdi3_test.c +++ b/compiler-rt/test/builtins/Unit/subvdi3_test.c @@ -9,7 +9,7 @@ // Effects: aborts if a - b overflows -COMPILER_RT_ABI di_int __subvdi3(di_int a, di_int b); +DECLARE_LIBCALL(di_int, __subvdi3, di_int a, di_int b); int test__subvdi3(di_int a, di_int b) { diff --git a/compiler-rt/test/builtins/Unit/subvsi3_test.c b/compiler-rt/test/builtins/Unit/subvsi3_test.c --- a/compiler-rt/test/builtins/Unit/subvsi3_test.c +++ b/compiler-rt/test/builtins/Unit/subvsi3_test.c @@ -9,7 +9,7 @@ // Effects: aborts if a - b overflows -COMPILER_RT_ABI si_int __subvsi3(si_int a, si_int b); +DECLARE_LIBCALL(si_int, __subvsi3, si_int a, si_int b); int test__subvsi3(si_int a, si_int b) { diff --git a/compiler-rt/test/builtins/Unit/subvti3_test.c b/compiler-rt/test/builtins/Unit/subvti3_test.c --- a/compiler-rt/test/builtins/Unit/subvti3_test.c +++ b/compiler-rt/test/builtins/Unit/subvti3_test.c @@ -12,7 +12,7 @@ // Effects: aborts if a - b overflows -COMPILER_RT_ABI ti_int __subvti3(ti_int a, ti_int b); +DECLARE_LIBCALL(ti_int, __subvti3, ti_int a, ti_int b); int test__subvti3(ti_int a, ti_int b) { diff --git a/compiler-rt/test/builtins/Unit/truncdfsf2vfp_test.c b/compiler-rt/test/builtins/Unit/truncdfsf2vfp_test.c --- a/compiler-rt/test/builtins/Unit/truncdfsf2vfp_test.c +++ b/compiler-rt/test/builtins/Unit/truncdfsf2vfp_test.c @@ -7,7 +7,7 @@ #include -extern COMPILER_RT_ABI float __truncdfsf2vfp(double a); +extern DECLARE_LIBCALL(float, __truncdfsf2vfp, double a); #if __arm__ && __VFP_FP__ int test__truncdfsf2vfp(double a) diff --git a/compiler-rt/test/builtins/Unit/trunctfdf2_test.c b/compiler-rt/test/builtins/Unit/trunctfdf2_test.c --- a/compiler-rt/test/builtins/Unit/trunctfdf2_test.c +++ b/compiler-rt/test/builtins/Unit/trunctfdf2_test.c @@ -8,7 +8,7 @@ #include "fp_test.h" -COMPILER_RT_ABI double __trunctfdf2(long double a); +DECLARE_LIBCALL(double, __trunctfdf2, long double a); int test__trunctfdf2(long double a, uint64_t expected) { diff --git a/compiler-rt/test/builtins/Unit/trunctfsf2_test.c b/compiler-rt/test/builtins/Unit/trunctfsf2_test.c --- a/compiler-rt/test/builtins/Unit/trunctfsf2_test.c +++ b/compiler-rt/test/builtins/Unit/trunctfsf2_test.c @@ -8,7 +8,7 @@ #include "fp_test.h" -COMPILER_RT_ABI float __trunctfsf2(long double a); +DECLARE_LIBCALL(float, __trunctfsf2, long double a); int test__trunctfsf2(long double a, uint32_t expected) { diff --git a/compiler-rt/test/builtins/Unit/ucmpdi2_test.c b/compiler-rt/test/builtins/Unit/ucmpdi2_test.c --- a/compiler-rt/test/builtins/Unit/ucmpdi2_test.c +++ b/compiler-rt/test/builtins/Unit/ucmpdi2_test.c @@ -8,7 +8,7 @@ // if (a == b) returns 1 // if (a > b) returns 2 -COMPILER_RT_ABI si_int __ucmpdi2(du_int a, du_int b); +DECLARE_LIBCALL(si_int, __ucmpdi2, du_int a, du_int b); int test__ucmpdi2(du_int a, du_int b, si_int expected) { diff --git a/compiler-rt/test/builtins/Unit/ucmpti2_test.c b/compiler-rt/test/builtins/Unit/ucmpti2_test.c --- a/compiler-rt/test/builtins/Unit/ucmpti2_test.c +++ b/compiler-rt/test/builtins/Unit/ucmpti2_test.c @@ -11,7 +11,7 @@ // if (a == b) returns 1 // if (a > b) returns 2 -COMPILER_RT_ABI si_int __ucmpti2(tu_int a, tu_int b); +DECLARE_LIBCALL(si_int, __ucmpti2, tu_int a, tu_int b); int test__ucmpti2(tu_int a, tu_int b, si_int expected) { diff --git a/compiler-rt/test/builtins/Unit/udivdi3_test.c b/compiler-rt/test/builtins/Unit/udivdi3_test.c --- a/compiler-rt/test/builtins/Unit/udivdi3_test.c +++ b/compiler-rt/test/builtins/Unit/udivdi3_test.c @@ -6,7 +6,7 @@ // Returns: a / b -COMPILER_RT_ABI du_int __udivdi3(du_int a, du_int b); +DECLARE_LIBCALL(du_int, __udivdi3, du_int a, du_int b); int test__udivdi3(du_int a, du_int b, du_int expected_q) { diff --git a/compiler-rt/test/builtins/Unit/udivmoddi4_test.c b/compiler-rt/test/builtins/Unit/udivmoddi4_test.c --- a/compiler-rt/test/builtins/Unit/udivmoddi4_test.c +++ b/compiler-rt/test/builtins/Unit/udivmoddi4_test.c @@ -7,7 +7,7 @@ // Effects: if rem != 0, *rem = a % b // Returns: a / b -COMPILER_RT_ABI du_int __udivmoddi4(du_int a, du_int b, du_int* rem); +DECLARE_LIBCALL(du_int, __udivmoddi4, du_int a, du_int b, du_int* rem); int test__udivmoddi4(du_int a, du_int b, du_int expected_q, du_int expected_r) { diff --git a/compiler-rt/test/builtins/Unit/udivmodsi4_test.c b/compiler-rt/test/builtins/Unit/udivmodsi4_test.c --- a/compiler-rt/test/builtins/Unit/udivmodsi4_test.c +++ b/compiler-rt/test/builtins/Unit/udivmodsi4_test.c @@ -6,7 +6,7 @@ // Returns: a / b -extern COMPILER_RT_ABI su_int __udivmodsi4(su_int a, su_int b, su_int* rem); +extern DECLARE_LIBCALL(su_int, __udivmodsi4, su_int a, su_int b, su_int* rem); int test__udivmodsi4(su_int a, su_int b, su_int expected_result, su_int expected_rem) diff --git a/compiler-rt/test/builtins/Unit/udivsi3_test.c b/compiler-rt/test/builtins/Unit/udivsi3_test.c --- a/compiler-rt/test/builtins/Unit/udivsi3_test.c +++ b/compiler-rt/test/builtins/Unit/udivsi3_test.c @@ -6,7 +6,7 @@ // Returns: a / b -COMPILER_RT_ABI su_int __udivsi3(su_int a, su_int b); +DECLARE_LIBCALL(su_int, __udivsi3, su_int a, su_int b); int test__udivsi3(su_int a, su_int b, su_int expected_q) { diff --git a/compiler-rt/test/builtins/Unit/udivti3_test.c b/compiler-rt/test/builtins/Unit/udivti3_test.c --- a/compiler-rt/test/builtins/Unit/udivti3_test.c +++ b/compiler-rt/test/builtins/Unit/udivti3_test.c @@ -9,7 +9,7 @@ // Returns: a / b -COMPILER_RT_ABI tu_int __udivti3(tu_int a, tu_int b); +DECLARE_LIBCALL(tu_int, __udivti3, tu_int a, tu_int b); int test__udivti3(tu_int a, tu_int b, tu_int expected_q) { diff --git a/compiler-rt/test/builtins/Unit/umoddi3_test.c b/compiler-rt/test/builtins/Unit/umoddi3_test.c --- a/compiler-rt/test/builtins/Unit/umoddi3_test.c +++ b/compiler-rt/test/builtins/Unit/umoddi3_test.c @@ -6,7 +6,7 @@ // Returns: a % b -COMPILER_RT_ABI du_int __umoddi3(du_int a, du_int b); +DECLARE_LIBCALL(du_int, __umoddi3, du_int a, du_int b); int test__umoddi3(du_int a, du_int b, du_int expected_r) { diff --git a/compiler-rt/test/builtins/Unit/umodsi3_test.c b/compiler-rt/test/builtins/Unit/umodsi3_test.c --- a/compiler-rt/test/builtins/Unit/umodsi3_test.c +++ b/compiler-rt/test/builtins/Unit/umodsi3_test.c @@ -6,7 +6,7 @@ // Returns: a % b -COMPILER_RT_ABI su_int __umodsi3(su_int a, su_int b); +DECLARE_LIBCALL(su_int, __umodsi3, su_int a, su_int b); int test__umodsi3(su_int a, su_int b, su_int expected_r) { diff --git a/compiler-rt/test/builtins/Unit/umodti3_test.c b/compiler-rt/test/builtins/Unit/umodti3_test.c --- a/compiler-rt/test/builtins/Unit/umodti3_test.c +++ b/compiler-rt/test/builtins/Unit/umodti3_test.c @@ -9,7 +9,7 @@ // Returns: a % b -COMPILER_RT_ABI tu_int __umodti3(tu_int a, tu_int b); +DECLARE_LIBCALL(tu_int, __umodti3, tu_int a, tu_int b); int test__umodti3(tu_int a, tu_int b, tu_int expected_r) { diff --git a/compiler-rt/utils/generate_builtins_macro.sh b/compiler-rt/utils/generate_builtins_macro.sh new file mode 100755 --- /dev/null +++ b/compiler-rt/utils/generate_builtins_macro.sh @@ -0,0 +1,228 @@ +#!/bin/sh -e + +generate_header() { + echo "//===-- libcall-set-defaults.inc ------------------------------------------===//" + echo "//" + echo "// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions." + echo "// See https://llvm.org/LICENSE.txt for license information." + echo "// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception" + echo "//" + echo "//===----------------------------------------------------------------------===//" + echo "//" + echo "// This file is not part of the interface of this library." + echo "//" + echo "// The particular target implementation can define some macroses customizing" + echo "// target-specific aliases, calling conventions, etc. After that, this file" + echo "// sets the default values for everything not yet set." + echo "//" + echo "// DO NOT EDIT! This file was auto-generated by:" + echo "//" + echo "// ../../utils/generate_builtins_macro.sh > libcall-set-defaults.inc" + echo "//" + echo "//===----------------------------------------------------------------------===//" + echo +} + +generate_macroses() { + prefix=$1 + default_value=$2 + shift 2 + + for libcall in $* + do + echo "#ifndef ${prefix}${libcall}" + echo "#define ${prefix}${libcall}${default_value}" + echo "#endif" + done +} + +generate_file() { + generate_header + echo "#ifndef LIBCALL_DEFAULTS" + echo "#define LIBCALL_DEFAULTS" + echo + echo "// Special LibCall attributes, empty by default" + generate_macroses "ATTR" " COMPILER_RT_ABI" "$*" + echo + echo "// Misc auxiliary declarations to place at the end of source file" + generate_macroses "AUX_DECLS" "" "$*" + echo + echo "#endif // LIBCALL_DEFAULTS" +} + +libcalls=" +__absvdi2 +__absvsi2 +__absvti2 +__adddf3 +__addsf3 +__addtf3 +__addvdi3 +__addvsi3 +__addvti3 +__aeabi_lcmp +__aeabi_ulcmp +__ashldi3 +__ashlti3 +__ashrdi3 +__ashrti3 +__bswapdi2 +__bswapsi2 +__clzdi2 +__clzsi2 +__clzti2 +__cmpdi2 +__cmpti2 +__ctzdi2 +__ctzsi2 +__ctzti2 +__divdc3 +__divdf3 +__divdi3 +__divmoddi4 +__divmodsi4 +__divsc3 +__divsf3 +__divsi3 +__divtc3 +__divtf3 +__divti3 +__divxc3 +__dtoi64 +__dtou64 +__enable_execute_stack +__eprintf +__extenddftf2 +__extendhfsf2 +__extendsfdf2 +__extendsftf2 +__ffsdi2 +__ffssi2 +__ffsti2 +__fixdfdi +__fixdfsi +__fixdfti +__fixsfdi +__fixsfsi +__fixsfti +__fixtfdi +__fixtfsi +__fixtfti +__fixunsdfdi +__fixunsdfsi +__fixunsdfti +__fixunssfdi +__fixunssfsi +__fixunssfti +__fixunstfdi +__fixunstfsi +__fixunstfti +__fixunsxfdi +__fixunsxfsi +__fixunsxfti +__fixxfdi +__fixxfti +__floatdidf +__floatdisf +__floatditf +__floatdixf +__floatsidf +__floatsisf +__floatsitf +__floattidf +__floattisf +__floattitf +__floattixf +__floatundidf +__floatundisf +__floatunditf +__floatundixf +__floatunsidf +__floatunsisf +__floatunsitf +__floatuntidf +__floatuntisf +__floatuntitf +__floatuntixf +__gcc_personality_sj0 +__gcc_personality_v0 +__gedf2 +__gesf2 +__getf2 +__gnu_f2h_ieee +__gnu_h2f_ieee +__i64tod +__i64tos +__ledf2 +__lesf2 +__letf2 +__lshrdi3 +__lshrti3 +__moddi3 +__modsi3 +__modti3 +__muldc3 +__muldf3 +__muldi3 +__mulodi4 +__mulosi4 +__muloti4 +__mulsc3 +__mulsf3 +__multc3 +__multf3 +__multi3 +__mulvdi3 +__mulvsi3 +__mulvti3 +__mulxc3 +__negdf2 +__negdi2 +__negsf2 +__negti2 +__negvdi2 +__negvsi2 +__negvti2 +__paritydi2 +__paritysi2 +__parityti2 +__popcountdi2 +__popcountsi2 +__popcountti2 +__powidf2 +__powisf2 +__powitf2 +__powixf2 +__stoi64 +__stou64 +__subdf3 +__subsf3 +__subtf3 +__subvdi3 +__subvsi3 +__subvti3 +__trampoline_setup +__truncdfhf2 +__truncdfsf2 +__truncsfhf2 +__trunctfdf2 +__trunctfsf2 +__u64tod +__u64tos +__ucmpdi2 +__ucmpti2 +__udivdi3 +__udivmoddi4 +__udivmodsi4 +__udivmodti4 +__udivsi3 +__udivti3 +__umoddi3 +__umodsi3 +__umodti3 +__unordsf2 +__unorddf2 +__unordtf2 +" + +generate_file $libcalls