diff options
-rw-r--r-- | include/llvm/MC/MCDirectives.h | 1 | ||||
-rw-r--r-- | lib/MC/MCAsmStreamer.cpp | 1 | ||||
-rw-r--r-- | lib/MC/MCELFStreamer.cpp | 1 | ||||
-rw-r--r-- | lib/Target/ARM/ARMAsmPrinter.cpp | 2 | ||||
-rw-r--r-- | test/CodeGen/ARM/2010-09-29-mc-asm-header-test.ll | 13 |
5 files changed, 17 insertions, 1 deletions
diff --git a/include/llvm/MC/MCDirectives.h b/include/llvm/MC/MCDirectives.h index 223b09e..0394a53 100644 --- a/include/llvm/MC/MCDirectives.h +++ b/include/llvm/MC/MCDirectives.h @@ -43,6 +43,7 @@ enum MCSymbolAttr { }; enum MCAssemblerFlag { + MCAF_SyntaxUnified, ///< .syntax (ARM/ELF) MCAF_SubsectionsViaSymbols ///< .subsections_via_symbols (MachO) }; diff --git a/lib/MC/MCAsmStreamer.cpp b/lib/MC/MCAsmStreamer.cpp index 1402f8e..6c240cf 100644 --- a/lib/MC/MCAsmStreamer.cpp +++ b/lib/MC/MCAsmStreamer.cpp @@ -244,6 +244,7 @@ void MCAsmStreamer::EmitLabel(MCSymbol *Symbol) { void MCAsmStreamer::EmitAssemblerFlag(MCAssemblerFlag Flag) { switch (Flag) { default: assert(0 && "Invalid flag!"); + case MCAF_SyntaxUnified: OS << "\t.syntax unified"; break; case MCAF_SubsectionsViaSymbols: OS << ".subsections_via_symbols"; break; } EmitEOL(); diff --git a/lib/MC/MCELFStreamer.cpp b/lib/MC/MCELFStreamer.cpp index 465f9ce..ecc72c2 100644 --- a/lib/MC/MCELFStreamer.cpp +++ b/lib/MC/MCELFStreamer.cpp @@ -197,6 +197,7 @@ void MCELFStreamer::EmitLabel(MCSymbol *Symbol) { void MCELFStreamer::EmitAssemblerFlag(MCAssemblerFlag Flag) { switch (Flag) { + case MCAF_SyntaxUnified: return; // no-op here? case MCAF_SubsectionsViaSymbols: getAssembler().setSubsectionsViaSymbols(true); return; diff --git a/lib/Target/ARM/ARMAsmPrinter.cpp b/lib/Target/ARM/ARMAsmPrinter.cpp index cb5bb98..b8469a1 100644 --- a/lib/Target/ARM/ARMAsmPrinter.cpp +++ b/lib/Target/ARM/ARMAsmPrinter.cpp @@ -416,7 +416,7 @@ void ARMAsmPrinter::EmitStartOfAsmFile(Module &M) { } // Use unified assembler syntax. - OutStreamer.EmitRawText(StringRef("\t.syntax unified")); + OutStreamer.EmitAssemblerFlag(MCAF_SyntaxUnified); // Emit ARM Build Attributes if (Subtarget->isTargetELF()) { diff --git a/test/CodeGen/ARM/2010-09-29-mc-asm-header-test.ll b/test/CodeGen/ARM/2010-09-29-mc-asm-header-test.ll new file mode 100644 index 0000000..561588d --- /dev/null +++ b/test/CodeGen/ARM/2010-09-29-mc-asm-header-test.ll @@ -0,0 +1,13 @@ +; RUN: llc < %s -mtriple=arm-linux-gnueabi | FileCheck %s +; This tests that MC/asm header conversion is smooth +; +; CHECK: .syntax unified +; CHECK-NEXT: .eabi_attribute 20, 1 +; CHECK-NEXT: .eabi_attribute 21, 1 +; CHECK-NEXT: .eabi_attribute 23, 3 +; CHECK-NEXT: .eabi_attribute 24, 1 +; CHECK-NEXT: .eabi_attribute 25, 1 + +define i32 @f(i64 %z) { + ret i32 0 +} |