diff options
author | Brian Gaeke <gaeke@uiuc.edu> | 2003-06-19 19:32:32 +0000 |
---|---|---|
committer | Brian Gaeke <gaeke@uiuc.edu> | 2003-06-19 19:32:32 +0000 |
commit | 9e474c4ec87de79df4a62927275b5b607457e37f (patch) | |
tree | a3bee8c3cf2eb37e1e016c71a966cf11a800d0fb /lib/Target/X86/Printer.cpp | |
parent | ed4775a3c149900fb8e04bc9baf9d683cbecc28b (diff) |
Add Initialization and Finalization methods for the Printer pass,
to print various things on a module-by-module basis (currently, only the
former is used).
Don't print < > around names. The assembler can't take it.
Print pseudoinstructions only as comments. The poor little assembler can't
take that, either.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6789 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/X86/Printer.cpp')
-rw-r--r-- | lib/Target/X86/Printer.cpp | 29 |
1 files changed, 26 insertions, 3 deletions
diff --git a/lib/Target/X86/Printer.cpp b/lib/Target/X86/Printer.cpp index 4a739d740e..0a5a33ca19 100644 --- a/lib/Target/X86/Printer.cpp +++ b/lib/Target/X86/Printer.cpp @@ -27,6 +27,10 @@ namespace { void printConstantPool(MachineConstantPool *MCP, const TargetData &TD); bool runOnMachineFunction(MachineFunction &F); + + bool doInitialization(Module &M); + bool doFinalization(Module &M); + }; } @@ -123,13 +127,13 @@ static void printOp(std::ostream &O, const MachineOperand &MO, O << (int)MO.getImmedValue(); return; case MachineOperand::MO_PCRelativeDisp: - O << "<" << MO.getVRegValue()->getName() << ">"; + O << MO.getVRegValue()->getName(); return; case MachineOperand::MO_GlobalAddress: - O << "<" << MO.getGlobal()->getName() << ">"; + O << MO.getGlobal()->getName(); return; case MachineOperand::MO_ExternalSymbol: - O << "<" << MO.getSymbolName() << ">"; + O << MO.getSymbolName(); return; default: O << "<unknown op ty>"; return; @@ -208,6 +212,10 @@ void X86InstrInfo::print(const MachineInstr *MI, std::ostream &O, switch (Desc.TSFlags & X86II::FormMask) { case X86II::Pseudo: + // Print pseudo-instructions as comments; either they should have been + // turned into real instructions by now, or they don't need to be + // seen by the assembler (e.g., IMPLICIT_USEs.) + O << "# "; if (Opcode == X86::PHI) { printOp(O, MI->getOperand(0), RI); O << " = phi "; @@ -457,3 +465,18 @@ void X86InstrInfo::print(const MachineInstr *MI, std::ostream &O, O << "\tUNKNOWN FORM:\t\t-"; MI->print(O, TM); break; } } + +bool Printer::doInitialization(Module &M) +{ + // Tell gas we are outputting Intel syntax (not AT&T syntax) assembly, + // with no % decorations on register names. + O << "\t.intel_syntax noprefix\n"; + return false; // success +} + +bool Printer::doFinalization(Module &M) +{ + // FIXME: We may have to print out constants here. + return false; // success +} + |