[compiler-rt] r303188 - builtins: expand out the AEABI function stubs

Saleem Abdulrasool via llvm-commits llvm-commits at lists.llvm.org
Tue May 16 09:41:39 PDT 2017


Author: compnerd
Date: Tue May 16 11:41:37 2017
New Revision: 303188

URL: http://llvm.org/viewvc/llvm-project?rev=303188&view=rev
Log:
builtins: expand out the AEABI function stubs

These actually may change calling conventions.  We cannot simply provide
function aliases as the aliased function may have a different calling
convention.  Provide a forwarding function instead to permit the
compiler to synthesize the calling convention adjustment thunk.

Remove the `ARM_EABI_FNALIAS` macro as that is not safe to use.

Resolves PR33030!

Modified:
    compiler-rt/trunk/lib/builtins/adddf3.c
    compiler-rt/trunk/lib/builtins/addsf3.c
    compiler-rt/trunk/lib/builtins/arm/aeabi_cdcmpeq_check_nan.c
    compiler-rt/trunk/lib/builtins/arm/aeabi_cfcmpeq_check_nan.c
    compiler-rt/trunk/lib/builtins/arm/aeabi_div0.c
    compiler-rt/trunk/lib/builtins/arm/aeabi_drsub.c
    compiler-rt/trunk/lib/builtins/arm/aeabi_frsub.c
    compiler-rt/trunk/lib/builtins/ashldi3.c
    compiler-rt/trunk/lib/builtins/ashrdi3.c
    compiler-rt/trunk/lib/builtins/comparedf2.c
    compiler-rt/trunk/lib/builtins/comparesf2.c
    compiler-rt/trunk/lib/builtins/divdf3.c
    compiler-rt/trunk/lib/builtins/divsf3.c
    compiler-rt/trunk/lib/builtins/divsi3.c
    compiler-rt/trunk/lib/builtins/extendhfsf2.c
    compiler-rt/trunk/lib/builtins/extendsfdf2.c
    compiler-rt/trunk/lib/builtins/fixdfdi.c
    compiler-rt/trunk/lib/builtins/fixdfsi.c
    compiler-rt/trunk/lib/builtins/fixsfdi.c
    compiler-rt/trunk/lib/builtins/fixsfsi.c
    compiler-rt/trunk/lib/builtins/fixunsdfdi.c
    compiler-rt/trunk/lib/builtins/fixunsdfsi.c
    compiler-rt/trunk/lib/builtins/fixunssfdi.c
    compiler-rt/trunk/lib/builtins/fixunssfsi.c
    compiler-rt/trunk/lib/builtins/floatdidf.c
    compiler-rt/trunk/lib/builtins/floatdisf.c
    compiler-rt/trunk/lib/builtins/floatsidf.c
    compiler-rt/trunk/lib/builtins/floatsisf.c
    compiler-rt/trunk/lib/builtins/floatundidf.c
    compiler-rt/trunk/lib/builtins/floatundisf.c
    compiler-rt/trunk/lib/builtins/floatunsidf.c
    compiler-rt/trunk/lib/builtins/floatunsisf.c
    compiler-rt/trunk/lib/builtins/int_lib.h
    compiler-rt/trunk/lib/builtins/lshrdi3.c
    compiler-rt/trunk/lib/builtins/muldf3.c
    compiler-rt/trunk/lib/builtins/muldi3.c
    compiler-rt/trunk/lib/builtins/mulsf3.c
    compiler-rt/trunk/lib/builtins/negdf2.c
    compiler-rt/trunk/lib/builtins/negsf2.c
    compiler-rt/trunk/lib/builtins/subdf3.c
    compiler-rt/trunk/lib/builtins/subsf3.c
    compiler-rt/trunk/lib/builtins/truncdfhf2.c
    compiler-rt/trunk/lib/builtins/truncdfsf2.c
    compiler-rt/trunk/lib/builtins/truncsfhf2.c
    compiler-rt/trunk/lib/builtins/udivsi3.c

Modified: compiler-rt/trunk/lib/builtins/adddf3.c
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/builtins/adddf3.c?rev=303188&r1=303187&r2=303188&view=diff
==============================================================================
--- compiler-rt/trunk/lib/builtins/adddf3.c (original)
+++ compiler-rt/trunk/lib/builtins/adddf3.c Tue May 16 11:41:37 2017
@@ -15,8 +15,13 @@
 #define DOUBLE_PRECISION
 #include "fp_add_impl.inc"
 
-ARM_EABI_FNALIAS(dadd, adddf3)
-
 COMPILER_RT_ABI double __adddf3(double a, double b){
     return __addXf3__(a, b);
 }
+
+#if defined(__ARM_EABI__)
+AEABI_RTABI double __aeabi_dadd(double a, double b) {
+  return __adddf3(a, b);
+}
+#endif
+

Modified: compiler-rt/trunk/lib/builtins/addsf3.c
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/builtins/addsf3.c?rev=303188&r1=303187&r2=303188&view=diff
==============================================================================
--- compiler-rt/trunk/lib/builtins/addsf3.c (original)
+++ compiler-rt/trunk/lib/builtins/addsf3.c Tue May 16 11:41:37 2017
@@ -15,8 +15,13 @@
 #define SINGLE_PRECISION
 #include "fp_add_impl.inc"
 
-ARM_EABI_FNALIAS(fadd, addsf3)
-
 COMPILER_RT_ABI float __addsf3(float a, float b) {
     return __addXf3__(a, b);
 }
+
+#if defined(__ARM_EABI__)
+AEABI_RTABI float __aeabi_fadd(float a, float b) {
+  return __addsf3(a, b);
+}
+#endif
+

Modified: compiler-rt/trunk/lib/builtins/arm/aeabi_cdcmpeq_check_nan.c
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/builtins/arm/aeabi_cdcmpeq_check_nan.c?rev=303188&r1=303187&r2=303188&view=diff
==============================================================================
--- compiler-rt/trunk/lib/builtins/arm/aeabi_cdcmpeq_check_nan.c (original)
+++ compiler-rt/trunk/lib/builtins/arm/aeabi_cdcmpeq_check_nan.c Tue May 16 11:41:37 2017
@@ -9,8 +9,7 @@
 
 #include <stdint.h>
 
-__attribute__((pcs("aapcs")))
-__attribute__((visibility("hidden")))
+AEABI_RTABI __attribute__((visibility("hidden")))
 int __aeabi_cdcmpeq_check_nan(double a, double b) {
     return __builtin_isnan(a) || __builtin_isnan(b);
 }

Modified: compiler-rt/trunk/lib/builtins/arm/aeabi_cfcmpeq_check_nan.c
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/builtins/arm/aeabi_cfcmpeq_check_nan.c?rev=303188&r1=303187&r2=303188&view=diff
==============================================================================
--- compiler-rt/trunk/lib/builtins/arm/aeabi_cfcmpeq_check_nan.c (original)
+++ compiler-rt/trunk/lib/builtins/arm/aeabi_cfcmpeq_check_nan.c Tue May 16 11:41:37 2017
@@ -9,8 +9,7 @@
 
 #include <stdint.h>
 
-__attribute__((pcs("aapcs")))
-__attribute__((visibility("hidden")))
+AEABI_RTABI __attribute__((visibility("hidden")))
 int __aeabi_cfcmpeq_check_nan(float a, float b) {
     return __builtin_isnan(a) || __builtin_isnan(b);
 }

Modified: compiler-rt/trunk/lib/builtins/arm/aeabi_div0.c
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/builtins/arm/aeabi_div0.c?rev=303188&r1=303187&r2=303188&view=diff
==============================================================================
--- compiler-rt/trunk/lib/builtins/arm/aeabi_div0.c (original)
+++ compiler-rt/trunk/lib/builtins/arm/aeabi_div0.c Tue May 16 11:41:37 2017
@@ -30,12 +30,12 @@
 extern unsigned char declaration;
 
 #if defined(__ARM_EABI__)
-int __attribute__((weak)) __attribute__((visibility("hidden")))
+AEABI_RTABI int __attribute__((weak)) __attribute__((visibility("hidden")))
 __aeabi_idiv0(int return_value) {
   return return_value;
 }
 
-long long __attribute__((weak)) __attribute__((visibility("hidden")))
+AEABI_RTABI long long __attribute__((weak)) __attribute__((visibility("hidden")))
 __aeabi_ldiv0(long long return_value) {
   return return_value;
 }

Modified: compiler-rt/trunk/lib/builtins/arm/aeabi_drsub.c
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/builtins/arm/aeabi_drsub.c?rev=303188&r1=303187&r2=303188&view=diff
==============================================================================
--- compiler-rt/trunk/lib/builtins/arm/aeabi_drsub.c (original)
+++ compiler-rt/trunk/lib/builtins/arm/aeabi_drsub.c Tue May 16 11:41:37 2017
@@ -10,10 +10,10 @@
 #define DOUBLE_PRECISION
 #include "../fp_lib.h"
 
-COMPILER_RT_ABI fp_t
+AEABI_RTABI fp_t
 __aeabi_dsub(fp_t, fp_t);
 
-COMPILER_RT_ABI fp_t
+AEABI_RTABI fp_t
 __aeabi_drsub(fp_t a, fp_t b) {
     return __aeabi_dsub(b, a);
 }

Modified: compiler-rt/trunk/lib/builtins/arm/aeabi_frsub.c
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/builtins/arm/aeabi_frsub.c?rev=303188&r1=303187&r2=303188&view=diff
==============================================================================
--- compiler-rt/trunk/lib/builtins/arm/aeabi_frsub.c (original)
+++ compiler-rt/trunk/lib/builtins/arm/aeabi_frsub.c Tue May 16 11:41:37 2017
@@ -10,10 +10,10 @@
 #define SINGLE_PRECISION
 #include "../fp_lib.h"
 
-COMPILER_RT_ABI fp_t
+AEABI_RTABI fp_t
 __aeabi_fsub(fp_t, fp_t);
 
-COMPILER_RT_ABI fp_t
+AEABI_RTABI fp_t
 __aeabi_frsub(fp_t a, fp_t b) {
     return __aeabi_fsub(b, a);
 }

Modified: compiler-rt/trunk/lib/builtins/ashldi3.c
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/builtins/ashldi3.c?rev=303188&r1=303187&r2=303188&view=diff
==============================================================================
--- compiler-rt/trunk/lib/builtins/ashldi3.c (original)
+++ compiler-rt/trunk/lib/builtins/ashldi3.c Tue May 16 11:41:37 2017
@@ -18,8 +18,6 @@
 
 /* Precondition:  0 <= b < bits_in_dword */
 
-ARM_EABI_FNALIAS(llsl, ashldi3)
-
 COMPILER_RT_ABI di_int
 __ashldi3(di_int a, si_int b)
 {
@@ -41,3 +39,10 @@ __ashldi3(di_int a, si_int b)
     }
     return result.all;
 }
+
+#if defined(__ARM_EABI__)
+AEABI_RTABI di_int __aeabi_llsl(di_int a, si_int b) {
+  return __ashldi3(a, b);
+}
+#endif
+

Modified: compiler-rt/trunk/lib/builtins/ashrdi3.c
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/builtins/ashrdi3.c?rev=303188&r1=303187&r2=303188&view=diff
==============================================================================
--- compiler-rt/trunk/lib/builtins/ashrdi3.c (original)
+++ compiler-rt/trunk/lib/builtins/ashrdi3.c Tue May 16 11:41:37 2017
@@ -18,8 +18,6 @@
 
 /* Precondition:  0 <= b < bits_in_dword */
 
-ARM_EABI_FNALIAS(lasr, ashrdi3)
-
 COMPILER_RT_ABI di_int
 __ashrdi3(di_int a, si_int b)
 {
@@ -42,3 +40,10 @@ __ashrdi3(di_int a, si_int b)
     }
     return result.all;
 }
+
+#if defined(__ARM_EABI__)
+AEABI_RTABI di_int __aeabi_lasr(di_int a, si_int b) {
+  return __ashrdi3(a, b);
+}
+#endif
+

Modified: compiler-rt/trunk/lib/builtins/comparedf2.c
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/builtins/comparedf2.c?rev=303188&r1=303187&r2=303188&view=diff
==============================================================================
--- compiler-rt/trunk/lib/builtins/comparedf2.c (original)
+++ compiler-rt/trunk/lib/builtins/comparedf2.c Tue May 16 11:41:37 2017
@@ -113,8 +113,6 @@ __gedf2(fp_t a, fp_t b) {
     }
 }
 
-ARM_EABI_FNALIAS(dcmpun, unorddf2)
-
 COMPILER_RT_ABI int
 __unorddf2(fp_t a, fp_t b) {
     const rep_t aAbs = toRep(a) & absMask;
@@ -144,3 +142,9 @@ __gtdf2(fp_t a, fp_t b) {
     return __gedf2(a, b);
 }
 
+#if defined(__ARM_EABI__)
+AEABI_RTABI int __aeabi_dcmpun(fp_t a, fp_t b) {
+  return __unorddf2(a, b);
+}
+#endif
+

Modified: compiler-rt/trunk/lib/builtins/comparesf2.c
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/builtins/comparesf2.c?rev=303188&r1=303187&r2=303188&view=diff
==============================================================================
--- compiler-rt/trunk/lib/builtins/comparesf2.c (original)
+++ compiler-rt/trunk/lib/builtins/comparesf2.c Tue May 16 11:41:37 2017
@@ -113,8 +113,6 @@ __gesf2(fp_t a, fp_t b) {
     }
 }
 
-ARM_EABI_FNALIAS(fcmpun, unordsf2)
-
 COMPILER_RT_ABI int
 __unordsf2(fp_t a, fp_t b) {
     const rep_t aAbs = toRep(a) & absMask;
@@ -143,3 +141,10 @@ COMPILER_RT_ABI enum GE_RESULT
 __gtsf2(fp_t a, fp_t b) {
     return __gesf2(a, b);
 }
+
+#if defined(__ARM_EABI__)
+AEABI_RTABI int __aeabi_fcmpun(fp_t a, fp_t b) {
+  return __unordsf2(a, b);
+}
+#endif
+

Modified: compiler-rt/trunk/lib/builtins/divdf3.c
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/builtins/divdf3.c?rev=303188&r1=303187&r2=303188&view=diff
==============================================================================
--- compiler-rt/trunk/lib/builtins/divdf3.c (original)
+++ compiler-rt/trunk/lib/builtins/divdf3.c Tue May 16 11:41:37 2017
@@ -19,8 +19,6 @@
 #define DOUBLE_PRECISION
 #include "fp_lib.h"
 
-ARM_EABI_FNALIAS(ddiv, divdf3)
-
 COMPILER_RT_ABI fp_t
 __divdf3(fp_t a, fp_t b) {
     
@@ -183,3 +181,10 @@ __divdf3(fp_t a, fp_t b) {
         return result;
     }
 }
+
+#if defined(__ARM_EABI__)
+AEABI_RTABI fp_t __aeabi_ddiv(fp_t a, fp_t b) {
+  return __divdf3(a, b);
+}
+#endif
+

Modified: compiler-rt/trunk/lib/builtins/divsf3.c
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/builtins/divsf3.c?rev=303188&r1=303187&r2=303188&view=diff
==============================================================================
--- compiler-rt/trunk/lib/builtins/divsf3.c (original)
+++ compiler-rt/trunk/lib/builtins/divsf3.c Tue May 16 11:41:37 2017
@@ -19,8 +19,6 @@
 #define SINGLE_PRECISION
 #include "fp_lib.h"
 
-ARM_EABI_FNALIAS(fdiv, divsf3)
-
 COMPILER_RT_ABI fp_t
 __divsf3(fp_t a, fp_t b) {
     
@@ -167,3 +165,10 @@ __divsf3(fp_t a, fp_t b) {
         return fromRep(absResult | quotientSign);
     }
 }
+
+#if defined(__ARM_EABI__)
+AEABI_RTABI fp_t __aeabi_fdiv(fp_t a, fp_t b) {
+  return __divsf3(a, b);
+}
+#endif
+

Modified: compiler-rt/trunk/lib/builtins/divsi3.c
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/builtins/divsi3.c?rev=303188&r1=303187&r2=303188&view=diff
==============================================================================
--- compiler-rt/trunk/lib/builtins/divsi3.c (original)
+++ compiler-rt/trunk/lib/builtins/divsi3.c Tue May 16 11:41:37 2017
@@ -16,8 +16,6 @@
 
 /* Returns: a / b */
 
-ARM_EABI_FNALIAS(idiv, divsi3)
-
 COMPILER_RT_ABI si_int
 __divsi3(si_int a, si_int b)
 {
@@ -35,3 +33,10 @@ __divsi3(si_int a, si_int b)
      */
     return ((su_int)a/(su_int)b ^ s_a) - s_a;    /* negate if s_a == -1 */
 }
+
+#if defined(__ARM_EABI__)
+AEABI_RTABI si_int __aeabi_idiv(si_int a, si_int b) {
+  return __divsi3(a, b);
+}
+#endif
+

Modified: compiler-rt/trunk/lib/builtins/extendhfsf2.c
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/builtins/extendhfsf2.c?rev=303188&r1=303187&r2=303188&view=diff
==============================================================================
--- compiler-rt/trunk/lib/builtins/extendhfsf2.c (original)
+++ compiler-rt/trunk/lib/builtins/extendhfsf2.c Tue May 16 11:41:37 2017
@@ -12,8 +12,6 @@
 #define DST_SINGLE
 #include "fp_extend_impl.inc"
 
-ARM_EABI_FNALIAS(h2f, extendhfsf2)
-
 // 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) {
@@ -23,3 +21,10 @@ COMPILER_RT_ABI NOINLINE float __extendh
 COMPILER_RT_ABI float __gnu_h2f_ieee(uint16_t a) {
     return __extendhfsf2(a);
 }
+
+#if defined(__ARM_EABI__)
+AEABI_RTABI float __aeabi_h2f(uint16_t a) {
+  return __extendhfsf2(a);
+}
+#endif
+

Modified: compiler-rt/trunk/lib/builtins/extendsfdf2.c
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/builtins/extendsfdf2.c?rev=303188&r1=303187&r2=303188&view=diff
==============================================================================
--- compiler-rt/trunk/lib/builtins/extendsfdf2.c (original)
+++ compiler-rt/trunk/lib/builtins/extendsfdf2.c Tue May 16 11:41:37 2017
@@ -12,8 +12,13 @@
 #define DST_DOUBLE
 #include "fp_extend_impl.inc"
 
-ARM_EABI_FNALIAS(f2d, extendsfdf2)
-
 COMPILER_RT_ABI double __extendsfdf2(float a) {
     return __extendXfYf2__(a);
 }
+
+#if defined(__ARM_EABI__)
+AEABI_RTABI double __aeabi_f2d(float a) {
+  return __extendsfdf2(a);
+}
+#endif
+

Modified: compiler-rt/trunk/lib/builtins/fixdfdi.c
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/builtins/fixdfdi.c?rev=303188&r1=303187&r2=303188&view=diff
==============================================================================
--- compiler-rt/trunk/lib/builtins/fixdfdi.c (original)
+++ compiler-rt/trunk/lib/builtins/fixdfdi.c Tue May 16 11:41:37 2017
@@ -10,7 +10,6 @@
 
 #define DOUBLE_PRECISION
 #include "fp_lib.h"
-ARM_EABI_FNALIAS(d2lz, fixdfdi)
 
 #ifndef __SOFT_FP__
 /* Support for systems that have hardware floating-point; can set the invalid
@@ -44,3 +43,15 @@ __fixdfdi(fp_t a) {
 }
 
 #endif
+
+#if defined(__ARM_EABI__)
+AEABI_RTABI di_int
+#if defined(__SOFT_FP__)
+__aeabi_d2lz(fp_t a) {
+#else
+__aeabi_d2lz(double a) {
+#endif
+  return __fixdfdi(a);
+}
+#endif
+

Modified: compiler-rt/trunk/lib/builtins/fixdfsi.c
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/builtins/fixdfsi.c?rev=303188&r1=303187&r2=303188&view=diff
==============================================================================
--- compiler-rt/trunk/lib/builtins/fixdfsi.c (original)
+++ compiler-rt/trunk/lib/builtins/fixdfsi.c Tue May 16 11:41:37 2017
@@ -14,9 +14,14 @@ typedef si_int fixint_t;
 typedef su_int fixuint_t;
 #include "fp_fixint_impl.inc"
 
-ARM_EABI_FNALIAS(d2iz, fixdfsi)
-
 COMPILER_RT_ABI si_int
 __fixdfsi(fp_t a) {
     return __fixint(a);
 }
+
+#if defined(__ARM_EABI__)
+AEABI_RTABI si_int __aeabi_d2iz(fp_t a) {
+  return __fixdfsi(a);
+}
+#endif
+

Modified: compiler-rt/trunk/lib/builtins/fixsfdi.c
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/builtins/fixsfdi.c?rev=303188&r1=303187&r2=303188&view=diff
==============================================================================
--- compiler-rt/trunk/lib/builtins/fixsfdi.c (original)
+++ compiler-rt/trunk/lib/builtins/fixsfdi.c Tue May 16 11:41:37 2017
@@ -11,8 +11,6 @@
 #define SINGLE_PRECISION
 #include "fp_lib.h"
 
-ARM_EABI_FNALIAS(f2lz, fixsfdi)
-
 #ifndef __SOFT_FP__
 /* Support for systems that have hardware floating-point; can set the invalid
  * flag as a side-effect of computation.
@@ -45,3 +43,15 @@ __fixsfdi(fp_t a) {
 }
 
 #endif
+
+#if defined(__ARM_EABI__)
+AEABI_RTABI di_int
+#if defined(__SOFT_FP__)
+__aeabi_f2lz(fp_t a) {
+#else
+__aeabi_f2lz(float a) {
+#endif
+  return __fixsfdi(a);
+}
+#endif
+

Modified: compiler-rt/trunk/lib/builtins/fixsfsi.c
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/builtins/fixsfsi.c?rev=303188&r1=303187&r2=303188&view=diff
==============================================================================
--- compiler-rt/trunk/lib/builtins/fixsfsi.c (original)
+++ compiler-rt/trunk/lib/builtins/fixsfsi.c Tue May 16 11:41:37 2017
@@ -14,9 +14,14 @@ typedef si_int fixint_t;
 typedef su_int fixuint_t;
 #include "fp_fixint_impl.inc"
 
-ARM_EABI_FNALIAS(f2iz, fixsfsi)
-
 COMPILER_RT_ABI si_int
 __fixsfsi(fp_t a) {
     return __fixint(a);
 }
+
+#if defined(__ARM_EABI__)
+AEABI_RTABI si_int __aeabi_f2iz(fp_t a) {
+  return __fixsfsi(a);
+}
+#endif
+

Modified: compiler-rt/trunk/lib/builtins/fixunsdfdi.c
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/builtins/fixunsdfdi.c?rev=303188&r1=303187&r2=303188&view=diff
==============================================================================
--- compiler-rt/trunk/lib/builtins/fixunsdfdi.c (original)
+++ compiler-rt/trunk/lib/builtins/fixunsdfdi.c Tue May 16 11:41:37 2017
@@ -11,8 +11,6 @@
 #define DOUBLE_PRECISION
 #include "fp_lib.h"
 
-ARM_EABI_FNALIAS(d2ulz, fixunsdfdi)
-
 #ifndef __SOFT_FP__
 /* Support for systems that have hardware floating-point; can set the invalid
  * flag as a side-effect of computation.
@@ -42,3 +40,15 @@ __fixunsdfdi(fp_t a) {
 }
 
 #endif
+
+#if defined(__ARM_EABI__)
+AEABI_RTABI du_int
+#if defined(__SOFT_FP__)
+__aeabi_d2ulz(fp_t a) {
+#else
+__aeabi_d2ulz(double a) {
+#endif
+  return __fixunsdfdi(a);
+}
+#endif
+

Modified: compiler-rt/trunk/lib/builtins/fixunsdfsi.c
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/builtins/fixunsdfsi.c?rev=303188&r1=303187&r2=303188&view=diff
==============================================================================
--- compiler-rt/trunk/lib/builtins/fixunsdfsi.c (original)
+++ compiler-rt/trunk/lib/builtins/fixunsdfsi.c Tue May 16 11:41:37 2017
@@ -13,9 +13,14 @@
 typedef su_int fixuint_t;
 #include "fp_fixuint_impl.inc"
 
-ARM_EABI_FNALIAS(d2uiz, fixunsdfsi)
-
 COMPILER_RT_ABI su_int
 __fixunsdfsi(fp_t a) {
     return __fixuint(a);
 }
+
+#if defined(__ARM_EABI__)
+AEABI_RTABI su_int __aeabi_d2uiz(fp_t a) {
+  return __fixunsdfsi(a);
+}
+#endif
+

Modified: compiler-rt/trunk/lib/builtins/fixunssfdi.c
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/builtins/fixunssfdi.c?rev=303188&r1=303187&r2=303188&view=diff
==============================================================================
--- compiler-rt/trunk/lib/builtins/fixunssfdi.c (original)
+++ compiler-rt/trunk/lib/builtins/fixunssfdi.c Tue May 16 11:41:37 2017
@@ -11,8 +11,6 @@
 #define SINGLE_PRECISION
 #include "fp_lib.h"
 
-ARM_EABI_FNALIAS(f2ulz, fixunssfdi)
-
 #ifndef __SOFT_FP__
 /* Support for systems that have hardware floating-point; can set the invalid
  * flag as a side-effect of computation.
@@ -43,3 +41,15 @@ __fixunssfdi(fp_t a) {
 }
 
 #endif
+
+#if defined(__ARM_EABI__)
+AEABI_RTABI du_int
+#if defined(__SOFT_FP__)
+__aeabi_f2ulz(fp_t a) {
+#else
+__aeabi_f2ulz(float a) {
+#endif
+  return __fixunssfdi(a);
+}
+#endif
+

Modified: compiler-rt/trunk/lib/builtins/fixunssfsi.c
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/builtins/fixunssfsi.c?rev=303188&r1=303187&r2=303188&view=diff
==============================================================================
--- compiler-rt/trunk/lib/builtins/fixunssfsi.c (original)
+++ compiler-rt/trunk/lib/builtins/fixunssfsi.c Tue May 16 11:41:37 2017
@@ -17,9 +17,14 @@
 typedef su_int fixuint_t;
 #include "fp_fixuint_impl.inc"
 
-ARM_EABI_FNALIAS(f2uiz, fixunssfsi)
-
 COMPILER_RT_ABI su_int
 __fixunssfsi(fp_t a) {
     return __fixuint(a);
 }
+
+#if defined(__ARM_EABI__)
+AEABI_RTABI su_int __aeabi_f2uiz(fp_t a) {
+  return __fixunssfsi(a);
+}
+#endif
+

Modified: compiler-rt/trunk/lib/builtins/floatdidf.c
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/builtins/floatdidf.c?rev=303188&r1=303187&r2=303188&view=diff
==============================================================================
--- compiler-rt/trunk/lib/builtins/floatdidf.c (original)
+++ compiler-rt/trunk/lib/builtins/floatdidf.c Tue May 16 11:41:37 2017
@@ -22,8 +22,6 @@
 
 /* seee eeee eeee mmmm mmmm mmmm mmmm mmmm | mmmm mmmm mmmm mmmm mmmm mmmm mmmm mmmm */
 
-ARM_EABI_FNALIAS(l2d, floatdidf)
-
 #ifndef __SOFT_FP__
 /* Support for systems that have hardware floating-point; we'll set the inexact flag
  * as a side-effect of this computation.
@@ -105,3 +103,10 @@ __floatdidf(di_int a)
     return fb.f;
 }
 #endif
+
+#if defined(__AEABI__)
+AEABI_RTABI double __aeabi_l2d(di_int a) {
+  return __floatdidf(a);
+}
+#endif
+

Modified: compiler-rt/trunk/lib/builtins/floatdisf.c
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/builtins/floatdisf.c?rev=303188&r1=303187&r2=303188&view=diff
==============================================================================
--- compiler-rt/trunk/lib/builtins/floatdisf.c (original)
+++ compiler-rt/trunk/lib/builtins/floatdisf.c Tue May 16 11:41:37 2017
@@ -22,8 +22,6 @@
 
 #include "int_lib.h"
 
-ARM_EABI_FNALIAS(l2f, floatdisf)
-
 COMPILER_RT_ABI float
 __floatdisf(di_int a)
 {
@@ -78,3 +76,10 @@ __floatdisf(di_int a)
            ((su_int)a & 0x007FFFFF);   /* mantissa */
     return fb.f;
 }
+
+#if defined(__ARM_EABI__)
+AEABI_RTABI float __aeabi_l2f(di_int a) {
+  return __floatdisf(a);
+}
+#endif
+

Modified: compiler-rt/trunk/lib/builtins/floatsidf.c
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/builtins/floatsidf.c?rev=303188&r1=303187&r2=303188&view=diff
==============================================================================
--- compiler-rt/trunk/lib/builtins/floatsidf.c (original)
+++ compiler-rt/trunk/lib/builtins/floatsidf.c Tue May 16 11:41:37 2017
@@ -18,8 +18,6 @@
 
 #include "int_lib.h"
 
-ARM_EABI_FNALIAS(i2d, floatsidf)
-
 COMPILER_RT_ABI fp_t
 __floatsidf(int a) {
     
@@ -51,3 +49,10 @@ __floatsidf(int a) {
     // Insert the sign bit and return
     return fromRep(result | sign);
 }
+
+#if defined(__ARM_EABI__)
+AEABI_RTABI fp_t __aeabi_i2d(int a) {
+  return __floatsidf(a);
+}
+#endif
+

Modified: compiler-rt/trunk/lib/builtins/floatsisf.c
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/builtins/floatsisf.c?rev=303188&r1=303187&r2=303188&view=diff
==============================================================================
--- compiler-rt/trunk/lib/builtins/floatsisf.c (original)
+++ compiler-rt/trunk/lib/builtins/floatsisf.c Tue May 16 11:41:37 2017
@@ -18,8 +18,6 @@
 
 #include "int_lib.h"
 
-ARM_EABI_FNALIAS(i2f, floatsisf)
-
 COMPILER_RT_ABI fp_t
 __floatsisf(int a) {
     
@@ -57,3 +55,10 @@ __floatsisf(int a) {
     // Insert the sign bit and return
     return fromRep(result | sign);
 }
+
+#if defined(__ARM_EABI__)
+AEABI_RTABI fp_t __aeabi_i2f(int a) {
+  return __floatsisf(a);
+}
+#endif
+

Modified: compiler-rt/trunk/lib/builtins/floatundidf.c
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/builtins/floatundidf.c?rev=303188&r1=303187&r2=303188&view=diff
==============================================================================
--- compiler-rt/trunk/lib/builtins/floatundidf.c (original)
+++ compiler-rt/trunk/lib/builtins/floatundidf.c Tue May 16 11:41:37 2017
@@ -22,8 +22,6 @@
 
 #include "int_lib.h"
 
-ARM_EABI_FNALIAS(ul2d, floatundidf)
-
 #ifndef __SOFT_FP__
 /* Support for systems that have hardware floating-point; we'll set the inexact flag
  * as a side-effect of this computation.
@@ -104,3 +102,10 @@ __floatundidf(du_int a)
     return fb.f;
 }
 #endif
+
+#if defined(__ARM_EABI__)
+AEABI_RTABI double __aeabi_ul2d(du_int a) {
+  return __floatundidf(a);
+}
+#endif
+

Modified: compiler-rt/trunk/lib/builtins/floatundisf.c
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/builtins/floatundisf.c?rev=303188&r1=303187&r2=303188&view=diff
==============================================================================
--- compiler-rt/trunk/lib/builtins/floatundisf.c (original)
+++ compiler-rt/trunk/lib/builtins/floatundisf.c Tue May 16 11:41:37 2017
@@ -22,8 +22,6 @@
 
 #include "int_lib.h"
 
-ARM_EABI_FNALIAS(ul2f, floatundisf)
-
 COMPILER_RT_ABI float
 __floatundisf(du_int a)
 {
@@ -75,3 +73,10 @@ __floatundisf(du_int a)
            ((su_int)a & 0x007FFFFF);  /* mantissa */
     return fb.f;
 }
+
+#if defined(__ARM_EABI__)
+AEABI_RTABI float __aeabi_ul2f(du_int a) {
+  return __floatundisf(a);
+}
+#endif
+

Modified: compiler-rt/trunk/lib/builtins/floatunsidf.c
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/builtins/floatunsidf.c?rev=303188&r1=303187&r2=303188&view=diff
==============================================================================
--- compiler-rt/trunk/lib/builtins/floatunsidf.c (original)
+++ compiler-rt/trunk/lib/builtins/floatunsidf.c Tue May 16 11:41:37 2017
@@ -18,8 +18,6 @@
 
 #include "int_lib.h"
 
-ARM_EABI_FNALIAS(ui2d, floatunsidf)
-
 COMPILER_RT_ABI fp_t
 __floatunsidf(unsigned int a) {
     
@@ -40,3 +38,10 @@ __floatunsidf(unsigned int a) {
     result += (rep_t)(exponent + exponentBias) << significandBits;
     return fromRep(result);
 }
+
+#if defined(__ARM_EABI__)
+AEABI_RTABI fp_t __aeabi_ui2d(unsigned int a) {
+  return __floatunsidf(a);
+}
+#endif
+

Modified: compiler-rt/trunk/lib/builtins/floatunsisf.c
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/builtins/floatunsisf.c?rev=303188&r1=303187&r2=303188&view=diff
==============================================================================
--- compiler-rt/trunk/lib/builtins/floatunsisf.c (original)
+++ compiler-rt/trunk/lib/builtins/floatunsisf.c Tue May 16 11:41:37 2017
@@ -18,8 +18,6 @@
 
 #include "int_lib.h"
 
-ARM_EABI_FNALIAS(ui2f, floatunsisf)
-
 COMPILER_RT_ABI fp_t
 __floatunsisf(unsigned int a) {
     
@@ -48,3 +46,10 @@ __floatunsisf(unsigned int a) {
     result += (rep_t)(exponent + exponentBias) << significandBits;
     return fromRep(result);
 }
+
+#if defined(__ARM_EABI__)
+AEABI_RTABI fp_t __aeabi_ui2f(unsigned int a) {
+  return __floatunsisf(a);
+}
+#endif
+

Modified: compiler-rt/trunk/lib/builtins/int_lib.h
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/builtins/int_lib.h?rev=303188&r1=303187&r2=303188&view=diff
==============================================================================
--- compiler-rt/trunk/lib/builtins/int_lib.h (original)
+++ compiler-rt/trunk/lib/builtins/int_lib.h Tue May 16 11:41:37 2017
@@ -30,18 +30,17 @@
 /* ABI macro definitions */
 
 #if __ARM_EABI__
-# define ARM_EABI_FNALIAS(aeabi_name, name)         \
-  void __aeabi_##aeabi_name() __attribute__((alias("__" #name)));
 # ifdef COMPILER_RT_ARMHF_TARGET
 #   define COMPILER_RT_ABI
 # else
 #   define COMPILER_RT_ABI __attribute__((__pcs__("aapcs")))
 # endif
 #else
-# define ARM_EABI_FNALIAS(aeabi_name, name)
 # define COMPILER_RT_ABI
 #endif
 
+#define AEABI_RTABI __attribute__((__pcs__("aapcs")))
+
 #ifdef _MSC_VER
 #define ALWAYS_INLINE __forceinline
 #define NOINLINE __declspec(noinline)

Modified: compiler-rt/trunk/lib/builtins/lshrdi3.c
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/builtins/lshrdi3.c?rev=303188&r1=303187&r2=303188&view=diff
==============================================================================
--- compiler-rt/trunk/lib/builtins/lshrdi3.c (original)
+++ compiler-rt/trunk/lib/builtins/lshrdi3.c Tue May 16 11:41:37 2017
@@ -18,8 +18,6 @@
 
 /* Precondition:  0 <= b < bits_in_dword */
 
-ARM_EABI_FNALIAS(llsr, lshrdi3)
-
 COMPILER_RT_ABI di_int
 __lshrdi3(di_int a, si_int b)
 {
@@ -41,3 +39,10 @@ __lshrdi3(di_int a, si_int b)
     }
     return result.all;
 }
+
+#if defined(__ARM_EABI__)
+AEABI_RTABI di_int __aeabi_llsr(di_int a, si_int b) {
+  return __lshrdi3(a, b);
+}
+#endif
+

Modified: compiler-rt/trunk/lib/builtins/muldf3.c
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/builtins/muldf3.c?rev=303188&r1=303187&r2=303188&view=diff
==============================================================================
--- compiler-rt/trunk/lib/builtins/muldf3.c (original)
+++ compiler-rt/trunk/lib/builtins/muldf3.c Tue May 16 11:41:37 2017
@@ -15,8 +15,13 @@
 #define DOUBLE_PRECISION
 #include "fp_mul_impl.inc"
 
-ARM_EABI_FNALIAS(dmul, muldf3)
-
 COMPILER_RT_ABI fp_t __muldf3(fp_t a, fp_t b) {
     return __mulXf3__(a, b);
 }
+
+#if defined(__ARM_EABI__)
+AEABI_RTABI fp_t __aeabi_dmul(fp_t a, fp_t b) {
+  return __muldf3(a, b);
+}
+#endif
+

Modified: compiler-rt/trunk/lib/builtins/muldi3.c
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/builtins/muldi3.c?rev=303188&r1=303187&r2=303188&view=diff
==============================================================================
--- compiler-rt/trunk/lib/builtins/muldi3.c (original)
+++ compiler-rt/trunk/lib/builtins/muldi3.c Tue May 16 11:41:37 2017
@@ -40,8 +40,6 @@ __muldsi3(su_int a, su_int b)
 
 /* Returns: a * b */
 
-ARM_EABI_FNALIAS(lmul, muldi3)
-
 COMPILER_RT_ABI di_int
 __muldi3(di_int a, di_int b)
 {
@@ -54,3 +52,10 @@ __muldi3(di_int a, di_int b)
     r.s.high += x.s.high * y.s.low + x.s.low * y.s.high;
     return r.all;
 }
+
+#if defined(__ARM_EABI__)
+AEABI_RTABI di_int __aeabi_lmul(di_int a, di_int b) {
+  return __muldi3(a, b);
+}
+#endif
+

Modified: compiler-rt/trunk/lib/builtins/mulsf3.c
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/builtins/mulsf3.c?rev=303188&r1=303187&r2=303188&view=diff
==============================================================================
--- compiler-rt/trunk/lib/builtins/mulsf3.c (original)
+++ compiler-rt/trunk/lib/builtins/mulsf3.c Tue May 16 11:41:37 2017
@@ -15,8 +15,13 @@
 #define SINGLE_PRECISION
 #include "fp_mul_impl.inc"
 
-ARM_EABI_FNALIAS(fmul, mulsf3)
-
 COMPILER_RT_ABI fp_t __mulsf3(fp_t a, fp_t b) {
     return __mulXf3__(a, b);
 }
+
+#if defined(__ARM_EABI__)
+AEABI_RTABI fp_t __aeabi_fmul(fp_t a, fp_t b) {
+  return __mulsf3(a, b);
+}
+#endif
+

Modified: compiler-rt/trunk/lib/builtins/negdf2.c
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/builtins/negdf2.c?rev=303188&r1=303187&r2=303188&view=diff
==============================================================================
--- compiler-rt/trunk/lib/builtins/negdf2.c (original)
+++ compiler-rt/trunk/lib/builtins/negdf2.c Tue May 16 11:41:37 2017
@@ -14,9 +14,14 @@
 #define DOUBLE_PRECISION
 #include "fp_lib.h"
 
-ARM_EABI_FNALIAS(dneg, negdf2)
-
 COMPILER_RT_ABI fp_t
 __negdf2(fp_t a) {
     return fromRep(toRep(a) ^ signBit);
 }
+
+#if defined(__ARM_EABI__)
+AEABI_RTABI fp_t __aeabi_dneg(fp_t a) {
+  return __negdf2(a);
+}
+#endif
+

Modified: compiler-rt/trunk/lib/builtins/negsf2.c
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/builtins/negsf2.c?rev=303188&r1=303187&r2=303188&view=diff
==============================================================================
--- compiler-rt/trunk/lib/builtins/negsf2.c (original)
+++ compiler-rt/trunk/lib/builtins/negsf2.c Tue May 16 11:41:37 2017
@@ -14,9 +14,14 @@
 #define SINGLE_PRECISION
 #include "fp_lib.h"
 
-ARM_EABI_FNALIAS(fneg, negsf2)
-
 COMPILER_RT_ABI fp_t
 __negsf2(fp_t a) {
     return fromRep(toRep(a) ^ signBit);
 }
+
+#if defined(__ARM_EABI__)
+AEABI_RTABI fp_t __aeabi_fneg(fp_t a) {
+  return __negsf2(a);
+}
+#endif
+

Modified: compiler-rt/trunk/lib/builtins/subdf3.c
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/builtins/subdf3.c?rev=303188&r1=303187&r2=303188&view=diff
==============================================================================
--- compiler-rt/trunk/lib/builtins/subdf3.c (original)
+++ compiler-rt/trunk/lib/builtins/subdf3.c Tue May 16 11:41:37 2017
@@ -15,11 +15,15 @@
 #define DOUBLE_PRECISION
 #include "fp_lib.h"
 
-ARM_EABI_FNALIAS(dsub, subdf3)
-
 // Subtraction; flip the sign bit of b and add.
 COMPILER_RT_ABI fp_t
 __subdf3(fp_t a, fp_t b) {
     return __adddf3(a, fromRep(toRep(b) ^ signBit));
 }
 
+#if defined(__ARM_EABI__)
+AEABI_RTABI fp_t __aeabi_dsub(fp_t a, fp_t b) {
+  return __subdf3(a, b);
+}
+#endif
+

Modified: compiler-rt/trunk/lib/builtins/subsf3.c
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/builtins/subsf3.c?rev=303188&r1=303187&r2=303188&view=diff
==============================================================================
--- compiler-rt/trunk/lib/builtins/subsf3.c (original)
+++ compiler-rt/trunk/lib/builtins/subsf3.c Tue May 16 11:41:37 2017
@@ -15,11 +15,15 @@
 #define SINGLE_PRECISION
 #include "fp_lib.h"
 
-ARM_EABI_FNALIAS(fsub, subsf3)
-
 // Subtraction; flip the sign bit of b and add.
 COMPILER_RT_ABI fp_t
 __subsf3(fp_t a, fp_t b) {
     return __addsf3(a, fromRep(toRep(b) ^ signBit));
 }
 
+#if defined(__ARM_EABI__)
+AEABI_RTABI fp_t __aeabi_fsub(fp_t a, fp_t b) {
+  return __subsf3(a, b);
+}
+#endif
+

Modified: compiler-rt/trunk/lib/builtins/truncdfhf2.c
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/builtins/truncdfhf2.c?rev=303188&r1=303187&r2=303188&view=diff
==============================================================================
--- compiler-rt/trunk/lib/builtins/truncdfhf2.c (original)
+++ compiler-rt/trunk/lib/builtins/truncdfhf2.c Tue May 16 11:41:37 2017
@@ -11,8 +11,13 @@
 #define DST_HALF
 #include "fp_trunc_impl.inc"
 
-ARM_EABI_FNALIAS(d2h, truncdfhf2)
-
 COMPILER_RT_ABI uint16_t __truncdfhf2(double a) {
     return __truncXfYf2__(a);
 }
+
+#if defined(__ARM_EABI__)
+AEABI_RTABI uint16_t __aeabi_d2h(double a) {
+  return __truncdfhf2(a);
+}
+#endif
+

Modified: compiler-rt/trunk/lib/builtins/truncdfsf2.c
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/builtins/truncdfsf2.c?rev=303188&r1=303187&r2=303188&view=diff
==============================================================================
--- compiler-rt/trunk/lib/builtins/truncdfsf2.c (original)
+++ compiler-rt/trunk/lib/builtins/truncdfsf2.c Tue May 16 11:41:37 2017
@@ -11,8 +11,13 @@
 #define DST_SINGLE
 #include "fp_trunc_impl.inc"
 
-ARM_EABI_FNALIAS(d2f, truncdfsf2)
-
 COMPILER_RT_ABI float __truncdfsf2(double a) {
     return __truncXfYf2__(a);
 }
+
+#if defined(__ARM_EABI__)
+AEABI_RTABI float __aeabi_d2f(double a) {
+  return __truncdfsf2(a);
+}
+#endif
+

Modified: compiler-rt/trunk/lib/builtins/truncsfhf2.c
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/builtins/truncsfhf2.c?rev=303188&r1=303187&r2=303188&view=diff
==============================================================================
--- compiler-rt/trunk/lib/builtins/truncsfhf2.c (original)
+++ compiler-rt/trunk/lib/builtins/truncsfhf2.c Tue May 16 11:41:37 2017
@@ -11,8 +11,6 @@
 #define DST_HALF
 #include "fp_trunc_impl.inc"
 
-ARM_EABI_FNALIAS(f2h, truncsfhf2)
-
 // 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) {
@@ -22,3 +20,10 @@ COMPILER_RT_ABI NOINLINE uint16_t __trun
 COMPILER_RT_ABI uint16_t __gnu_f2h_ieee(float a) {
     return __truncsfhf2(a);
 }
+
+#if defined(__ARM_EABI__)
+AEABI_RTABI uint16_t __aeabi_f2h(float a) {
+  return __truncsfhf2(a);
+}
+#endif
+

Modified: compiler-rt/trunk/lib/builtins/udivsi3.c
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/builtins/udivsi3.c?rev=303188&r1=303187&r2=303188&view=diff
==============================================================================
--- compiler-rt/trunk/lib/builtins/udivsi3.c (original)
+++ compiler-rt/trunk/lib/builtins/udivsi3.c Tue May 16 11:41:37 2017
@@ -18,8 +18,6 @@
 
 /* Translated from Figure 3-40 of The PowerPC Compiler Writer's Guide */
 
-ARM_EABI_FNALIAS(uidiv, udivsi3)
-
 /* This function should not call __divsi3! */
 COMPILER_RT_ABI su_int
 __udivsi3(su_int n, su_int d)
@@ -64,3 +62,10 @@ __udivsi3(su_int n, su_int d)
     q = (q << 1) | carry;
     return q;
 }
+
+#if defined(__ARM_EABI__)
+AEABI_RTABI su_int __aeabi_uidiv(su_int n, su_int d) {
+  return __udivsi3(n, d);
+}
+#endif
+




More information about the llvm-commits mailing list