From cce0d2c12b098a9b17c7f9238b6c2897406df52d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Sch=C3=A4pers?= Date: Mon, 1 Aug 2022 16:13:19 +0200 Subject: [PATCH] Supress "zero as null pointer constant" warning --- src/core/include/units/bits/algorithm.h | 3 +++ src/core/include/units/bits/external/hacks.h | 2 ++ src/core/include/units/symbol_text.h | 4 ++++ 3 files changed, 9 insertions(+) diff --git a/src/core/include/units/bits/algorithm.h b/src/core/include/units/bits/algorithm.h index 762bb7bc..1ac80362 100644 --- a/src/core/include/units/bits/algorithm.h +++ b/src/core/include/units/bits/algorithm.h @@ -80,8 +80,11 @@ constexpr auto lexicographical_compare_three_way(I1 f1, I1 l1, I2 f2, I2 l2, Cmp bool exhaust1 = (f1 == l1); bool exhaust2 = (f2 == l2); + UNITS_DIAGNOSTIC_PUSH + UNITS_DIAGNOSTIC_IGNORE_ZERO_AS_NULLPOINTER_CONSTANT for (; !exhaust1 && !exhaust2; exhaust1 = (++f1 == l1), exhaust2 = (++f2 == l2)) if (auto c = comp(*f1, *f2); c != 0) return c; + UNITS_DIAGNOSTIC_POP return !exhaust1 ? std::strong_ordering::greater : !exhaust2 ? std::strong_ordering::less diff --git a/src/core/include/units/bits/external/hacks.h b/src/core/include/units/bits/external/hacks.h index 8d142727..67c1086c 100644 --- a/src/core/include/units/bits/external/hacks.h +++ b/src/core/include/units/bits/external/hacks.h @@ -51,6 +51,7 @@ #define UNITS_DIAGNOSTIC_IGNORE_NON_TEMPLATE_FRIEND UNITS_DIAGNOSTIC_IGNORE("-Wnon-template-friend") #define UNITS_DIAGNOSTIC_IGNORE_SHADOW UNITS_DIAGNOSTIC_IGNORE("-Wshadow") #define UNITS_DIAGNOSTIC_IGNORE_UNREACHABLE +#define UNITS_DIAGNOSTIC_IGNORE_ZERO_AS_NULLPOINTER_CONSTANT UNITS_DIAGNOSTIC_IGNORE("-Wzero-as-nullpointer-constant") #else #define UNITS_DIAGNOSTIC_PUSH UNITS_PRAGMA(warning(push)) #define UNITS_DIAGNOSTIC_POP UNITS_PRAGMA(warning(pop)) @@ -63,6 +64,7 @@ #define UNITS_DIAGNOSTIC_IGNORE_NON_TEMPLATE_FRIEND #define UNITS_DIAGNOSTIC_IGNORE_SHADOW UNITS_DIAGNOSTIC_IGNORE(4459) #define UNITS_DIAGNOSTIC_IGNORE_UNREACHABLE UNITS_DIAGNOSTIC_IGNORE(4702) +#define UNITS_DIAGNOSTIC_IGNORE_ZERO_AS_NULLPOINTER_CONSTANT #endif #if _LIBCPP_VERSION diff --git a/src/core/include/units/symbol_text.h b/src/core/include/units/symbol_text.h index adf138e5..6eb71e6d 100644 --- a/src/core/include/units/symbol_text.h +++ b/src/core/include/units/symbol_text.h @@ -24,6 +24,7 @@ // IWYU pragma: begin_exports #include +#include #include #include #include @@ -146,7 +147,10 @@ struct basic_symbol_text { [[nodiscard]] friend constexpr auto operator<=>(const basic_symbol_text& lhs, const basic_symbol_text& rhs) noexcept { + UNITS_DIAGNOSTIC_PUSH + UNITS_DIAGNOSTIC_IGNORE_ZERO_AS_NULLPOINTER_CONSTANT if (const auto cmp = lhs.standard() <=> rhs.standard(); cmp != 0) return cmp; + UNITS_DIAGNOSTIC_POP return lhs.ascii() <=> rhs.ascii(); }