diff options
author | Jim Laskey <jlaskey@mac.com> | 2005-10-22 07:59:56 +0000 |
---|---|---|
committer | Jim Laskey <jlaskey@mac.com> | 2005-10-22 07:59:56 +0000 |
commit | 7dc02047fbb4b014e914458f54ea539c8ae58316 (patch) | |
tree | 14ba183cecf2768a9893d966967ad8cc94f81bee /utils/TableGen/SubtargetEmitter.cpp | |
parent | 4245f1d79068e589f8db5972917b2e393b60cc7d (diff) | |
download | external_llvm-7dc02047fbb4b014e914458f54ea539c8ae58316.zip external_llvm-7dc02047fbb4b014e914458f54ea539c8ae58316.tar.gz external_llvm-7dc02047fbb4b014e914458f54ea539c8ae58316.tar.bz2 |
Sort the features and processor lists for the sake of search (and maintainers.)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23879 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'utils/TableGen/SubtargetEmitter.cpp')
-rw-r--r-- | utils/TableGen/SubtargetEmitter.cpp | 29 |
1 files changed, 27 insertions, 2 deletions
diff --git a/utils/TableGen/SubtargetEmitter.cpp b/utils/TableGen/SubtargetEmitter.cpp index 8af7166..5318173 100644 --- a/utils/TableGen/SubtargetEmitter.cpp +++ b/utils/TableGen/SubtargetEmitter.cpp @@ -20,17 +20,42 @@ #include <set> using namespace llvm; -// Convenience types +// +// Convenience types. +// typedef std::vector<Record*> RecordList; typedef std::vector<Record*>::iterator RecordListIter; +// +// Record sort by name function. +// +struct LessRecord { + bool operator()(const Record *Rec1, const Record *Rec2) const { + return Rec1->getName() < Rec2->getName(); + } +}; +// +// Record sort by field "Name" function. +// +struct LessRecordFieldName { + bool operator()(const Record *Rec1, const Record *Rec2) const { + return Rec1->getValueAsString("Name") < Rec2->getValueAsString("Name"); + } +}; + + +// // SubtargetEmitter::run - Main subtarget enumeration emitter. // void SubtargetEmitter::run(std::ostream &OS) { EmitSourceFileHeader("Subtarget Enumeration Source Fragment", OS); + RecordList Features = Records.getAllDerivedDefinitions("SubtargetFeature"); + sort(Features.begin(), Features.end(), LessRecord()); + RecordList Processors = Records.getAllDerivedDefinitions("Processor"); + sort(Processors.begin(), Processors.end(), LessRecordFieldName()); OS << "namespace llvm {\n\n"; @@ -70,7 +95,7 @@ void SubtargetEmitter::run(std::ostream &OS) { OS << "};\n"; } - { // Feature key values + { // CPU key values OS << "\n\n" << "/// Sorted (by key) array of values for CPU subtype.\n" << "static const SubtargetFeatureKV SubTypeKV[] = {\n"; |