Tiny patch for proof-of-concept cleanup of ARMAsmPrinter::EmitStartOfAsmFile()
authorJason W Kim <jason.w.kim.2009@gmail.com>
Thu, 30 Sep 2010 02:45:56 +0000 (02:45 +0000)
committerJason W Kim <jason.w.kim.2009@gmail.com>
Thu, 30 Sep 2010 02:45:56 +0000 (02:45 +0000)
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
lib/MC/MCAsmStreamer.cpp
lib/MC/MCELFStreamer.cpp
lib/Target/ARM/ARMAsmPrinter.cpp
test/CodeGen/ARM/2010-09-29-mc-asm-header-test.ll [new file with mode: 0644]

index 223b09ef7aee2eddb82063f204603d3c6f47f524..0394a53cacc13c44f20ebfc079c8d13bf9d0f254 100644 (file)
@@ -43,6 +43,7 @@ enum MCSymbolAttr {
 };
 
 enum MCAssemblerFlag {
+  MCAF_SyntaxUnified,         ///< .syntax (ARM/ELF)
   MCAF_SubsectionsViaSymbols  ///< .subsections_via_symbols (MachO)
 };
   
index 1402f8eb180b1763462d6668c14f4414ccb2f0b1..6c240cf4148a77bf1bc5d1713104f62c89429938 100644 (file)
@@ -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();
index 465f9ce79cbd2815d7e3aa9662145e0758b99020..ecc72c26b701e7896056a11fd0a2a47f3a923689 100644 (file)
@@ -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;
index cb5bb98cc63b9871f50fd31bd28b7921266ea27a..b8469a15be7f1fb9c72f046f4021e90865c8c6aa 100644 (file)
@@ -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 (file)
index 0000000..561588d
--- /dev/null
@@ -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
+}