[Compiler-rt][AArch64] Workaround for .cfi_startproc assembler parser bug.
authorRaul Tambre <raul@tambre.ee>
Tue, 15 Dec 2020 06:12:44 +0000 (08:12 +0200)
committerRaul Tambre <raul@tambre.ee>
Tue, 15 Dec 2020 06:14:42 +0000 (08:14 +0200)
Put .cfi_startproc on a new line to avoid hitting the assembly parser bug in MasmParser::parseDirectiveCFIStartProc().

Reviewed By: tambre

Differential Revision: https://reviews.llvm.org/D93236

compiler-rt/lib/builtins/aarch64/lse.S
compiler-rt/lib/builtins/assembly.h

index 770f098..e1c801c 100644 (file)
@@ -113,7 +113,8 @@ HIDDEN(__aarch64_have_lse_atomics)
 .endm
 
 #ifdef L_cas
-DEFINE_COMPILERRT_OUTLINE_FUNCTION_UNMANGLED(NAME(cas))
+DEFINE_COMPILERRT_OUTLINE_FUNCTION_UNMANGLED_START(NAME(cas))
+DEFINE_COMPILERRT_OUTLINE_FUNCTION_UNMANGLED_END(NAME(cas))
         JUMP_IF_NOT_LSE 8f
 #if SIZE < 16
 #ifdef HAS_ASM_LSE
@@ -166,7 +167,8 @@ END_COMPILERRT_OUTLINE_FUNCTION(NAME(cas))
 #else
 #define SWP .inst 0x38208020 + B + N
 #endif
-DEFINE_COMPILERRT_OUTLINE_FUNCTION_UNMANGLED(NAME(swp))
+DEFINE_COMPILERRT_OUTLINE_FUNCTION_UNMANGLED_START(NAME(swp))
+DEFINE_COMPILERRT_OUTLINE_FUNCTION_UNMANGLED_END(NAME(swp))
         JUMP_IF_NOT_LSE 8f
         SWP    // s(0), s(0), [x1]
         ret
@@ -209,7 +211,8 @@ END_COMPILERRT_OUTLINE_FUNCTION(NAME(swp))
 #define LDOP .inst 0x38200020 + OPN + B + N
 #endif
 
-DEFINE_COMPILERRT_OUTLINE_FUNCTION_UNMANGLED(NAME(LDNM))
+DEFINE_COMPILERRT_OUTLINE_FUNCTION_UNMANGLED_START(NAME(LDNM))
+DEFINE_COMPILERRT_OUTLINE_FUNCTION_UNMANGLED_END(NAME(LDNM))
         JUMP_IF_NOT_LSE 8f
         LDOP // s(0), s(0), [x1]
         ret
index 66625a9..3b00a5d 100644 (file)
   DECLARE_FUNC_ENCODING                                                        \
   name:
 
-#define DEFINE_COMPILERRT_OUTLINE_FUNCTION_UNMANGLED(name)                     \
+// TODO(ilinpv) START & END parts will be merged when assembly parser bug
+// (kristina) in MasmParser::parseDirectiveCFIStartProc() is fixed.
+#define DEFINE_COMPILERRT_OUTLINE_FUNCTION_UNMANGLED_START(name)               \
   DEFINE_CODE_STATE                                                            \
   FUNC_ALIGN                                                                   \
   .globl name SEPARATOR                                                        \
   SYMBOL_IS_FUNC(name) SEPARATOR                                               \
-  DECLARE_SYMBOL_VISIBILITY(name) SEPARATOR                                    \
+  DECLARE_SYMBOL_VISIBILITY(name)
+
+#define DEFINE_COMPILERRT_OUTLINE_FUNCTION_UNMANGLED_END(name)                 \
   CFI_START SEPARATOR                                                          \
   DECLARE_FUNC_ENCODING                                                        \
   name: SEPARATOR BTI_C