diff options
author | Chris Lattner <sabre@nondot.org> | 2009-09-03 05:46:51 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2009-09-03 05:46:51 +0000 |
commit | 684c593d05db0bd277268fc9d8c05bce138c745a (patch) | |
tree | bd14333e8ed905f9665b6df0ed1165d19b77acf8 | |
parent | 5c5ce5cef4a9f09f5b25e08df1e0dd6c79908c0f (diff) | |
download | external_llvm-684c593d05db0bd277268fc9d8c05bce138c745a.zip external_llvm-684c593d05db0bd277268fc9d8c05bce138c745a.tar.gz external_llvm-684c593d05db0bd277268fc9d8c05bce138c745a.tar.bz2 |
Thread an MCAsmInfo pointer through the various MC printing APIs,
and fix a few things using << on MCSymbols to use ->print(). No
functionality change other than unbreaking my previous patch.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80890 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | include/llvm/MC/MCExpr.h | 3 | ||||
-rw-r--r-- | include/llvm/MC/MCInst.h | 5 | ||||
-rw-r--r-- | include/llvm/MC/MCSymbol.h | 3 | ||||
-rw-r--r-- | include/llvm/MC/MCValue.h | 2 | ||||
-rw-r--r-- | lib/MC/MCAsmStreamer.cpp | 31 | ||||
-rw-r--r-- | lib/MC/MCExpr.cpp | 12 | ||||
-rw-r--r-- | lib/MC/MCInst.cpp | 12 | ||||
-rw-r--r-- | lib/MC/MCSymbol.cpp | 4 | ||||
-rw-r--r-- | lib/MC/MCValue.cpp | 8 | ||||
-rw-r--r-- | lib/Target/X86/AsmPrinter/X86ATTInstPrinter.cpp | 6 |
10 files changed, 49 insertions, 37 deletions
diff --git a/include/llvm/MC/MCExpr.h b/include/llvm/MC/MCExpr.h index 9f9f267..859cab5 100644 --- a/include/llvm/MC/MCExpr.h +++ b/include/llvm/MC/MCExpr.h @@ -14,6 +14,7 @@ #include "llvm/Support/DataTypes.h" namespace llvm { +class MCAsmInfo; class MCContext; class MCSymbol; class MCValue; @@ -49,7 +50,7 @@ public: /// @name Utility Methods /// @{ - void print(raw_ostream &OS) const; + void print(raw_ostream &OS, const MCAsmInfo *MAI) const; void dump() const; /// @} diff --git a/include/llvm/MC/MCInst.h b/include/llvm/MC/MCInst.h index 7c1cb13..a6bd45b 100644 --- a/include/llvm/MC/MCInst.h +++ b/include/llvm/MC/MCInst.h @@ -22,6 +22,7 @@ namespace llvm { class raw_ostream; +class MCAsmInfo; class MCExpr; /// MCOperand - Instances of this class represent operands of the MCInst class. @@ -121,7 +122,7 @@ public: return Op; } - void print(raw_ostream &OS) const; + void print(raw_ostream &OS, const MCAsmInfo *MAI) const; void dump() const; }; @@ -147,7 +148,7 @@ public: Operands.push_back(Op); } - void print(raw_ostream &OS) const; + void print(raw_ostream &OS, const MCAsmInfo *MAI) const; void dump() const; }; diff --git a/include/llvm/MC/MCSymbol.h b/include/llvm/MC/MCSymbol.h index 631fa12..5dd7d68 100644 --- a/include/llvm/MC/MCSymbol.h +++ b/include/llvm/MC/MCSymbol.h @@ -19,6 +19,7 @@ #include "llvm/Support/DataTypes.h" namespace llvm { + class MCAsmInfo; class MCSection; class MCContext; class raw_ostream; @@ -106,7 +107,7 @@ namespace llvm { /// @} /// print - Print the value to the stream \arg OS. - void print(raw_ostream &OS) const; + void print(raw_ostream &OS, const MCAsmInfo *MAI) const; /// dump - Print the value to stderr. void dump() const; diff --git a/include/llvm/MC/MCValue.h b/include/llvm/MC/MCValue.h index 9d71209..62aca6e 100644 --- a/include/llvm/MC/MCValue.h +++ b/include/llvm/MC/MCValue.h @@ -55,7 +55,7 @@ public: const MCSection *getAssociatedSection() const; /// print - Print the value to the stream \arg OS. - void print(raw_ostream &OS) const; + void print(raw_ostream &OS, const MCAsmInfo *MAI) const; /// dump - Print the value to stderr. void dump() const; diff --git a/lib/MC/MCAsmStreamer.cpp b/lib/MC/MCAsmStreamer.cpp index cc77c6f8..17c591b 100644 --- a/lib/MC/MCAsmStreamer.cpp +++ b/lib/MC/MCAsmStreamer.cpp @@ -101,7 +101,8 @@ void MCAsmStreamer::EmitLabel(MCSymbol *Symbol) { assert(Symbol->isUndefined() && "Cannot define a symbol twice!"); assert(CurSection && "Cannot emit before setting section!"); - OS << Symbol << ":\n"; + Symbol->print(OS, &MAI); + OS << ":\n"; Symbol->setSection(*CurSection); } @@ -118,8 +119,9 @@ void MCAsmStreamer::EmitAssignment(MCSymbol *Symbol, const MCExpr *Value) { assert((Symbol->isUndefined() || Symbol->isAbsolute()) && "Cannot define a symbol twice!"); - OS << Symbol << " = "; - Value->print(OS); + Symbol->print(OS, &MAI); + OS << " = "; + Value->print(OS, &MAI); OS << '\n'; } @@ -140,17 +142,22 @@ void MCAsmStreamer::EmitSymbolAttribute(MCSymbol *Symbol, case WeakReference: OS << ".weak_reference"; break; } - OS << ' ' << Symbol << '\n'; + OS << ' '; + Symbol->print(OS, &MAI); + OS << '\n'; } void MCAsmStreamer::EmitSymbolDesc(MCSymbol *Symbol, unsigned DescValue) { - OS << ".desc" << ' ' << Symbol << ',' << DescValue << '\n'; + OS << ".desc" << ' '; + Symbol->print(OS, &MAI); + OS << ',' << DescValue << '\n'; } void MCAsmStreamer::EmitCommonSymbol(MCSymbol *Symbol, unsigned Size, unsigned ByteAlignment) { - OS << ".comm"; - OS << ' ' << Symbol << ',' << Size; + OS << ".comm "; + Symbol->print(OS, &MAI); + OS << ',' << Size; if (ByteAlignment != 0) OS << ',' << Log2_32(ByteAlignment); OS << '\n'; @@ -166,7 +173,9 @@ void MCAsmStreamer::EmitZerofill(const MCSection *Section, MCSymbol *Symbol, OS << MOSection->getSegmentName() << "," << MOSection->getSectionName(); if (Symbol != NULL) { - OS << ',' << Symbol << ',' << Size; + OS << ','; + Symbol->print(OS, &MAI); + OS << ',' << Size; if (ByteAlignment != 0) OS << ',' << Log2_32(ByteAlignment); } @@ -192,7 +201,7 @@ void MCAsmStreamer::EmitValue(const MCExpr *Value, unsigned Size) { } OS << ' '; - truncateToSize(Value, Size)->print(OS); + truncateToSize(Value, Size)->print(OS, &MAI); OS << '\n'; } @@ -248,7 +257,7 @@ void MCAsmStreamer::EmitValueToOffset(const MCExpr *Offset, unsigned char Value) { // FIXME: Verify that Offset is associated with the current section. OS << ".org "; - Offset->print(OS); + Offset->print(OS, &MAI); OS << ", " << (unsigned) Value << '\n'; } @@ -281,7 +290,7 @@ void MCAsmStreamer::EmitInstruction(const MCInst &Inst) { // Otherwise fall back to a structural printing for now. Eventually we should // always have access to the target specific printer. - Inst.print(OS); + Inst.print(OS, &MAI); OS << '\n'; } diff --git a/lib/MC/MCExpr.cpp b/lib/MC/MCExpr.cpp index bc42415..9a1b641 100644 --- a/lib/MC/MCExpr.cpp +++ b/lib/MC/MCExpr.cpp @@ -14,14 +14,14 @@ #include "llvm/Support/raw_ostream.h" using namespace llvm; -void MCExpr::print(raw_ostream &OS) const { +void MCExpr::print(raw_ostream &OS, const MCAsmInfo *MAI) const { switch (getKind()) { case MCExpr::Constant: OS << cast<MCConstantExpr>(*this).getValue(); return; case MCExpr::SymbolRef: - cast<MCSymbolRefExpr>(*this).getSymbol().print(OS); + cast<MCSymbolRefExpr>(*this).getSymbol().print(OS, MAI); return; case MCExpr::Unary: { @@ -33,14 +33,14 @@ void MCExpr::print(raw_ostream &OS) const { case MCUnaryExpr::Not: OS << '~'; break; case MCUnaryExpr::Plus: OS << '+'; break; } - UE.getSubExpr()->print(OS); + UE.getSubExpr()->print(OS, MAI); return; } case MCExpr::Binary: { const MCBinaryExpr &BE = cast<MCBinaryExpr>(*this); OS << '('; - BE.getLHS()->print(OS); + BE.getLHS()->print(OS, MAI); OS << ' '; switch (BE.getOpcode()) { default: assert(0 && "Invalid opcode!"); @@ -64,7 +64,7 @@ void MCExpr::print(raw_ostream &OS) const { case MCBinaryExpr::Xor: OS << '^'; break; } OS << ' '; - BE.getRHS()->print(OS); + BE.getRHS()->print(OS, MAI); OS << ')'; return; } @@ -74,7 +74,7 @@ void MCExpr::print(raw_ostream &OS) const { } void MCExpr::dump() const { - print(errs()); + print(errs(), 0); errs() << '\n'; } diff --git a/lib/MC/MCInst.cpp b/lib/MC/MCInst.cpp index ec06146..f19056b 100644 --- a/lib/MC/MCInst.cpp +++ b/lib/MC/MCInst.cpp @@ -13,7 +13,7 @@ using namespace llvm; -void MCOperand::print(raw_ostream &OS) const { +void MCOperand::print(raw_ostream &OS, const MCAsmInfo *MAI) const { OS << "<MCOperand "; if (!isValid()) OS << "INVALID"; @@ -26,7 +26,7 @@ void MCOperand::print(raw_ostream &OS) const { << getMBBLabelBlock() << ")"; else if (isExpr()) { OS << "Expr:("; - getExpr()->print(OS); + getExpr()->print(OS, MAI); OS << ")"; } else OS << "UNDEFINED"; @@ -34,20 +34,20 @@ void MCOperand::print(raw_ostream &OS) const { } void MCOperand::dump() const { - print(errs()); + print(errs(), 0); errs() << "\n"; } -void MCInst::print(raw_ostream &OS) const { +void MCInst::print(raw_ostream &OS, const MCAsmInfo *MAI) const { OS << "<MCInst " << getOpcode(); for (unsigned i = 0, e = getNumOperands(); i != e; ++i) { OS << " "; - getOperand(i).print(OS); + getOperand(i).print(OS, MAI); } OS << ">"; } void MCInst::dump() const { - print(errs()); + print(errs(), 0); errs() << "\n"; } diff --git a/lib/MC/MCSymbol.cpp b/lib/MC/MCSymbol.cpp index 3c9894b..3b1a41d 100644 --- a/lib/MC/MCSymbol.cpp +++ b/lib/MC/MCSymbol.cpp @@ -41,7 +41,7 @@ static inline bool NeedsQuoting(const StringRef &Str) { return false; } -void MCSymbol::print(raw_ostream &OS) const { +void MCSymbol::print(raw_ostream &OS, const MCAsmInfo *MAI) const { if (NeedsQuoting(getName())) OS << '"' << getName() << '"'; else @@ -49,5 +49,5 @@ void MCSymbol::print(raw_ostream &OS) const { } void MCSymbol::dump() const { - print(errs()); + print(errs(), 0); } diff --git a/lib/MC/MCValue.cpp b/lib/MC/MCValue.cpp index c7923da..69bd10c 100644 --- a/lib/MC/MCValue.cpp +++ b/lib/MC/MCValue.cpp @@ -12,17 +12,17 @@ using namespace llvm; -void MCValue::print(raw_ostream &OS) const { +void MCValue::print(raw_ostream &OS, const MCAsmInfo *MAI) const { if (isAbsolute()) { OS << getConstant(); return; } - getSymA()->print(OS); + getSymA()->print(OS, MAI); if (getSymB()) { OS << " - "; - getSymB()->print(OS); + getSymB()->print(OS, MAI); } if (getConstant()) @@ -30,5 +30,5 @@ void MCValue::print(raw_ostream &OS) const { } void MCValue::dump() const { - print(errs()); + print(errs(), 0); } diff --git a/lib/Target/X86/AsmPrinter/X86ATTInstPrinter.cpp b/lib/Target/X86/AsmPrinter/X86ATTInstPrinter.cpp index ee79791..ccfe731 100644 --- a/lib/Target/X86/AsmPrinter/X86ATTInstPrinter.cpp +++ b/lib/Target/X86/AsmPrinter/X86ATTInstPrinter.cpp @@ -57,7 +57,7 @@ void X86ATTAsmPrinter::print_pcrel_imm(const MCInst *MI, unsigned OpNo) { if (Op.isImm()) O << Op.getImm(); else if (Op.isExpr()) - Op.getExpr()->print(O); + Op.getExpr()->print(O, MAI); else if (Op.isMBBLabel()) // FIXME: Keep in sync with printBasicBlockLabel. printBasicBlockLabel // should eventually call into this code, not the other way around. @@ -93,7 +93,7 @@ void X86ATTAsmPrinter::printOperand(const MCInst *MI, unsigned OpNo, return; } else if (Op.isExpr()) { O << '$'; - Op.getExpr()->print(O); + Op.getExpr()->print(O, MAI); return; } @@ -111,7 +111,7 @@ void X86ATTAsmPrinter::printLeaMemReference(const MCInst *MI, unsigned Op) { if (DispVal || (!IndexReg.getReg() && !BaseReg.getReg())) O << DispVal; } else if (DispSpec.isExpr()) { - DispSpec.getExpr()->print(O); + DispSpec.getExpr()->print(O, MAI); } else { llvm_unreachable("non-immediate displacement for LEA?"); //assert(DispSpec.isGlobal() || DispSpec.isCPI() || |