forked from OSchip/llvm-project
Add support for assembler directives that wrap inline asm
llvm-svn: 26065
This commit is contained in:
parent
26e385a623
commit
ed87dcd45f
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue