Don't hardcode the %reg format in the streamer.
authorRafael Espindola <rafael.espindola@gmail.com>
Thu, 2 Jun 2011 02:34:55 +0000 (02:34 +0000)
committerRafael Espindola <rafael.espindola@gmail.com>
Thu, 2 Jun 2011 02:34:55 +0000 (02:34 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132451 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/MC/MCInstPrinter.h
lib/MC/MCAsmStreamer.cpp
lib/MC/MCInstPrinter.cpp
lib/Target/ARM/InstPrinter/ARMInstPrinter.cpp
lib/Target/ARM/InstPrinter/ARMInstPrinter.h
lib/Target/PowerPC/InstPrinter/PPCInstPrinter.cpp
lib/Target/PowerPC/InstPrinter/PPCInstPrinter.h
lib/Target/X86/InstPrinter/X86ATTInstPrinter.cpp
lib/Target/X86/InstPrinter/X86ATTInstPrinter.h
lib/Target/X86/InstPrinter/X86IntelInstPrinter.cpp
lib/Target/X86/InstPrinter/X86IntelInstPrinter.h

index 066955867c5910005e5370d830aa5f2f4e7cd392..39002dabca14cf43d589452c461b3478f2d1ccb0 100644 (file)
@@ -45,8 +45,8 @@ public:
   /// "MOV32ri") or empty if we can't resolve it.
   virtual StringRef getOpcodeName(unsigned Opcode) const;
 
-  /// getRegName - Return the assembler register name.
-  virtual StringRef getRegName(unsigned RegNo) const;
+  /// printRegName - Print the assembler register name.
+  virtual void printRegName(raw_ostream &OS, unsigned RegNo) const;
 
   unsigned getAvailableFeatures() const { return AvailableFeatures; }
   void setAvailableFeatures(unsigned Value) { AvailableFeatures = Value; }
index ae9936ce6fc283fa014193be927e339cab9a5929..e8b09fcaced82f2386f45c73605b6af2b5dd90d4 100644 (file)
@@ -825,7 +825,7 @@ void MCAsmStreamer::EmitRegisterName(int64_t Register) {
   if (InstPrinter) {
     const TargetAsmInfo &asmInfo = getContext().getTargetAsmInfo();
     unsigned LLVMRegister = asmInfo.getLLVMRegNum(Register, true);
-    OS << '%' << InstPrinter->getRegName(LLVMRegister);
+    InstPrinter->printRegName(OS, LLVMRegister);
   } else {
     OS << Register;
   }
@@ -1169,8 +1169,10 @@ void MCAsmStreamer::EmitPersonality(const MCSymbol *Personality) {
 }
 
 void MCAsmStreamer::EmitSetFP(unsigned FpReg, unsigned SpReg, int64_t Offset) {
-  OS << "\t.setfp\t" << InstPrinter->getRegName(FpReg)
-     << ", "        << InstPrinter->getRegName(SpReg);
+  OS << "\t.setfp\t";
+  InstPrinter->printRegName(OS, FpReg);
+  OS << ", ";
+  InstPrinter->printRegName(OS, SpReg);
   if (Offset)
     OS << ", #" << Offset;
   EmitEOL();
@@ -1189,10 +1191,12 @@ void MCAsmStreamer::EmitRegSave(const SmallVectorImpl<unsigned> &RegList,
   else
     OS << "\t.save\t{";
 
-  OS << InstPrinter->getRegName(RegList[0]);
+  InstPrinter->printRegName(OS, RegList[0]);
 
-  for (unsigned i = 1, e = RegList.size(); i != e; ++i)
-    OS << ", " << InstPrinter->getRegName(RegList[i]);
+  for (unsigned i = 1, e = RegList.size(); i != e; ++i) {
+    OS << ", ";
+    InstPrinter->printRegName(OS, RegList[i]);
+  }
 
   OS << "}";
   EmitEOL();
index 212b85eb1fe07571aa5a46c9d484174cdf802b97..81a939ffaaef3156fc30132b1b241b6d19bc3163 100644 (file)
@@ -20,7 +20,6 @@ StringRef MCInstPrinter::getOpcodeName(unsigned Opcode) const {
   return "";
 }
 
-StringRef MCInstPrinter::getRegName(unsigned RegNo) const {
+void MCInstPrinter::printRegName(raw_ostream &OS, unsigned RegNo) const {
   assert(0 && "Target should implement this");
-  return "";
 }
index fc2aa7526b7f5a2464ac9affc797a93fc41e342a..8ae87f81cc1e840fd142d07f3ec35033a6427c12 100644 (file)
@@ -29,8 +29,8 @@ StringRef ARMInstPrinter::getOpcodeName(unsigned Opcode) const {
   return getInstructionName(Opcode);
 }
 
-StringRef ARMInstPrinter::getRegName(unsigned RegNo) const {
-  return getRegisterName(RegNo);
+void ARMInstPrinter::printRegName(raw_ostream &OS, unsigned RegNo) const {
+  OS << getRegisterName(RegNo);
 }
 
 void ARMInstPrinter::printInst(const MCInst *MI, raw_ostream &O) {
index b3ac03ab2200bd183f0558ac078495f870c2e916..bde0eb9199a9c817cd2576c2ae7263ec67df5d6f 100644 (file)
@@ -28,7 +28,7 @@ public:
 
   virtual void printInst(const MCInst *MI, raw_ostream &O);
   virtual StringRef getOpcodeName(unsigned Opcode) const;
-  virtual StringRef getRegName(unsigned RegNo) const;
+  virtual void printRegName(raw_ostream &OS, unsigned RegNo) const;
 
   static const char *getInstructionName(unsigned Opcode);
 
index dd9f2744e224caedc089635ad9b5e4719ba536f1..1a9bd761359c84c9ceff70925fae4af1d6e7eb6c 100644 (file)
@@ -26,8 +26,8 @@ StringRef PPCInstPrinter::getOpcodeName(unsigned Opcode) const {
   return getInstructionName(Opcode);
 }
 
-StringRef PPCInstPrinter::getRegName(unsigned RegNo) const {
-  return getRegisterName(RegNo);
+void PPCInstPrinter::printRegName(raw_ostream &OS, unsigned RegNo) const {
+  OS << getRegisterName(RegNo);
 }
 
 void PPCInstPrinter::printInst(const MCInst *MI, raw_ostream &O) {
index 6a9841199d5d18f5856bd8e277d4abe23d7c934b..adfa0aa6306b48a7e94589bda784dfe7bd0c8868 100644 (file)
@@ -33,7 +33,7 @@ public:
     return SyntaxVariant == 1;
   }
   
-  StringRef getRegName(unsigned RegNo) const;
+  virtual void printRegName(raw_ostream &OS, unsigned RegNo) const;
   virtual void printInst(const MCInst *MI, raw_ostream &O);
   virtual StringRef getOpcodeName(unsigned Opcode) const;
   
index 6ff4442919e8e701633e891519d56f09c301a44d..68247d2f1a5b5403e3712b8e37667ddca005f84a 100644 (file)
@@ -41,8 +41,9 @@ X86ATTInstPrinter::X86ATTInstPrinter(TargetMachine &TM, const MCAsmInfo &MAI)
             &TM.getSubtarget<X86Subtarget>()));
 }
 
-StringRef X86ATTInstPrinter::getRegName(unsigned RegNo) const {
-  return getRegisterName(RegNo);
+void X86ATTInstPrinter::printRegName(raw_ostream &OS,
+                                     unsigned RegNo) const {
+  OS << '%' << getRegisterName(RegNo);
 }
 
 void X86ATTInstPrinter::printInst(const MCInst *MI, raw_ostream &OS) {
index 0a17c1b36853f5553c64b08b7598d47d21f58115..5f939b61da21ebb83a358ff5df641f8edb53c1ff 100644 (file)
@@ -26,7 +26,7 @@ class X86ATTInstPrinter : public MCInstPrinter {
 public:
   X86ATTInstPrinter(TargetMachine &TM, const MCAsmInfo &MAI);
   
-  StringRef getRegName(unsigned RegNo) const;
+  virtual void printRegName(raw_ostream &OS, unsigned RegNo) const;
   virtual void printInst(const MCInst *MI, raw_ostream &OS);
   virtual StringRef getOpcodeName(unsigned Opcode) const;
 
index bdf5af20dbf6e8934aaeac7605fe8d93b2c3368b..5f581bab3906d44c9dd78269d402b9222b2401a2 100644 (file)
@@ -29,8 +29,8 @@ using namespace llvm;
 #define GET_INSTRUCTION_NAME
 #include "X86GenAsmWriter1.inc"
 
-StringRef X86IntelInstPrinter::getRegName(unsigned RegNo) const {
-  return getRegisterName(RegNo);
+void X86IntelInstPrinter::printRegName(raw_ostream &OS, unsigned RegNo) const {
+  OS << getRegisterName(RegNo);
 }
 
 void X86IntelInstPrinter::printInst(const MCInst *MI, raw_ostream &OS) {
index c51a210dcc0419812e6f8442b9a1dcee3269a530..c8030c3ecdacdb96791a904141438eea342e1249 100644 (file)
@@ -27,7 +27,7 @@ public:
   X86IntelInstPrinter(TargetMachine &TM, const MCAsmInfo &MAI)
     : MCInstPrinter(MAI) {}
 
-  StringRef getRegName(unsigned RegNo) const;
+  virtual void printRegName(raw_ostream &OS, unsigned RegNo) const;
   virtual void printInst(const MCInst *MI, raw_ostream &OS);
   virtual StringRef getOpcodeName(unsigned Opcode) const;