lib/Target/SubtargetFeature.cpp asserts that the FeatureKV[] table be sorted

by its first field, but TableGen doesn't actually enforce creating it that 
way. TableGen sorts the records that will be used to create it by the names 
of the records, not the Name field of those records.

This patch corrects the sort to use the "Name" field of the record as the 
sort key.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56106 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Jim Grosbach 2008-09-11 17:05:32 +00:00
parent 1abe60b9be
commit 7c9a7728d9
2 changed files with 3 additions and 2 deletions

View File

@ -1183,7 +1183,8 @@ struct LessRecord {
} }
}; };
/// LessRecord - Sorting predicate to sort record pointers by their name field. /// LessRecordFieldName - Sorting predicate to sort record pointers by their
/// name field.
/// ///
struct LessRecordFieldName { struct LessRecordFieldName {
bool operator()(const Record *Rec1, const Record *Rec2) const { bool operator()(const Record *Rec1, const Record *Rec2) const {

View File

@ -61,7 +61,7 @@ void SubtargetEmitter::FeatureKeyValues(std::ostream &OS) {
// Gather and sort all the features // Gather and sort all the features
std::vector<Record*> FeatureList = std::vector<Record*> FeatureList =
Records.getAllDerivedDefinitions("SubtargetFeature"); Records.getAllDerivedDefinitions("SubtargetFeature");
std::sort(FeatureList.begin(), FeatureList.end(), LessRecord()); std::sort(FeatureList.begin(), FeatureList.end(), LessRecordFieldName());
// Begin feature table // Begin feature table
OS << "// Sorted (by key) array of values for CPU features.\n" OS << "// Sorted (by key) array of values for CPU features.\n"