diff --git a/llvm/lib/MC/MCELFStreamer.cpp b/llvm/lib/MC/MCELFStreamer.cpp index 3be71ce9b61ecf7a36015e467cb50f8ceb3e7973..e806cb9f1c94de9e6fb1541cce6551135843da0e 100644 --- a/llvm/lib/MC/MCELFStreamer.cpp +++ b/llvm/lib/MC/MCELFStreamer.cpp @@ -15,6 +15,7 @@ #include "llvm/ADT/SmallPtrSet.h" #include "llvm/ADT/STLExtras.h" #include "llvm/MC/MCAssembler.h" +#include "llvm/MC/MCAsmBackend.h" #include "llvm/MC/MCCodeEmitter.h" #include "llvm/MC/MCContext.h" #include "llvm/MC/MCELF.h" @@ -96,6 +97,9 @@ void MCELFStreamer::EmitDebugLabel(MCSymbol *Symbol) { } void MCELFStreamer::EmitAssemblerFlag(MCAssemblerFlag Flag) { + // Let the target do whatever target specific stuff it needs to do. + getAssembler().getBackend().handleAssemblerFlag(Flag); + // Do any generic stuff we need to do. switch (Flag) { case MCAF_SyntaxUnified: return; // no-op here. case MCAF_Code16: return; // Change parsing mode; no-op here. diff --git a/llvm/test/MC/ARM/align_arm_2_thumb.s b/llvm/test/MC/ARM/align_arm_2_thumb.s new file mode 100644 index 0000000000000000000000000000000000000000..120e96480b5cb8956f64691753f29012224bb641 --- /dev/null +++ b/llvm/test/MC/ARM/align_arm_2_thumb.s @@ -0,0 +1,15 @@ +@ RUN: llvm-mc -triple armv7-none-linux -filetype=obj -o %t.o %s +@ RUN: llvm-objdump -triple thumbv7-none-linux -d %t.o | FileCheck --check-prefix=ARM_2_THUMB %s + +@ RUN: llvm-mc -triple armv7-apple-darwin -filetype=obj -o %t_darwin.o %s +@ RUN: llvm-objdump -triple thumbv7-apple-darwin -d %t_darwin.o | FileCheck --check-prefix=ARM_2_THUMB %s + +.syntax unified +.code 16 +@ ARM_2_THUMB-LABEL: foo +foo: + add r0, r0 +.align 3 +@ ARM_2_THUMB: 2: 00 bf nop + add r0, r0 + diff --git a/llvm/test/MC/ARM/align_thumb_2_arm.s b/llvm/test/MC/ARM/align_thumb_2_arm.s new file mode 100644 index 0000000000000000000000000000000000000000..328bfabce65c35392dd3f8fd44b2f1a5288ef6a5 --- /dev/null +++ b/llvm/test/MC/ARM/align_thumb_2_arm.s @@ -0,0 +1,15 @@ +@ RUN: llvm-mc -triple thumbv7-none-linux -filetype=obj -o %t.o %s +@ RUN: llvm-objdump -triple armv7-none-linux -d %t.o | FileCheck --check-prefix=THUMB_2_ARM %s + +@ RUN: llvm-mc -triple thumbv7-apple-darwin -filetype=obj -o %t_darwin.o %s +@ RUN: llvm-objdump -triple armv7-apple-darwin -d %t_darwin.o | FileCheck --check-prefix=THUMB_2_ARM %s + +.syntax unified +.code 32 +@ THUMB_2_ARM-LABEL: foo +foo: + add r0, r0 +.align 3 +@ THUMB_2_ARM: 4: 00 f0 20 e3 nop + add r0, r0 +