Skip to content

Commit d58c793

Browse files
authored
Pass: Do not use llvm::array_pod_sort to sort OpPassManagers.
OpPassManager contains a field of type std::unique_ptr which is not guaranteed to be trivially relocatable so we cannot use llvm::array_pod_sort. Reviewers: River707, joker-eph Reviewed By: joker-eph Pull Request: #129968
1 parent 5f70ed5 commit d58c793

File tree

1 file changed

+7
-7
lines changed

1 file changed

+7
-7
lines changed

mlir/lib/Pass/Pass.cpp

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -678,16 +678,16 @@ LogicalResult OpToOpPassAdaptor::tryMergeInto(MLIRContext *ctx,
678678
mgrs.clear();
679679

680680
// After coalescing, sort the pass managers within rhs by name.
681-
auto compareFn = [](const OpPassManager *lhs, const OpPassManager *rhs) {
681+
auto compareFn = [](const OpPassManager &lhs, const OpPassManager &rhs) {
682682
// Order op-specific pass managers first and op-agnostic pass managers last.
683-
if (std::optional<StringRef> lhsName = lhs->getOpName()) {
684-
if (std::optional<StringRef> rhsName = rhs->getOpName())
685-
return lhsName->compare(*rhsName);
686-
return -1; // lhs(op-specific) < rhs(op-agnostic)
683+
if (std::optional<StringRef> lhsName = lhs.getOpName()) {
684+
if (std::optional<StringRef> rhsName = rhs.getOpName())
685+
return *lhsName < *rhsName;
686+
return true; // lhs(op-specific) < rhs(op-agnostic)
687687
}
688-
return 1; // lhs(op-agnostic) > rhs(op-specific)
688+
return false; // lhs(op-agnostic) > rhs(op-specific)
689689
};
690-
llvm::array_pod_sort(rhs.mgrs.begin(), rhs.mgrs.end(), compareFn);
690+
std::sort(rhs.mgrs.begin(), rhs.mgrs.end(), compareFn);
691691
return success();
692692
}
693693

0 commit comments

Comments
 (0)