From e543f9d201986906e207676a495b8821b0cf5ae1 Mon Sep 17 00:00:00 2001 From: CEL Dev Team Date: Wed, 9 Jul 2025 10:32:28 -0700 Subject: [PATCH] Suppress clang warning for direct memory write in value_variant.h. PiperOrigin-RevId: 781114095 --- common/values/value_variant.h | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/common/values/value_variant.h b/common/values/value_variant.h index cebacbfe5..6f4773da1 100644 --- a/common/values/value_variant.h +++ b/common/values/value_variant.h @@ -732,11 +732,14 @@ class alignas(kValueVariantAlign) CEL_COMMON_INTERNAL_VALUE_VARIANT_TRIVIAL_ABI const bool rhs_trivial = (rhs.flags_ & ValueFlags::kNonTrivial) == ValueFlags::kNone; if (lhs_trivial && rhs_trivial) { +// We validated the instances can be copied byte-wise at runtime, but compilers +// warn since this is not safe in the general case. #if defined(__GNUC__) && !defined(__clang__) -// We validated the instances can be copied byte-wise at runtime, but GCC -// warns since this is not safe in the general case. #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wclass-memaccess" +#elif defined(__clang__) +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wnontrivial-memcall" #endif alignas(ValueVariant) std::byte tmp[sizeof(ValueVariant)]; // NOLINTNEXTLINE(bugprone-undefined-memory-manipulation) @@ -748,6 +751,8 @@ class alignas(kValueVariantAlign) CEL_COMMON_INTERNAL_VALUE_VARIANT_TRIVIAL_ABI std::memcpy(std::addressof(rhs), tmp, sizeof(ValueVariant)); #if defined(__GNUC__) && !defined(__clang__) #pragma GCC diagnostic pop +#elif defined(__clang__) +#pragma clang diagnostic pop #endif } else { SlowSwap(lhs, rhs, lhs_trivial, rhs_trivial);