[PATCH] [compiler-rt: Builtins] Fix the incompatible assembly in ARM builtins library.

Sumanth Gundapaneni sgundapa at codeaurora.org
Mon Jul 21 21:32:02 PDT 2014


I split the earlier patch in to two

http://reviews.llvm.org/D4610

Files:
  lib/builtins/arm/sync-ops.h

Index: lib/builtins/arm/sync-ops.h
===================================================================
--- lib/builtins/arm/sync-ops.h
+++ lib/builtins/arm/sync-ops.h
@@ -18,29 +18,33 @@
 #define SYNC_OP_4(op) \
         .p2align 2 ; \
         .thumb ; \
+        .syntax unified ; \
         DEFINE_COMPILERRT_FUNCTION(__sync_fetch_and_ ## op) \
         dmb ; \
         mov r12, r0 ; \
         LOCAL_LABEL(tryatomic_ ## op): \
         ldrex r0, [r12] ; \
         op(r2, r0, r1) ; \
         strex r3, r2, [r12] ; \
-        cbnz r3, LOCAL_LABEL(tryatomic_ ## op) ; \
+        cmp r3, #0 ; \
+        bne LOCAL_LABEL(tryatomic_ ## op) ; \
         dmb ; \
         bx lr
 
 #define SYNC_OP_8(op) \
         .p2align 2 ; \
         .thumb ; \
+        .syntax unified ; \
         DEFINE_COMPILERRT_FUNCTION(__sync_fetch_and_ ## op) \
         push {r4, r5, r6, lr} ; \
         dmb ; \
         mov r12, r0 ; \
         LOCAL_LABEL(tryatomic_ ## op): \
         ldrexd r0, r1, [r12] ; \
         op(r4, r5, r0, r1, r2, r3) ; \
         strexd r6, r4, r5, [r12] ; \
-        cbnz r6, LOCAL_LABEL(tryatomic_ ## op) ; \
+        cmp r6, #0 ; \
+        bne LOCAL_LABEL(tryatomic_ ## op) ; \
         dmb ; \
         pop {r4, r5, r6, pc}
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D4610.11737.patch
Type: text/x-patch
Size: 1243 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20140722/cf2d159f/attachment.bin>


More information about the llvm-commits mailing list