diff options
author | Simon Pilgrim <llvm-dev@redking.me.uk> | 2017-10-07 12:08:43 +0000 |
---|---|---|
committer | Simon Pilgrim <llvm-dev@redking.me.uk> | 2017-10-07 12:08:43 +0000 |
commit | 5e030f9cdccedbb5b4b12f8f795c907b741f221b (patch) | |
tree | 168d684df80c9e8d84437f99e483645a82078692 /llvm/utils/TableGen/CodeGenDAGPatterns.cpp | |
parent | e428528c4b00dc2ae6bb0f826f36d85431907e6a (diff) | |
download | llvm-5e030f9cdccedbb5b4b12f8f795c907b741f221b.zip llvm-5e030f9cdccedbb5b4b12f8f795c907b741f221b.tar.gz llvm-5e030f9cdccedbb5b4b12f8f795c907b741f221b.tar.bz2 |
[TableGen] Avoid unnecessary std::string creations
Avoid unnecessary std::string creations in the TreePredicateFn getters and in CodeGenDAGPatterns::getSDNodeNamed
Differential Revision: https://reviews.llvm.org/D38624
llvm-svn: 315148
Diffstat (limited to 'llvm/utils/TableGen/CodeGenDAGPatterns.cpp')
-rw-r--r-- | llvm/utils/TableGen/CodeGenDAGPatterns.cpp | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/llvm/utils/TableGen/CodeGenDAGPatterns.cpp b/llvm/utils/TableGen/CodeGenDAGPatterns.cpp index 1b5c1ae..946d8a2 100644 --- a/llvm/utils/TableGen/CodeGenDAGPatterns.cpp +++ b/llvm/utils/TableGen/CodeGenDAGPatterns.cpp @@ -854,11 +854,11 @@ TreePredicateFn::TreePredicateFn(TreePattern *N) : PatFragRec(N) { ".td file corrupt: can't have a node predicate *and* an imm predicate"); } -std::string TreePredicateFn::getPredCode() const { +StringRef TreePredicateFn::getPredCode() const { return PatFragRec->getRecord()->getValueAsString("PredicateCode"); } -std::string TreePredicateFn::getImmCode() const { +StringRef TreePredicateFn::getImmCode() const { return PatFragRec->getRecord()->getValueAsString("ImmediateCode"); } @@ -880,16 +880,16 @@ std::string TreePredicateFn::getFnName() const { /// appropriate. std::string TreePredicateFn::getCodeToRunOnSDNode() const { // Handle immediate predicates first. - std::string ImmCode = getImmCode(); + StringRef ImmCode = getImmCode(); if (!ImmCode.empty()) { std::string Result = " int64_t Imm = cast<ConstantSDNode>(Node)->getSExtValue();\n"; - return Result + ImmCode; + return Result + ImmCode.str(); } // Handle arbitrary node predicates. assert(!getPredCode().empty() && "Don't have any predicate code!"); - std::string ClassName; + StringRef ClassName; if (PatFragRec->getOnlyTree()->isLeaf()) ClassName = "SDNode"; else { @@ -900,9 +900,9 @@ std::string TreePredicateFn::getCodeToRunOnSDNode() const { if (ClassName == "SDNode") Result = " SDNode *N = Node;\n"; else - Result = " auto *N = cast<" + ClassName + ">(Node);\n"; + Result = " auto *N = cast<" + ClassName.str() + ">(Node);\n"; - return Result + getPredCode(); + return Result + getPredCode().str(); } //===----------------------------------------------------------------------===// @@ -2564,7 +2564,7 @@ CodeGenDAGPatterns::CodeGenDAGPatterns(RecordKeeper &R) : VerifyInstructionFlags(); } -Record *CodeGenDAGPatterns::getSDNodeNamed(const std::string &Name) const { +Record *CodeGenDAGPatterns::getSDNodeNamed(StringRef Name) const { Record *N = Records.getDef(Name); if (!N || !N->isSubClassOf("SDNode")) PrintFatalError("Error getting SDNode '" + Name + "'!"); |