Thread an MCAsmInfo pointer through the various MC printing APIs,
authorChris Lattner <sabre@nondot.org>
Thu, 3 Sep 2009 05:46:51 +0000 (05:46 +0000)
committerChris Lattner <sabre@nondot.org>
Thu, 3 Sep 2009 05:46:51 +0000 (05:46 +0000)
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

include/llvm/MC/MCExpr.h
include/llvm/MC/MCInst.h
include/llvm/MC/MCSymbol.h
include/llvm/MC/MCValue.h
lib/MC/MCAsmStreamer.cpp
lib/MC/MCExpr.cpp
lib/MC/MCInst.cpp
lib/MC/MCSymbol.cpp
lib/MC/MCValue.cpp
lib/Target/X86/AsmPrinter/X86ATTInstPrinter.cpp

index 9f9f2670f3b2b2900487ade680bb595c4c7d9d82..859cab52941635be12a8c818cd7072a004229d28 100644 (file)
@@ -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;
 
   /// @}
index 7c1cb136d6974b4c122e5ac8e217935d68e4f142..a6bd45b493b3419ba0eab055c654d2a3e2d5d5ab 100644 (file)
@@ -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;
 };
 
index 631fa12f3f325aa3b6f6847d1a52d9ade90680bc..5dd7d68585c785410bb13e31ba2156e5953aebdb 100644 (file)
@@ -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;
index 9d71209f8075897454d5a7b17cac95f3b869017d..62aca6e3a6f6cacf625a224aecb5c398297bb066 100644 (file)
@@ -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;
index cc77c6f8acfdf0ec6d3cf6ae5fbcc00c546916da..17c591b01cdfdfbab19d09747e4f1bbadfe4515b 100644 (file)
@@ -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';
 }
 
index bc4241560e8ddb25977367b2aab80fee2fdf36b5..9a1b641fb49b6f239de7d4e061437fec80489552 100644 (file)
 #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';
 }
 
index ec061463b754b1b189f95e5358e0bbbae19be54d..f19056bc9add5732497af4eb5182f61b2754975c 100644 (file)
@@ -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";
 }
index 3c9894b691b3fb612bf75016238bead36ab1b63c..3b1a41d48d07ae90239ce97964df0919ff4529c6 100644 (file)
@@ -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);
 }
index c7923da764e239caeff494658f0733f2114927a9..69bd10c8e699dab1cf38b103687b53d1888c49e5 100644 (file)
 
 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);
 }
index ee797915f7855e1f490f841ef783f31f09155afa..ccfe73160a2051645a4e077fa3619256d91686d0 100644 (file)
@@ -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() ||