forked from OSchip/llvm-project
[ARM] In thumb mode, emit directive ".code 16" before file level inline
assembly instructions. This is necessary to ensure ARM assembler switches to Thumb mode before it starts assembling the file level inline assembly instructions at the beginning of a .s file. <rdar://problem/17757232> llvm-svn: 213924
This commit is contained in:
parent
98c3c0f38a
commit
16e47ff42e
|
@ -478,6 +478,9 @@ void ARMAsmPrinter::EmitStartOfAsmFile(Module &M) {
|
|||
// Emit ARM Build Attributes
|
||||
if (Subtarget->isTargetELF())
|
||||
emitAttributes();
|
||||
|
||||
if (!M.getModuleInlineAsm().empty() && Subtarget->isThumb())
|
||||
OutStreamer.EmitAssemblerFlag(MCAF_Code16);
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
|
@ -0,0 +1,13 @@
|
|||
; RUN: llc -march thumb -no-integrated-as %s -o - | FileCheck %s --check-prefix=THUMB
|
||||
; RUN: llc -march arm -no-integrated-as %s -o - | FileCheck %s --check-prefix=ARM
|
||||
|
||||
; In thumb mode, emit ".code 16" before global inline-asm instructions.
|
||||
|
||||
; THUMB: .code 16
|
||||
; THUMB: stmib
|
||||
; THUMB: .code 16
|
||||
|
||||
; ARM-NOT: .code 16
|
||||
; ARM: stmib
|
||||
|
||||
module asm "stmib sp, {r0-r14};"
|
Loading…
Reference in New Issue