[llvm] 90a26a4 - [llvm-tapi-diff] Apply stable sorting to output
Cyndy Ishida via llvm-commits
llvm-commits at lists.llvm.org
Wed Jun 9 13:10:21 PDT 2021
Author: Sam Powell
Date: 2021-06-09T13:09:47-07:00
New Revision: 90a26a41e9ce16a4d471d25c2f7b36b5538fb4ce
URL: https://github.com/llvm/llvm-project/commit/90a26a41e9ce16a4d471d25c2f7b36b5538fb4ce
DIFF: https://github.com/llvm/llvm-project/commit/90a26a41e9ce16a4d471d25c2f7b36b5538fb4ce.diff
LOG: [llvm-tapi-diff] Apply stable sorting to output
* For the output, the attributes within the target slice should be
grouped by the input order, then sorted by value ordering.
This is to fix current ubuntu buildbot inconsistences.
Added:
Modified:
llvm/tools/llvm-tapi-diff/DiffEngine.cpp
Removed:
################################################################################
diff --git a/llvm/tools/llvm-tapi-
diff /DiffEngine.cpp b/llvm/tools/llvm-tapi-
diff /DiffEngine.cpp
index bc9ee626d8fc..837ddb42bb25 100644
--- a/llvm/tools/llvm-tapi-
diff /DiffEngine.cpp
+++ b/llvm/tools/llvm-tapi-
diff /DiffEngine.cpp
@@ -439,6 +439,15 @@ T *castValues(const std::unique_ptr<AttributeDiff> &RawAttr) {
return CastAttr;
}
+template <typename T> void sortTargetValues(std::vector<T> &TargValues) {
+ llvm::sort(TargValues, [](const auto &ValA, const auto &ValB) {
+ return ValA.getOrder() < ValB.getOrder();
+ });
+ llvm::sort(TargValues, [](const auto &ValA, const auto &ValB) {
+ return ValA.getOrder() == ValB.getOrder() && ValA.getVal() < ValB.getVal();
+ });
+}
+
template <typename T>
void printVecVal(std::string Indent, const DiffOutput &Attr, raw_ostream &OS) {
if (Attr.Values.empty())
@@ -455,10 +464,8 @@ void printVecVal(std::string Indent, const DiffOutput &Attr, raw_ostream &OS) {
});
for (auto *Vec : SortedAttrs) {
- llvm::sort(Vec->TargValues, [](const auto &ValA, const auto &ValB) {
- return ValA.getOrder() == ValB.getOrder() &&
- ValA.getVal() < ValB.getVal();
- });
+ sortTargetValues<DiffScalarVal<StringRef, AD_Diff_Scalar_Str>>(
+ Vec->TargValues);
OS << Indent << "\t" << getTargetTripleName(Vec->Targ) << "\n";
for (auto &Item : Vec->TargValues)
Item.print(OS, Indent);
@@ -482,10 +489,7 @@ void printVecVal<DiffSymVec>(std::string Indent, const DiffOutput &Attr,
return ValA->Targ < ValB->Targ;
});
for (auto *SymVec : SortedAttrs) {
- llvm::sort(SymVec->TargValues, [](const auto &ValA, const auto &ValB) {
- return ValA.getOrder() == ValB.getOrder() &&
- ValA.getVal() < ValB.getVal();
- });
+ sortTargetValues<SymScalar>(SymVec->TargValues);
OS << Indent << "\t" << getTargetTripleName(SymVec->Targ) << "\n";
for (auto &Item : SymVec->TargValues)
Item.print(OS, Indent, SymVec->Targ);
More information about the llvm-commits
mailing list