diff --git a/llvm/include/llvm/TableGen/Record.h b/llvm/include/llvm/TableGen/Record.h --- a/llvm/include/llvm/TableGen/Record.h +++ b/llvm/include/llvm/TableGen/Record.h @@ -2033,6 +2033,15 @@ } }; +/// Sorting predicate to sort record pointers by their +/// FieldName field. +struct LessRecordFieldFieldName { + bool operator()(const Record *Rec1, const Record *Rec2) const { + return Rec1->getValueAsString("FieldName") < + Rec2->getValueAsString("FieldName"); + } +}; + struct LessRecordRegister { struct RecordParts { SmallVector, 4> Parts; diff --git a/llvm/utils/TableGen/SubtargetEmitter.cpp b/llvm/utils/TableGen/SubtargetEmitter.cpp --- a/llvm/utils/TableGen/SubtargetEmitter.cpp +++ b/llvm/utils/TableGen/SubtargetEmitter.cpp @@ -202,7 +202,7 @@ std::vector FeatureList = Records.getAllDerivedDefinitions("SubtargetFeature"); - llvm::sort(FeatureList, LessRecordFieldName()); + llvm::sort(FeatureList, LessRecordFieldFieldName()); for (const Record *Feature : FeatureList) { const StringRef FieldName = Feature->getValueAsString("FieldName");