[llvm-commits] [llvm] r163550 - in /llvm/trunk: lib/CodeGen/AsmPrinter/AsmPrinterInlineAsm.cpp test/CodeGen/X86/ms-inline-asm.ll

Chad Rosier mcrosier at apple.com
Mon Sep 10 14:36:05 PDT 2012


Author: mcrosier
Date: Mon Sep 10 16:36:05 2012
New Revision: 163550

URL: http://llvm.org/viewvc/llvm-project?rev=163550&view=rev
Log:
[ms-inline asm] Properly emit the asm directives when the AsmPrinterVariant
and InlineAsmVariant don't match.


Modified:
    llvm/trunk/lib/CodeGen/AsmPrinter/AsmPrinterInlineAsm.cpp
    llvm/trunk/test/CodeGen/X86/ms-inline-asm.ll

Modified: llvm/trunk/lib/CodeGen/AsmPrinter/AsmPrinterInlineAsm.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AsmPrinter/AsmPrinterInlineAsm.cpp?rev=163550&r1=163549&r2=163550&view=diff
==============================================================================
--- llvm/trunk/lib/CodeGen/AsmPrinter/AsmPrinterInlineAsm.cpp (original)
+++ llvm/trunk/lib/CodeGen/AsmPrinter/AsmPrinterInlineAsm.cpp Mon Sep 10 16:36:05 2012
@@ -200,7 +200,15 @@
   // The variant of the current asmprinter.
   int AsmPrinterVariant = MAI->getAssemblerDialect();
   int InlineAsmVariant = MI->getInlineAsmDialect();
-  
+
+  // Switch to the inline assembly variant.
+  if (AsmPrinterVariant != InlineAsmVariant) {
+    if (InlineAsmVariant == 0)
+      OS << ".att_syntax\n\t";
+    else
+      OS << ".intel_syntax\n\t";
+  }
+
   int CurVariant = -1;            // The number of the {.|.|.} region we are in.
   const char *LastEmitted = AsmStr; // One past the last character emitted.
 
@@ -365,6 +373,14 @@
     }
     }
   }
+  // Switch to the AsmPrinter variant.
+  if (AsmPrinterVariant != InlineAsmVariant) {
+    if (AsmPrinterVariant == 0)
+      OS << "\n\t.att_syntax";
+    else
+      OS << "\n\t.intel_syntax";
+  }
+
   OS << '\n' << (char)0;  // null terminate string.
   EmitInlineAsm(OS.str(), LocMD, MI->getInlineAsmDialect());
 

Modified: llvm/trunk/test/CodeGen/X86/ms-inline-asm.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/ms-inline-asm.ll?rev=163550&r1=163549&r2=163550&view=diff
==============================================================================
--- llvm/trunk/test/CodeGen/X86/ms-inline-asm.ll (original)
+++ llvm/trunk/test/CodeGen/X86/ms-inline-asm.ll Mon Sep 10 16:36:05 2012
@@ -6,9 +6,9 @@
   ret i32 %0
 ; CHECK: t1
 ; CHECK: ## InlineAsm Start
-; FIXME: .intel_syntax
+; CHECK: .intel_syntax
 ; CHECK: mov eax, ecx
 ; CHECK: mov ecx, eax
-; FIXME: .att_syntax
+; CHECK: .att_syntax
 ; CHECK: ## InlineAsm End
 }





More information about the llvm-commits mailing list