From 192e9834bc6f3aa52a0bad24ef96e658d9ce882f Mon Sep 17 00:00:00 2001 From: Evan Brown Date: Fri, 7 Oct 2022 11:09:35 -0700 Subject: Add static_cast to the sources for trivial relocations to avoid spurious -Wdynamic-class-memaccess errors in the presence of other compilation errors. PiperOrigin-RevId: 479625866 Change-Id: Ia10ad35a2f58ffb3f36f996d357d5e126b181e1c --- absl/container/internal/common_policy_traits.h | 5 +++-- absl/container/internal/container_memory.h | 5 +++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/absl/container/internal/common_policy_traits.h b/absl/container/internal/common_policy_traits.h index c99e68f4..0fd4866e 100644 --- a/absl/container/internal/common_policy_traits.h +++ b/absl/container/internal/common_policy_traits.h @@ -93,11 +93,12 @@ struct common_policy_traits { slot_type* old_slot, char) { #if defined(__cpp_lib_launder) && __cpp_lib_launder >= 201606 if (absl::is_trivially_relocatable()) { - // TODO(b/247130232): remove cast after fixing class-memaccess warning. + // TODO(b/247130232,b/251814870): remove casts after fixing warnings. std::memcpy(static_cast( std::launder(const_cast*>( &element(new_slot)))), - &element(old_slot), sizeof(value_type)); + static_cast(&element(old_slot)), + sizeof(value_type)); return; } #endif diff --git a/absl/container/internal/container_memory.h b/absl/container/internal/container_memory.h index c29c533b..bfa4ff93 100644 --- a/absl/container/internal/container_memory.h +++ b/absl/container/internal/container_memory.h @@ -428,9 +428,10 @@ struct map_slot_policy { emplace(new_slot); #if defined(__cpp_lib_launder) && __cpp_lib_launder >= 201606 if (absl::is_trivially_relocatable()) { - // TODO(b/247130232): remove cast after fixing class-memaccess warning. + // TODO(b/247130232,b/251814870): remove casts after fixing warnings. std::memcpy(static_cast(std::launder(&new_slot->value)), - &old_slot->value, sizeof(value_type)); + static_cast(&old_slot->value), + sizeof(value_type)); return; } #endif -- cgit v1.2.3