Add support for assembler directives that wrap inline asm

llvm-svn: 26065
This commit is contained in:
Chris Lattner 2006-02-08 23:41:56 +00:00
parent 26e385a623
commit ed87dcd45f
2 changed files with 9 additions and 1 deletions

View File

@ -86,6 +86,11 @@ namespace llvm {
const char *FunctionAddrPrefix; // Defaults to ""
const char *FunctionAddrSuffix; // Defaults to ""
/// InlineAsmStart/End - If these are nonempty, they contain a directive to
/// emit before and after an inline assmebly statement.
const char *InlineAsmStart; // Defaults to "#APP\n"
const char *InlineAsmEnd; // Defaults to "#NO_APP\n"
//===--- Data Emission Directives -------------------------------------===//
/// ZeroDirective - this should be set to the directive used to get some

View File

@ -32,6 +32,8 @@ AsmPrinter::AsmPrinter(std::ostream &o, TargetMachine &tm)
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 @@ void AsmPrinter::EmitGlobalConstant(const Constant *CV) {
/// 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 @@ void AsmPrinter::printInlineAsm(const MachineInstr *MI) const {
break;
}
}
O << "\n";
O << "\n" << InlineAsmEnd;
}
/// PrintAsmOperand - Print the specified operand of MI, an INLINEASM