[compiler-rt] 862e719 - Reland "Replace bool operator== for VersionType in sanitizer_mac.h" (#135276)
via llvm-commits
llvm-commits at lists.llvm.org
Thu Apr 10 19:05:29 PDT 2025
Author: Vitaly Buka
Date: 2025-04-10T19:05:26-07:00
New Revision: 862e7190c9d4672d3adf1bbde95b556c8e2d7544
URL: https://github.com/llvm/llvm-project/commit/862e7190c9d4672d3adf1bbde95b556c8e2d7544
DIFF: https://github.com/llvm/llvm-project/commit/862e7190c9d4672d3adf1bbde95b556c8e2d7544.diff
LOG: Reland "Replace bool operator== for VersionType in sanitizer_mac.h" (#135276)
Fixes error: ISO C++20 considers use of overloaded operator '==' (with
operand types 'MacosVersion' and 'MacosVersion') to be ambiguous despite
there being a unique best viable function
[-Werror,-Wambiguous-reversed-operator].
This converts the comparison operator from a non-symmetric operator
(const VersionBase<VersionType>& (as "this") and const VersionType &).
into a symmetric operator
Relands #135068
Co-authored-by: Ivan Tadeu Ferreira Antunes Filho <antunesi at google.com>
Added:
Modified:
compiler-rt/lib/sanitizer_common/sanitizer_mac.h
Removed:
################################################################################
diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_mac.h b/compiler-rt/lib/sanitizer_common/sanitizer_mac.h
index f0a97d098eea0..b0e4ac7f40745 100644
--- a/compiler-rt/lib/sanitizer_common/sanitizer_mac.h
+++ b/compiler-rt/lib/sanitizer_common/sanitizer_mac.h
@@ -37,9 +37,6 @@ struct VersionBase {
VersionBase(u16 major, u16 minor) : major(major), minor(minor) {}
- bool operator==(const VersionType &other) const {
- return major == other.major && minor == other.minor;
- }
bool operator>=(const VersionType &other) const {
return major > other.major ||
(major == other.major && minor >= other.minor);
@@ -47,6 +44,12 @@ struct VersionBase {
bool operator<(const VersionType &other) const { return !(*this >= other); }
};
+template <typename VersionType>
+bool operator==(const VersionBase<VersionType> &self,
+ const VersionBase<VersionType> &other) {
+ return self.major == other.major && self.minor == other.minor;
+}
+
struct MacosVersion : VersionBase<MacosVersion> {
MacosVersion(u16 major, u16 minor) : VersionBase(major, minor) {}
};
More information about the llvm-commits
mailing list