mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-03-01 01:30:36 +00:00
Refactor Record* by-ID comparator to Record.h
This is a generally useful utility; there's no reason to have it hidden in CodeGenDAGPatterns.cpp. Also, rename it to fit the other comparators in Record.h Review by Jakob. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164189 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
2811ae66a8
commit
90fee07298
@ -1609,6 +1609,16 @@ struct LessRecord {
|
||||
}
|
||||
};
|
||||
|
||||
/// LessRecordByID - Sorting predicate to sort record pointers by their
|
||||
/// unique ID. If you just need a deterministic order, use this, since it
|
||||
/// just compares two `unsigned`; the other sorting predicates require
|
||||
/// string manipulation.
|
||||
struct LessRecordByID {
|
||||
bool operator()(const Record *LHS, const Record *RHS) const {
|
||||
return LHS->getID() < RHS->getID();
|
||||
}
|
||||
};
|
||||
|
||||
/// LessRecordFieldName - Sorting predicate to sort record pointers by their
|
||||
/// name field.
|
||||
///
|
||||
|
@ -574,10 +574,6 @@ bool EEVT::TypeSet::EnforceVectorSubVectorTypeIs(EEVT::TypeSet &VTOperand,
|
||||
//===----------------------------------------------------------------------===//
|
||||
// Helpers for working with extended types.
|
||||
|
||||
bool RecordPtrCmp::operator()(const Record *LHS, const Record *RHS) const {
|
||||
return LHS->getID() < RHS->getID();
|
||||
}
|
||||
|
||||
/// Dependent variable map for CodeGenDAGPattern variant generation
|
||||
typedef std::map<std::string, int> DepVarMap;
|
||||
|
||||
@ -2748,7 +2744,7 @@ void CodeGenDAGPatterns::ParseInstructions() {
|
||||
}
|
||||
|
||||
// If we can, convert the instructions to be patterns that are matched!
|
||||
for (std::map<Record*, DAGInstruction, RecordPtrCmp>::iterator II =
|
||||
for (std::map<Record*, DAGInstruction, LessRecordByID>::iterator II =
|
||||
Instructions.begin(),
|
||||
E = Instructions.end(); II != E; ++II) {
|
||||
DAGInstruction &TheInst = II->second;
|
||||
|
@ -661,23 +661,18 @@ public:
|
||||
unsigned getPatternComplexity(const CodeGenDAGPatterns &CGP) const;
|
||||
};
|
||||
|
||||
// Deterministic comparison of Record*.
|
||||
struct RecordPtrCmp {
|
||||
bool operator()(const Record *LHS, const Record *RHS) const;
|
||||
};
|
||||
|
||||
class CodeGenDAGPatterns {
|
||||
RecordKeeper &Records;
|
||||
CodeGenTarget Target;
|
||||
std::vector<CodeGenIntrinsic> Intrinsics;
|
||||
std::vector<CodeGenIntrinsic> TgtIntrinsics;
|
||||
|
||||
std::map<Record*, SDNodeInfo, RecordPtrCmp> SDNodes;
|
||||
std::map<Record*, std::pair<Record*, std::string>, RecordPtrCmp> SDNodeXForms;
|
||||
std::map<Record*, ComplexPattern, RecordPtrCmp> ComplexPatterns;
|
||||
std::map<Record*, TreePattern*, RecordPtrCmp> PatternFragments;
|
||||
std::map<Record*, DAGDefaultOperand, RecordPtrCmp> DefaultOperands;
|
||||
std::map<Record*, DAGInstruction, RecordPtrCmp> Instructions;
|
||||
std::map<Record*, SDNodeInfo, LessRecordByID> SDNodes;
|
||||
std::map<Record*, std::pair<Record*, std::string>, LessRecordByID> SDNodeXForms;
|
||||
std::map<Record*, ComplexPattern, LessRecordByID> ComplexPatterns;
|
||||
std::map<Record*, TreePattern*, LessRecordByID> PatternFragments;
|
||||
std::map<Record*, DAGDefaultOperand, LessRecordByID> DefaultOperands;
|
||||
std::map<Record*, DAGInstruction, LessRecordByID> Instructions;
|
||||
|
||||
// Specific SDNode definitions:
|
||||
Record *intrinsic_void_sdnode;
|
||||
@ -708,7 +703,7 @@ public:
|
||||
return SDNodeXForms.find(R)->second;
|
||||
}
|
||||
|
||||
typedef std::map<Record*, NodeXForm, RecordPtrCmp>::const_iterator
|
||||
typedef std::map<Record*, NodeXForm, LessRecordByID>::const_iterator
|
||||
nx_iterator;
|
||||
nx_iterator nx_begin() const { return SDNodeXForms.begin(); }
|
||||
nx_iterator nx_end() const { return SDNodeXForms.end(); }
|
||||
@ -758,7 +753,7 @@ public:
|
||||
return PatternFragments.find(R)->second;
|
||||
}
|
||||
|
||||
typedef std::map<Record*, TreePattern*, RecordPtrCmp>::const_iterator
|
||||
typedef std::map<Record*, TreePattern*, LessRecordByID>::const_iterator
|
||||
pf_iterator;
|
||||
pf_iterator pf_begin() const { return PatternFragments.begin(); }
|
||||
pf_iterator pf_end() const { return PatternFragments.end(); }
|
||||
|
Loading…
x
Reference in New Issue
Block a user