[llvm] r314004 - [TableGen] Replace InfoByHwMode::getAsString with writeToStream

Krzysztof Parzyszek via llvm-commits llvm-commits at lists.llvm.org
Fri Sep 22 11:29:38 PDT 2017


Author: kparzysz
Date: Fri Sep 22 11:29:37 2017
New Revision: 314004

URL: http://llvm.org/viewvc/llvm-project?rev=314004&view=rev
Log:
[TableGen] Replace InfoByHwMode::getAsString with writeToStream

Also add operator<< for use with raw_ostream to InfoByHwMode and its
derived classes.

Recommitting r313989 with the fix for unresolved references: explicitly
define the operator<< in namespace llvm.

Modified:
    llvm/trunk/utils/TableGen/CodeGenDAGPatterns.cpp
    llvm/trunk/utils/TableGen/CodeGenDAGPatterns.h
    llvm/trunk/utils/TableGen/CodeGenRegisters.cpp
    llvm/trunk/utils/TableGen/InfoByHwMode.cpp
    llvm/trunk/utils/TableGen/InfoByHwMode.h

Modified: llvm/trunk/utils/TableGen/CodeGenDAGPatterns.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/TableGen/CodeGenDAGPatterns.cpp?rev=314004&r1=314003&r2=314004&view=diff
==============================================================================
--- llvm/trunk/utils/TableGen/CodeGenDAGPatterns.cpp (original)
+++ llvm/trunk/utils/TableGen/CodeGenDAGPatterns.cpp Fri Sep 22 11:29:37 2017
@@ -238,10 +238,16 @@ bool TypeSetByHwMode::operator==(const T
   return true;
 }
 
+namespace llvm {
+  raw_ostream &operator<<(raw_ostream &OS, const TypeSetByHwMode &T) {
+    T.writeToStream(OS);
+    return OS;
+  }
+}
+
 LLVM_DUMP_METHOD
 void TypeSetByHwMode::dump() const {
-  writeToStream(dbgs());
-  dbgs() << '\n';
+  dbgs() << *this << '\n';
 }
 
 bool TypeSetByHwMode::intersect(SetType &Out, const SetType &In) {

Modified: llvm/trunk/utils/TableGen/CodeGenDAGPatterns.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/TableGen/CodeGenDAGPatterns.h?rev=314004&r1=314003&r2=314004&view=diff
==============================================================================
--- llvm/trunk/utils/TableGen/CodeGenDAGPatterns.h (original)
+++ llvm/trunk/utils/TableGen/CodeGenDAGPatterns.h Fri Sep 22 11:29:37 2017
@@ -240,6 +240,8 @@ private:
   bool intersect(SetType &Out, const SetType &In);
 };
 
+raw_ostream &operator<<(raw_ostream &OS, const TypeSetByHwMode &T);
+
 struct TypeInfer {
   TypeInfer(TreePattern &T) : TP(T), ForceMode(0) {}
 

Modified: llvm/trunk/utils/TableGen/CodeGenRegisters.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/TableGen/CodeGenRegisters.cpp?rev=314004&r1=314003&r2=314004&view=diff
==============================================================================
--- llvm/trunk/utils/TableGen/CodeGenRegisters.cpp (original)
+++ llvm/trunk/utils/TableGen/CodeGenRegisters.cpp Fri Sep 22 11:29:37 2017
@@ -836,7 +836,7 @@ bool CodeGenRegisterClass::contains(cons
 namespace llvm {
 
   raw_ostream &operator<<(raw_ostream &OS, const CodeGenRegisterClass::Key &K) {
-    OS << "{ " << K.RSI.getAsString();
+    OS << "{ " << K.RSI;
     for (const auto R : *K.Members)
       OS << ", " << R->getName();
     return OS << " }";

Modified: llvm/trunk/utils/TableGen/InfoByHwMode.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/TableGen/InfoByHwMode.cpp?rev=314004&r1=314003&r2=314004&view=diff
==============================================================================
--- llvm/trunk/utils/TableGen/InfoByHwMode.cpp (original)
+++ llvm/trunk/utils/TableGen/InfoByHwMode.cpp Fri Sep 22 11:29:37 2017
@@ -76,34 +76,31 @@ StringRef ValueTypeByHwMode::getMVTName(
   return N;
 }
 
-std::string ValueTypeByHwMode::getAsString() const {
-  if (isSimple())
-    return getMVTName(getSimple());
+void ValueTypeByHwMode::writeToStream(raw_ostream &OS) const {
+  if (isSimple()) {
+    OS << getMVTName(getSimple());
+    return;
+  }
 
   std::vector<const PairType*> Pairs;
   for (const auto &P : Map)
     Pairs.push_back(&P);
   std::sort(Pairs.begin(), Pairs.end(), deref<std::less<PairType>>());
 
-  std::stringstream str;
-  str << '{';
+  OS << '{';
   for (unsigned i = 0, e = Pairs.size(); i != e; ++i) {
     const PairType *P = Pairs[i];
-    str << '(' << getModeName(P->first)
-        << ':' << getMVTName(P->second).str() << ')';
+    OS << '(' << getModeName(P->first)
+       << ':' << getMVTName(P->second).str() << ')';
     if (i != e-1)
-      str << ',';
+      OS << ',';
   }
-  str << '}';
-  return str.str();
+  OS << '}';
 }
 
 LLVM_DUMP_METHOD
 void ValueTypeByHwMode::dump() const {
-  dbgs() << "size=" << Map.size() << '\n';
-  for (const auto &P : Map)
-    dbgs() << "  " << P.first << " -> "
-           << llvm::getEnumName(P.second.SimpleTy) << '\n';
+  dbgs() << *this << '\n';
 }
 
 ValueTypeByHwMode llvm::getValueTypeByHwMode(Record *Rec,
@@ -136,11 +133,9 @@ bool RegSizeInfo::isSubClassOf(const Reg
          SpillSize <= I.SpillSize;
 }
 
-std::string RegSizeInfo::getAsString() const {
-  std::stringstream str;
-  str << "[R=" << RegSize << ",S=" << SpillSize
-      << ",A=" << SpillAlignment << ']';
-  return str.str();
+void RegSizeInfo::writeToStream(raw_ostream &OS) const {
+  OS << "[R=" << RegSize << ",S=" << SpillSize
+     << ",A=" << SpillAlignment << ']';
 }
 
 RegSizeInfoByHwMode::RegSizeInfoByHwMode(Record *R,
@@ -177,22 +172,36 @@ bool RegSizeInfoByHwMode::hasStricterSpi
          std::tie(B0.SpillSize, B0.SpillAlignment);
 }
 
-std::string RegSizeInfoByHwMode::getAsString() const {
+void RegSizeInfoByHwMode::writeToStream(raw_ostream &OS) const {
   typedef typename decltype(Map)::value_type PairType;
   std::vector<const PairType*> Pairs;
   for (const auto &P : Map)
     Pairs.push_back(&P);
   std::sort(Pairs.begin(), Pairs.end(), deref<std::less<PairType>>());
 
-  std::stringstream str;
-  str << '{';
+  OS << '{';
   for (unsigned i = 0, e = Pairs.size(); i != e; ++i) {
     const PairType *P = Pairs[i];
-    str << '(' << getModeName(P->first)
-        << ':' << P->second.getAsString() << ')';
+    OS << '(' << getModeName(P->first) << ':' << P->second << ')';
     if (i != e-1)
-      str << ',';
+      OS << ',';
+  }
+  OS << '}';
+}
+
+namespace llvm {
+  raw_ostream &operator<<(raw_ostream &OS, const ValueTypeByHwMode &T) {
+    T.writeToStream(OS);
+    return OS;
+  }
+
+  raw_ostream &operator<<(raw_ostream &OS, const RegSizeInfo &T) {
+    T.writeToStream(OS);
+    return OS;
+  }
+
+  raw_ostream &operator<<(raw_ostream &OS, const RegSizeInfoByHwMode &T) {
+    T.writeToStream(OS);
+    return OS;
   }
-  str << '}';
-  return str.str();
 }

Modified: llvm/trunk/utils/TableGen/InfoByHwMode.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/TableGen/InfoByHwMode.h?rev=314004&r1=314003&r2=314004&view=diff
==============================================================================
--- llvm/trunk/utils/TableGen/InfoByHwMode.h (original)
+++ llvm/trunk/utils/TableGen/InfoByHwMode.h Fri Sep 22 11:29:37 2017
@@ -27,6 +27,7 @@ namespace llvm {
 
 struct CodeGenHwModes;
 class Record;
+class raw_ostream;
 
 template <typename InfoT> struct InfoByHwMode;
 
@@ -130,7 +131,7 @@ struct ValueTypeByHwMode : public InfoBy
   MVT &getOrCreateTypeForMode(unsigned Mode, MVT Type);
 
   static StringRef getMVTName(MVT T);
-  std::string getAsString() const;
+  void writeToStream(raw_ostream &OS) const;
   void dump() const;
 };
 
@@ -154,7 +155,7 @@ struct RegSizeInfo {
   }
 
   bool isSubClassOf(const RegSizeInfo &I) const;
-  std::string getAsString() const;
+  void writeToStream(raw_ostream &OS) const;
 };
 
 struct RegSizeInfoByHwMode : public InfoByHwMode<RegSizeInfo> {
@@ -169,8 +170,13 @@ struct RegSizeInfoByHwMode : public Info
   bool isSubClassOf(const RegSizeInfoByHwMode &I) const;
   bool hasStricterSpillThan(const RegSizeInfoByHwMode &I) const;
 
-  std::string getAsString() const;
+  void writeToStream(raw_ostream &OS) const;
 };
+
+raw_ostream &operator<<(raw_ostream &OS, const ValueTypeByHwMode &T);
+raw_ostream &operator<<(raw_ostream &OS, const RegSizeInfo &T);
+raw_ostream &operator<<(raw_ostream &OS, const RegSizeInfoByHwMode &T);
+
 } // namespace llvm
 
 #endif // LLVM_UTILS_TABLEGEN_INFOBYHWMODE_H




More information about the llvm-commits mailing list