[llvm] r288643 - TableGen: Use StringInit instead of std::string for DagInit name

Matthias Braun via llvm-commits llvm-commits at lists.llvm.org
Sun Dec 4 22:00:41 PST 2016


Author: matze
Date: Mon Dec  5 00:00:41 2016
New Revision: 288643

URL: http://llvm.org/viewvc/llvm-project?rev=288643&view=rev
Log:
TableGen: Use StringInit instead of std::string for DagInit name

Modified:
    llvm/trunk/include/llvm/TableGen/Record.h
    llvm/trunk/lib/TableGen/Record.cpp
    llvm/trunk/lib/TableGen/TGParser.cpp
    llvm/trunk/utils/TableGen/CodeGenDAGPatterns.cpp

Modified: llvm/trunk/include/llvm/TableGen/Record.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/TableGen/Record.h?rev=288643&r1=288642&r2=288643&view=diff
==============================================================================
--- llvm/trunk/include/llvm/TableGen/Record.h (original)
+++ llvm/trunk/include/llvm/TableGen/Record.h Mon Dec  5 00:00:41 2016
@@ -1146,11 +1146,11 @@ public:
 ///
 class DagInit : public TypedInit, public FoldingSetNode {
   Init *Val;
-  std::string ValName;
+  StringInit *ValName;
   std::vector<Init*> Args;
   std::vector<std::string> ArgNames;
 
-  DagInit(Init *V, StringRef VN, ArrayRef<Init *> ArgRange,
+  DagInit(Init *V, StringInit *VN, ArrayRef<Init *> ArgRange,
           ArrayRef<std::string> NameRange)
       : TypedInit(IK_DagInit, DagRecTy::get()), Val(V), ValName(VN),
           Args(ArgRange.begin(), ArgRange.end()),
@@ -1164,9 +1164,9 @@ public:
     return I->getKind() == IK_DagInit;
   }
 
-  static DagInit *get(Init *V, StringRef VN, ArrayRef<Init *> ArgRange,
+  static DagInit *get(Init *V, StringInit *VN, ArrayRef<Init *> ArgRange,
                       ArrayRef<std::string> NameRange);
-  static DagInit *get(Init *V, StringRef VN,
+  static DagInit *get(Init *V, StringInit *VN,
                       const std::vector<std::pair<Init*, std::string>> &args);
 
   void Profile(FoldingSetNodeID &ID) const;
@@ -1175,7 +1175,10 @@ public:
 
   Init *getOperator() const { return Val; }
 
-  StringRef getName() const { return ValName; }
+  StringInit *getName() const { return ValName; }
+  StringRef getNameStr() const {
+    return ValName ? ValName->getValue() : StringRef();
+  }
 
   unsigned getNumArgs() const { return Args.size(); }
   Init *getArg(unsigned Num) const {

Modified: llvm/trunk/lib/TableGen/Record.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/TableGen/Record.cpp?rev=288643&r1=288642&r2=288643&view=diff
==============================================================================
--- llvm/trunk/lib/TableGen/Record.cpp (original)
+++ llvm/trunk/lib/TableGen/Record.cpp Mon Dec  5 00:00:41 2016
@@ -838,7 +838,7 @@ Init *BinOpInit::Fold(Record *CurRec, Mu
         Args.push_back(RHSs->getArg(i));
         ArgNames.push_back(RHSs->getArgName(i));
       }
-      return DagInit::get(LHSs->getOperator(), "", Args, ArgNames);
+      return DagInit::get(LHSs->getOperator(), nullptr, Args, ArgNames);
     }
     break;
   }
@@ -1035,7 +1035,7 @@ static Init *ForeachHelper(Init *LHS, In
       args.push_back(std::make_pair(Arg, ArgName));
     }
 
-    return DagInit::get(Val, "", args);
+    return DagInit::get(Val, nullptr, args);
   }
 
   ListInit *MHSl = dyn_cast<ListInit>(MHS);
@@ -1523,11 +1523,11 @@ Init *FieldInit::resolveReferences(Recor
   return const_cast<FieldInit *>(this);
 }
 
-static void ProfileDagInit(FoldingSetNodeID &ID, Init *V, StringRef VN,
+static void ProfileDagInit(FoldingSetNodeID &ID, Init *V, StringInit *VN,
                            ArrayRef<Init *> ArgRange,
                            ArrayRef<std::string> NameRange) {
   ID.AddPointer(V);
-  ID.AddString(VN);
+  ID.AddPointer(VN);
 
   ArrayRef<Init *>::iterator Arg  = ArgRange.begin();
   ArrayRef<std::string>::iterator  Name = NameRange.begin();
@@ -1540,7 +1540,7 @@ static void ProfileDagInit(FoldingSetNod
 }
 
 DagInit *
-DagInit::get(Init *V, StringRef VN, ArrayRef<Init *> ArgRange,
+DagInit::get(Init *V, StringInit *VN, ArrayRef<Init *> ArgRange,
              ArrayRef<std::string> NameRange) {
   static FoldingSet<DagInit> ThePool;
   static std::vector<DagInit*> TheActualPool;
@@ -1559,7 +1559,7 @@ DagInit::get(Init *V, StringRef VN, Arra
 }
 
 DagInit *
-DagInit::get(Init *V, StringRef VN,
+DagInit::get(Init *V, StringInit *VN,
              const std::vector<std::pair<Init*, std::string> > &args) {
   std::vector<Init *> Args;
   std::vector<std::string> Names;
@@ -1598,8 +1598,8 @@ Init *DagInit::resolveReferences(Record
 
 std::string DagInit::getAsString() const {
   std::string Result = "(" + Val->getAsString();
-  if (!ValName.empty())
-    Result += ":" + ValName;
+  if (ValName)
+    Result += ":" + ValName->getAsUnquotedString();
   if (!Args.empty()) {
     Result += " " + Args[0]->getAsString();
     if (!ArgNames[0].empty()) Result += ":$" + ArgNames[0];

Modified: llvm/trunk/lib/TableGen/TGParser.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/TableGen/TGParser.cpp?rev=288643&r1=288642&r2=288643&view=diff
==============================================================================
--- llvm/trunk/lib/TableGen/TGParser.cpp (original)
+++ llvm/trunk/lib/TableGen/TGParser.cpp Mon Dec  5 00:00:41 2016
@@ -1418,13 +1418,13 @@ Init *TGParser::ParseSimpleValue(Record
     if (!Operator) return nullptr;
 
     // If the operator name is present, parse it.
-    std::string OperatorName;
+    StringInit *OperatorName = nullptr;
     if (Lex.getCode() == tgtok::colon) {
       if (Lex.Lex() != tgtok::VarName) { // eat the ':'
         TokError("expected variable name in dag operator");
         return nullptr;
       }
-      OperatorName = Lex.getCurStrVal();
+      OperatorName = StringInit::get(Lex.getCurStrVal());
       Lex.Lex();  // eat the VarName.
     }
 

Modified: llvm/trunk/utils/TableGen/CodeGenDAGPatterns.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/TableGen/CodeGenDAGPatterns.cpp?rev=288643&r1=288642&r2=288643&view=diff
==============================================================================
--- llvm/trunk/utils/TableGen/CodeGenDAGPatterns.cpp (original)
+++ llvm/trunk/utils/TableGen/CodeGenDAGPatterns.cpp Mon Dec  5 00:00:41 2016
@@ -2072,7 +2072,7 @@ TreePatternNode *TreePattern::ParseTreeP
     ///   (foo GPR, imm) -> (foo GPR, (imm))
     if (R->isSubClassOf("SDNode") || R->isSubClassOf("PatFrag"))
       return ParseTreePattern(
-        DagInit::get(DI, "",
+        DagInit::get(DI, nullptr,
                      std::vector<std::pair<Init*, std::string> >()),
         OpName);
 
@@ -2226,9 +2226,9 @@ TreePatternNode *TreePattern::ParseTreeP
   TreePatternNode *Result = new TreePatternNode(Operator, Children, NumResults);
   Result->setName(OpName);
 
-  if (!Dag->getName().empty()) {
+  if (Dag->getName()) {
     assert(Result->getName().empty());
-    Result->setName(Dag->getName());
+    Result->setName(Dag->getNameStr());
   }
   return Result;
 }
@@ -2546,7 +2546,7 @@ void CodeGenDAGPatterns::ParseDefaultOpe
     for (unsigned op = 0, e = DefaultInfo->getNumArgs(); op != e; ++op)
       Ops.push_back(std::make_pair(DefaultInfo->getArg(op),
                                    DefaultInfo->getArgName(op)));
-    DagInit *DI = DagInit::get(SomeSDNode, "", Ops);
+    DagInit *DI = DagInit::get(SomeSDNode, nullptr, Ops);
 
     // Create a TreePattern to parse this.
     TreePattern P(DefaultOps[i], DI, false, *this);




More information about the llvm-commits mailing list