[PATCH] D39700: [Builtins] Do not use tailcall for Thumb1
Weiming Zhao via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Mon Nov 6 14:36:18 PST 2017
weimingz updated this revision to Diff 121792.
weimingz added a comment.
add memcpy
https://reviews.llvm.org/D39700
Files:
lib/builtins/arm/aeabi_memcmp.S
lib/builtins/arm/aeabi_memcpy.S
lib/builtins/arm/aeabi_memmove.S
lib/builtins/arm/aeabi_memset.S
Index: lib/builtins/arm/aeabi_memset.S
===================================================================
--- lib/builtins/arm/aeabi_memset.S
+++ lib/builtins/arm/aeabi_memset.S
@@ -18,7 +18,13 @@
mov r3, r1
mov r1, r2
mov r2, r3
+#ifdef USE_THUMB_1
+ push {r7, lr}
+ bl memset
+ pop {r7, pc}
+#else
b memset
+#endif
END_COMPILERRT_FUNCTION(__aeabi_memset)
DEFINE_AEABI_FUNCTION_ALIAS(__aeabi_memset4, __aeabi_memset)
@@ -28,7 +34,13 @@
DEFINE_COMPILERRT_FUNCTION(__aeabi_memclr)
mov r2, r1
movs r1, #0
+#ifdef USE_THUMB_1
+ push {r7, lr}
+ bl memset
+ pop {r7, pc}
+#else
b memset
+#endif
END_COMPILERRT_FUNCTION(__aeabi_memclr)
DEFINE_AEABI_FUNCTION_ALIAS(__aeabi_memclr4, __aeabi_memclr)
Index: lib/builtins/arm/aeabi_memmove.S
===================================================================
--- lib/builtins/arm/aeabi_memmove.S
+++ lib/builtins/arm/aeabi_memmove.S
@@ -13,7 +13,13 @@
.p2align 2
DEFINE_COMPILERRT_FUNCTION(__aeabi_memmove)
+#ifdef USE_THUMB_1
+ push {r7, lr}
+ bl memmove
+ pop {r7, pc}
+#else
b memmove
+#endif
END_COMPILERRT_FUNCTION(__aeabi_memmove)
DEFINE_AEABI_FUNCTION_ALIAS(__aeabi_memmove4, __aeabi_memmove)
Index: lib/builtins/arm/aeabi_memcpy.S
===================================================================
--- lib/builtins/arm/aeabi_memcpy.S
+++ lib/builtins/arm/aeabi_memcpy.S
@@ -14,7 +14,13 @@
.syntax unified
.p2align 2
DEFINE_COMPILERRT_FUNCTION(__aeabi_memcpy)
+#ifdef USE_THUMB_1
+ push {r7, lr}
+ bl memcpy
+ pop {r7, pc}
+#else
b memcpy
+#endif
END_COMPILERRT_FUNCTION(__aeabi_memcpy)
DEFINE_AEABI_FUNCTION_ALIAS(__aeabi_memcpy4, __aeabi_memcpy)
Index: lib/builtins/arm/aeabi_memcmp.S
===================================================================
--- lib/builtins/arm/aeabi_memcmp.S
+++ lib/builtins/arm/aeabi_memcmp.S
@@ -14,7 +14,13 @@
.syntax unified
.p2align 2
DEFINE_COMPILERRT_FUNCTION(__aeabi_memcmp)
+#ifdef USE_THUMB_1
+ push {r7, lr}
+ bl memcmp
+ pop {r7, pc}
+#else
b memcmp
+#endif
END_COMPILERRT_FUNCTION(__aeabi_memcmp)
DEFINE_AEABI_FUNCTION_ALIAS(__aeabi_memcmp4, __aeabi_memcmp)
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D39700.121792.patch
Type: text/x-patch
Size: 2428 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20171106/5d0da1e5/attachment.bin>
More information about the llvm-commits
mailing list