Add support for assembler directives that wrap inline asm


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26065 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/CodeGen/AsmPrinter.cpp b/lib/CodeGen/AsmPrinter.cpp
index 6fa6623..263b35c 100644
--- a/lib/CodeGen/AsmPrinter.cpp
+++ b/lib/CodeGen/AsmPrinter.cpp
@@ -32,6 +32,8 @@
   GlobalVarAddrSuffix(""),
   FunctionAddrPrefix(""),
   FunctionAddrSuffix(""),
+  InlineAsmStart("#APP\n"),
+  InlineAsmEnd("#NO_APP\n"),
   ZeroDirective("\t.zero\t"),
   AsciiDirective("\t.ascii\t"),
   AscizDirective("\t.asciz\t"),
@@ -482,6 +484,7 @@
 /// printInlineAsm - This method formats and prints the specified machine
 /// instruction that is an inline asm.
 void AsmPrinter::printInlineAsm(const MachineInstr *MI) const {
+  O << InlineAsmStart;
   unsigned NumOperands = MI->getNumOperands();
   
   // Count the number of register definitions.
@@ -613,7 +616,7 @@
       break;
     }
   }
-  O << "\n";
+  O << "\n" << InlineAsmEnd;
 }
 
 /// PrintAsmOperand - Print the specified operand of MI, an INLINEASM