mirror of
https://github.com/RPCS3/llvm.git
synced 2025-02-03 17:24:24 +00:00
TableGen: Use StringInit instead of std::string for DagInit name
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@288643 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
1ecbef9056
commit
205e9501a0
@ -1146,11 +1146,11 @@ public:
|
|||||||
///
|
///
|
||||||
class DagInit : public TypedInit, public FoldingSetNode {
|
class DagInit : public TypedInit, public FoldingSetNode {
|
||||||
Init *Val;
|
Init *Val;
|
||||||
std::string ValName;
|
StringInit *ValName;
|
||||||
std::vector<Init*> Args;
|
std::vector<Init*> Args;
|
||||||
std::vector<std::string> ArgNames;
|
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)
|
ArrayRef<std::string> NameRange)
|
||||||
: TypedInit(IK_DagInit, DagRecTy::get()), Val(V), ValName(VN),
|
: TypedInit(IK_DagInit, DagRecTy::get()), Val(V), ValName(VN),
|
||||||
Args(ArgRange.begin(), ArgRange.end()),
|
Args(ArgRange.begin(), ArgRange.end()),
|
||||||
@ -1164,9 +1164,9 @@ public:
|
|||||||
return I->getKind() == IK_DagInit;
|
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);
|
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);
|
const std::vector<std::pair<Init*, std::string>> &args);
|
||||||
|
|
||||||
void Profile(FoldingSetNodeID &ID) const;
|
void Profile(FoldingSetNodeID &ID) const;
|
||||||
@ -1175,7 +1175,10 @@ public:
|
|||||||
|
|
||||||
Init *getOperator() const { return Val; }
|
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(); }
|
unsigned getNumArgs() const { return Args.size(); }
|
||||||
Init *getArg(unsigned Num) const {
|
Init *getArg(unsigned Num) const {
|
||||||
|
@ -838,7 +838,7 @@ Init *BinOpInit::Fold(Record *CurRec, MultiClass *CurMultiClass) const {
|
|||||||
Args.push_back(RHSs->getArg(i));
|
Args.push_back(RHSs->getArg(i));
|
||||||
ArgNames.push_back(RHSs->getArgName(i));
|
ArgNames.push_back(RHSs->getArgName(i));
|
||||||
}
|
}
|
||||||
return DagInit::get(LHSs->getOperator(), "", Args, ArgNames);
|
return DagInit::get(LHSs->getOperator(), nullptr, Args, ArgNames);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -1035,7 +1035,7 @@ static Init *ForeachHelper(Init *LHS, Init *MHS, Init *RHS, RecTy *Type,
|
|||||||
args.push_back(std::make_pair(Arg, ArgName));
|
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);
|
ListInit *MHSl = dyn_cast<ListInit>(MHS);
|
||||||
@ -1523,11 +1523,11 @@ Init *FieldInit::resolveReferences(Record &R, const RecordVal *RV) const {
|
|||||||
return const_cast<FieldInit *>(this);
|
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<Init *> ArgRange,
|
||||||
ArrayRef<std::string> NameRange) {
|
ArrayRef<std::string> NameRange) {
|
||||||
ID.AddPointer(V);
|
ID.AddPointer(V);
|
||||||
ID.AddString(VN);
|
ID.AddPointer(VN);
|
||||||
|
|
||||||
ArrayRef<Init *>::iterator Arg = ArgRange.begin();
|
ArrayRef<Init *>::iterator Arg = ArgRange.begin();
|
||||||
ArrayRef<std::string>::iterator Name = NameRange.begin();
|
ArrayRef<std::string>::iterator Name = NameRange.begin();
|
||||||
@ -1540,7 +1540,7 @@ static void ProfileDagInit(FoldingSetNodeID &ID, Init *V, StringRef VN,
|
|||||||
}
|
}
|
||||||
|
|
||||||
DagInit *
|
DagInit *
|
||||||
DagInit::get(Init *V, StringRef VN, ArrayRef<Init *> ArgRange,
|
DagInit::get(Init *V, StringInit *VN, ArrayRef<Init *> ArgRange,
|
||||||
ArrayRef<std::string> NameRange) {
|
ArrayRef<std::string> NameRange) {
|
||||||
static FoldingSet<DagInit> ThePool;
|
static FoldingSet<DagInit> ThePool;
|
||||||
static std::vector<DagInit*> TheActualPool;
|
static std::vector<DagInit*> TheActualPool;
|
||||||
@ -1559,7 +1559,7 @@ DagInit::get(Init *V, StringRef VN, ArrayRef<Init *> ArgRange,
|
|||||||
}
|
}
|
||||||
|
|
||||||
DagInit *
|
DagInit *
|
||||||
DagInit::get(Init *V, StringRef VN,
|
DagInit::get(Init *V, StringInit *VN,
|
||||||
const std::vector<std::pair<Init*, std::string> > &args) {
|
const std::vector<std::pair<Init*, std::string> > &args) {
|
||||||
std::vector<Init *> Args;
|
std::vector<Init *> Args;
|
||||||
std::vector<std::string> Names;
|
std::vector<std::string> Names;
|
||||||
@ -1598,8 +1598,8 @@ Init *DagInit::resolveReferences(Record &R, const RecordVal *RV) const {
|
|||||||
|
|
||||||
std::string DagInit::getAsString() const {
|
std::string DagInit::getAsString() const {
|
||||||
std::string Result = "(" + Val->getAsString();
|
std::string Result = "(" + Val->getAsString();
|
||||||
if (!ValName.empty())
|
if (ValName)
|
||||||
Result += ":" + ValName;
|
Result += ":" + ValName->getAsUnquotedString();
|
||||||
if (!Args.empty()) {
|
if (!Args.empty()) {
|
||||||
Result += " " + Args[0]->getAsString();
|
Result += " " + Args[0]->getAsString();
|
||||||
if (!ArgNames[0].empty()) Result += ":$" + ArgNames[0];
|
if (!ArgNames[0].empty()) Result += ":$" + ArgNames[0];
|
||||||
|
@ -1418,13 +1418,13 @@ Init *TGParser::ParseSimpleValue(Record *CurRec, RecTy *ItemType,
|
|||||||
if (!Operator) return nullptr;
|
if (!Operator) return nullptr;
|
||||||
|
|
||||||
// If the operator name is present, parse it.
|
// If the operator name is present, parse it.
|
||||||
std::string OperatorName;
|
StringInit *OperatorName = nullptr;
|
||||||
if (Lex.getCode() == tgtok::colon) {
|
if (Lex.getCode() == tgtok::colon) {
|
||||||
if (Lex.Lex() != tgtok::VarName) { // eat the ':'
|
if (Lex.Lex() != tgtok::VarName) { // eat the ':'
|
||||||
TokError("expected variable name in dag operator");
|
TokError("expected variable name in dag operator");
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
OperatorName = Lex.getCurStrVal();
|
OperatorName = StringInit::get(Lex.getCurStrVal());
|
||||||
Lex.Lex(); // eat the VarName.
|
Lex.Lex(); // eat the VarName.
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2072,7 +2072,7 @@ TreePatternNode *TreePattern::ParseTreePattern(Init *TheInit, StringRef OpName){
|
|||||||
/// (foo GPR, imm) -> (foo GPR, (imm))
|
/// (foo GPR, imm) -> (foo GPR, (imm))
|
||||||
if (R->isSubClassOf("SDNode") || R->isSubClassOf("PatFrag"))
|
if (R->isSubClassOf("SDNode") || R->isSubClassOf("PatFrag"))
|
||||||
return ParseTreePattern(
|
return ParseTreePattern(
|
||||||
DagInit::get(DI, "",
|
DagInit::get(DI, nullptr,
|
||||||
std::vector<std::pair<Init*, std::string> >()),
|
std::vector<std::pair<Init*, std::string> >()),
|
||||||
OpName);
|
OpName);
|
||||||
|
|
||||||
@ -2226,9 +2226,9 @@ TreePatternNode *TreePattern::ParseTreePattern(Init *TheInit, StringRef OpName){
|
|||||||
TreePatternNode *Result = new TreePatternNode(Operator, Children, NumResults);
|
TreePatternNode *Result = new TreePatternNode(Operator, Children, NumResults);
|
||||||
Result->setName(OpName);
|
Result->setName(OpName);
|
||||||
|
|
||||||
if (!Dag->getName().empty()) {
|
if (Dag->getName()) {
|
||||||
assert(Result->getName().empty());
|
assert(Result->getName().empty());
|
||||||
Result->setName(Dag->getName());
|
Result->setName(Dag->getNameStr());
|
||||||
}
|
}
|
||||||
return Result;
|
return Result;
|
||||||
}
|
}
|
||||||
@ -2546,7 +2546,7 @@ void CodeGenDAGPatterns::ParseDefaultOperands() {
|
|||||||
for (unsigned op = 0, e = DefaultInfo->getNumArgs(); op != e; ++op)
|
for (unsigned op = 0, e = DefaultInfo->getNumArgs(); op != e; ++op)
|
||||||
Ops.push_back(std::make_pair(DefaultInfo->getArg(op),
|
Ops.push_back(std::make_pair(DefaultInfo->getArg(op),
|
||||||
DefaultInfo->getArgName(op)));
|
DefaultInfo->getArgName(op)));
|
||||||
DagInit *DI = DagInit::get(SomeSDNode, "", Ops);
|
DagInit *DI = DagInit::get(SomeSDNode, nullptr, Ops);
|
||||||
|
|
||||||
// Create a TreePattern to parse this.
|
// Create a TreePattern to parse this.
|
||||||
TreePattern P(DefaultOps[i], DI, false, *this);
|
TreePattern P(DefaultOps[i], DI, false, *this);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user