From afd1cc25786f68ca56a63d29ea2bd297990e9f81 Mon Sep 17 00:00:00 2001 From: Jason W Kim Date: Thu, 30 Sep 2010 02:45:56 +0000 Subject: [PATCH] Tiny patch for proof-of-concept cleanup of ARMAsmPrinter::EmitStartOfAsmFile() Small test for sanity check of resulting ARM .s file. Tested against -r115129. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115133 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm/MC/MCDirectives.h | 1 + lib/MC/MCAsmStreamer.cpp | 1 + lib/MC/MCELFStreamer.cpp | 1 + lib/Target/ARM/ARMAsmPrinter.cpp | 2 +- test/CodeGen/ARM/2010-09-29-mc-asm-header-test.ll | 13 +++++++++++++ 5 files changed, 17 insertions(+), 1 deletion(-) create mode 100644 test/CodeGen/ARM/2010-09-29-mc-asm-header-test.ll diff --git a/include/llvm/MC/MCDirectives.h b/include/llvm/MC/MCDirectives.h index 223b09ef7ae..0394a53cacc 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 1402f8eb180..6c240cf4148 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 465f9ce79cb..ecc72c26b70 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 cb5bb98cc63..b8469a15be7 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 00000000000..561588d9494 --- /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 +}