Sort the features and processor lists for the sake of search (and maintainers.)
authorJim Laskey <jlaskey@mac.com>
Sat, 22 Oct 2005 07:59:56 +0000 (07:59 +0000)
committerJim Laskey <jlaskey@mac.com>
Sat, 22 Oct 2005 07:59:56 +0000 (07:59 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23879 91177308-0d34-0410-b5e6-96231b3b80d8

utils/TableGen/SubtargetEmitter.cpp

index 8af7166a3d374195634cdd36e276f24900217f7c..5318173b0d36470c667217f27098c8065bba5f85 100644 (file)
 #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";