aboutsummaryrefslogtreecommitdiffstats
path: root/utils/TableGen/SubtargetEmitter.cpp
diff options
context:
space:
mode:
authorJim Laskey <jlaskey@mac.com>2005-10-22 07:59:56 +0000
committerJim Laskey <jlaskey@mac.com>2005-10-22 07:59:56 +0000
commit7dc02047fbb4b014e914458f54ea539c8ae58316 (patch)
tree14ba183cecf2768a9893d966967ad8cc94f81bee /utils/TableGen/SubtargetEmitter.cpp
parent4245f1d79068e589f8db5972917b2e393b60cc7d (diff)
downloadexternal_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.cpp29
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";