[cfe-dev] compiler-rt non-neon builds are still broken

İsmail Dönmez ismail at donmez.ws
Sun Dec 14 10:46:45 PST 2014


On Sun, Dec 14, 2014 at 8:29 PM, Renato Golin <renato.golin at linaro.org> wrote:
> On 14 December 2014 at 18:18, İsmail Dönmez <ismail at donmez.ws> wrote:
>> This might be true but gcc compiles this fine so at least there might
>> be an ASM parser bug.
>
> It's not, that change was intentional... ARM is deprecating
> co-processor handling where VFP/NEON instructions should be used.
>
> That's why we need the ifdef. We just need to get that right...

Something like this ?

Index: src/Unwind/UnwindRegistersRestore.S
===================================================================
--- src/Unwind/UnwindRegistersRestore.S (revision 224213)
+++ src/Unwind/UnwindRegistersRestore.S (working copy)
@@ -389,8 +389,8 @@
 @
   .p2align 2
 DEFINE_LIBUNWIND_PRIVATE_FUNCTION(_ZN9libunwind13Registers_arm12restoreVFPv3EPy)
-#if defined(__ARM_FP)
-#ifndef __ARM_NEON
+#if defined(__ARM_NEON)
+#if __ARM_ARCH < 7
   ldcl p11, cr0, [r0], {0x20}  @ vldm r0, {d16-d31}
 #else
   vldmia r0, {d16-d31}
Index: src/Unwind/UnwindRegistersSave.S
===================================================================
--- src/Unwind/UnwindRegistersSave.S    (revision 224213)
+++ src/Unwind/UnwindRegistersSave.S    (working copy)
@@ -361,7 +361,7 @@
 @
   .p2align 2
 DEFINE_LIBUNWIND_PRIVATE_FUNCTION(_ZN9libunwind13Registers_arm9saveVFPv3EPy)
-#if defined(__ARM_FP)
+#if defined(__ARM_NEON)
   @ VFP and iwMMX instructions are only available when compiling with the flags
   @ that enable them. We do not want to do that in the library
(because we do not
   @ want the compiler to generate instructions that access those) but this is
@@ -369,7 +369,7 @@
   @ these registers implies they are, actually, available on the target, so
   @ it's ok to execute.
   @ So, generate the instructions using the corresponding coprocessor mnemonic.
-#ifndef __ARM_NEON
+#if __ARM_ARCH < 7
   stcl p11, cr0, [r0], {0x20}  @ vstm r0, {d16-d31}
 #else
   vstmia r0, {d16-d31}




More information about the cfe-dev mailing list