-
Notifications
You must be signed in to change notification settings - Fork 14.9k
[lld] Use std::tie to implement comparison operators (NFC) #143726
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[lld] Use std::tie to implement comparison operators (NFC) #143726
Conversation
std::tie facilitates lexicographical comparisons through std::tuple's built-in operator< and operator>.
@llvm/pr-subscribers-lld-elf @llvm/pr-subscribers-lld Author: Kazu Hirata (kazutakahirata) Changesstd::tie facilitates lexicographical comparisons through std::tuple's Full diff: https://github.com/llvm/llvm-project/pull/143726.diff 2 Files Affected:
diff --git a/lld/ELF/SyntheticSections.cpp b/lld/ELF/SyntheticSections.cpp
index 785a56cdb349e..0a9c7a081eb8b 100644
--- a/lld/ELF/SyntheticSections.cpp
+++ b/lld/ELF/SyntheticSections.cpp
@@ -1939,11 +1939,8 @@ bool AndroidPackedRelocationSection<ELFT>::updateAllocSize(Ctx &ctx) {
// For Rela, we also want to sort by r_addend when r_info is the same. This
// enables us to group by r_addend as well.
llvm::sort(nonRelatives, [](const Elf_Rela &a, const Elf_Rela &b) {
- if (a.r_info != b.r_info)
- return a.r_info < b.r_info;
- if (a.r_addend != b.r_addend)
- return a.r_addend < b.r_addend;
- return a.r_offset < b.r_offset;
+ return std::tie(a.r_info, a.r_addend, a.r_offset) <
+ std::tie(b.r_info, b.r_addend, b.r_offset);
});
// Group relocations with the same r_info. Note that each group emits a group
diff --git a/lld/MachO/UnwindInfoSection.cpp b/lld/MachO/UnwindInfoSection.cpp
index 624464e41d77c..6e9f6c2aba749 100644
--- a/lld/MachO/UnwindInfoSection.cpp
+++ b/lld/MachO/UnwindInfoSection.cpp
@@ -535,11 +535,9 @@ void UnwindInfoSectionImpl::finalize() {
llvm::sort(commonEncodings,
[](const std::pair<compact_unwind_encoding_t, size_t> &a,
const std::pair<compact_unwind_encoding_t, size_t> &b) {
- if (a.second == b.second)
- // When frequencies match, secondarily sort on encoding
- // to maintain parity with validate-unwind-info.py
- return a.first > b.first;
- return a.second > b.second;
+ // When frequencies match, secondarily sort on encoding
+ // to maintain parity with validate-unwind-info.py
+ return std::tie(a.second, a.first) > std::tie(b.second, b.first);
});
// Truncate the vector to 127 elements.
|
@llvm/pr-subscribers-lld-macho Author: Kazu Hirata (kazutakahirata) Changesstd::tie facilitates lexicographical comparisons through std::tuple's Full diff: https://github.com/llvm/llvm-project/pull/143726.diff 2 Files Affected:
diff --git a/lld/ELF/SyntheticSections.cpp b/lld/ELF/SyntheticSections.cpp
index 785a56cdb349e..0a9c7a081eb8b 100644
--- a/lld/ELF/SyntheticSections.cpp
+++ b/lld/ELF/SyntheticSections.cpp
@@ -1939,11 +1939,8 @@ bool AndroidPackedRelocationSection<ELFT>::updateAllocSize(Ctx &ctx) {
// For Rela, we also want to sort by r_addend when r_info is the same. This
// enables us to group by r_addend as well.
llvm::sort(nonRelatives, [](const Elf_Rela &a, const Elf_Rela &b) {
- if (a.r_info != b.r_info)
- return a.r_info < b.r_info;
- if (a.r_addend != b.r_addend)
- return a.r_addend < b.r_addend;
- return a.r_offset < b.r_offset;
+ return std::tie(a.r_info, a.r_addend, a.r_offset) <
+ std::tie(b.r_info, b.r_addend, b.r_offset);
});
// Group relocations with the same r_info. Note that each group emits a group
diff --git a/lld/MachO/UnwindInfoSection.cpp b/lld/MachO/UnwindInfoSection.cpp
index 624464e41d77c..6e9f6c2aba749 100644
--- a/lld/MachO/UnwindInfoSection.cpp
+++ b/lld/MachO/UnwindInfoSection.cpp
@@ -535,11 +535,9 @@ void UnwindInfoSectionImpl::finalize() {
llvm::sort(commonEncodings,
[](const std::pair<compact_unwind_encoding_t, size_t> &a,
const std::pair<compact_unwind_encoding_t, size_t> &b) {
- if (a.second == b.second)
- // When frequencies match, secondarily sort on encoding
- // to maintain parity with validate-unwind-info.py
- return a.first > b.first;
- return a.second > b.second;
+ // When frequencies match, secondarily sort on encoding
+ // to maintain parity with validate-unwind-info.py
+ return std::tie(a.second, a.first) > std::tie(b.second, b.first);
});
// Truncate the vector to 127 elements.
|
std::tie facilitates lexicographical comparisons through std::tuple's built-in operator< and operator>.
std::tie facilitates lexicographical comparisons through std::tuple's built-in operator< and operator>.
std::tie facilitates lexicographical comparisons through std::tuple's
built-in operator< and operator>.