mirror of
https://github.com/RPCS3/llvm.git
synced 2025-01-31 15:53:42 +00:00
[TableGen] Remove some copies around PatternToMatch.
Summary: This patch does a few things that should remove some copies around PatternsToMatch. These were noticed while reviewing code for D34341. Change constructor to take Dstregs by value and move it into the class. Change one of the callers to add std::move to the argument so that it gets moved. Make AddPatternToMatch take PatternToMatch by rvalue reference so we can move it into the PatternsToMatch vector. I believe we should have a implicit default move constructor available on PatternToMatch. I chose rvalue reference because both callers call it with temporaries already. Reviewers: RKSimon, aymanmus, spatel Reviewed By: aymanmus Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D34411 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306251 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
0b2cfb74b6
commit
3ace6d8a95
@ -3220,7 +3220,7 @@ static void FindNames(const TreePatternNode *P,
|
||||
}
|
||||
|
||||
void CodeGenDAGPatterns::AddPatternToMatch(TreePattern *Pattern,
|
||||
const PatternToMatch &PTM) {
|
||||
PatternToMatch &&PTM) {
|
||||
// Do some sanity checking on the pattern we're about to match.
|
||||
std::string Reason;
|
||||
if (!PTM.getSrcPattern()->canPatternMatch(Reason, *this)) {
|
||||
@ -3259,7 +3259,7 @@ void CodeGenDAGPatterns::AddPatternToMatch(TreePattern *Pattern,
|
||||
SrcNames[Entry.first].second == 1)
|
||||
Pattern->error("Pattern has dead named input: $" + Entry.first);
|
||||
|
||||
PatternsToMatch.push_back(PTM);
|
||||
PatternsToMatch.push_back(std::move(PTM));
|
||||
}
|
||||
|
||||
|
||||
@ -3551,14 +3551,12 @@ void CodeGenDAGPatterns::ParsePatterns() {
|
||||
TreePattern Temp(Result.getRecord(), DstPattern, false, *this);
|
||||
Temp.InferAllTypes();
|
||||
|
||||
|
||||
AddPatternToMatch(Pattern,
|
||||
PatternToMatch(CurPattern,
|
||||
CurPattern->getValueAsListInit("Predicates"),
|
||||
Pattern->getTree(0),
|
||||
Temp.getOnlyTree(), InstImpResults,
|
||||
CurPattern->getValueAsInt("AddedComplexity"),
|
||||
CurPattern->getID()));
|
||||
AddPatternToMatch(
|
||||
Pattern,
|
||||
PatternToMatch(
|
||||
CurPattern, CurPattern->getValueAsListInit("Predicates"),
|
||||
Pattern->getTree(0), Temp.getOnlyTree(), std::move(InstImpResults),
|
||||
CurPattern->getValueAsInt("AddedComplexity"), CurPattern->getID()));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -684,12 +684,12 @@ public:
|
||||
/// processed to produce isel.
|
||||
class PatternToMatch {
|
||||
public:
|
||||
PatternToMatch(Record *srcrecord, ListInit *preds,
|
||||
TreePatternNode *src, TreePatternNode *dst,
|
||||
const std::vector<Record*> &dstregs,
|
||||
PatternToMatch(Record *srcrecord, ListInit *preds, TreePatternNode *src,
|
||||
TreePatternNode *dst, std::vector<Record *> dstregs,
|
||||
int complexity, unsigned uid)
|
||||
: SrcRecord(srcrecord), Predicates(preds), SrcPattern(src), DstPattern(dst),
|
||||
Dstregs(dstregs), AddedComplexity(complexity), ID(uid) {}
|
||||
: SrcRecord(srcrecord), Predicates(preds), SrcPattern(src),
|
||||
DstPattern(dst), Dstregs(std::move(dstregs)),
|
||||
AddedComplexity(complexity), ID(uid) {}
|
||||
|
||||
Record *SrcRecord; // Originating Record for the pattern.
|
||||
ListInit *Predicates; // Top level predicate conditions to match.
|
||||
@ -853,7 +853,7 @@ private:
|
||||
void GenerateVariants();
|
||||
void VerifyInstructionFlags();
|
||||
|
||||
void AddPatternToMatch(TreePattern *Pattern, const PatternToMatch &PTM);
|
||||
void AddPatternToMatch(TreePattern *Pattern, PatternToMatch &&PTM);
|
||||
void FindPatternInputsAndOutputs(TreePattern *I, TreePatternNode *Pat,
|
||||
std::map<std::string,
|
||||
TreePatternNode*> &InstInputs,
|
||||
|
Loading…
x
Reference in New Issue
Block a user