aboutsummaryrefslogtreecommitdiff
path: root/absl/container/internal/btree.h
diff options
context:
space:
mode:
authorAbseil Team <absl-team@google.com>2024-01-11 11:44:12 -0800
committerCopybara-Service <copybara-worker@google.com>2024-01-11 11:44:55 -0800
commit3acbe29b14428820cd18857284e082ac9926e314 (patch)
tree6ceab7b9e57019ccb1038f7064af1ccd65664fad /absl/container/internal/btree.h
parenta00f6d6d0ce50fbae36e639a58b1a8b78d09064c (diff)
downloadabseil-3acbe29b14428820cd18857284e082ac9926e314.tar.gz
abseil-3acbe29b14428820cd18857284e082ac9926e314.tar.bz2
abseil-3acbe29b14428820cd18857284e082ac9926e314.zip
Enable ABSL_BTREE_ENABLE_GENERATIONS and ABSL_SWISSTABLE_ENABLE_GENERATIONS with ABSL_HAVE_HWADDRESS_SANITIZER.
It will detect bugs similar to Asan. Also updated related tests to pass with HWASAN. They are still flaky because of nature of HWASAN algorithm, but test can be update to avoid flakiness, which I will do in followup patches. PiperOrigin-RevId: 597613798 Change-Id: Ic8af36a268ca041c002eb561b946aa2d9b93996a
Diffstat (limited to 'absl/container/internal/btree.h')
-rw-r--r--absl/container/internal/btree.h4
1 files changed, 3 insertions, 1 deletions
diff --git a/absl/container/internal/btree.h b/absl/container/internal/btree.h
index 3526471d..91df57a3 100644
--- a/absl/container/internal/btree.h
+++ b/absl/container/internal/btree.h
@@ -79,6 +79,7 @@ namespace container_internal {
#ifdef ABSL_BTREE_ENABLE_GENERATIONS
#error ABSL_BTREE_ENABLE_GENERATIONS cannot be directly set
#elif defined(ABSL_HAVE_ADDRESS_SANITIZER) || \
+ defined(ABSL_HAVE_HWADDRESS_SANITIZER) || \
defined(ABSL_HAVE_MEMORY_SANITIZER)
// When compiled in sanitizer mode, we add generation integers to the nodes and
// iterators. When iterators are used, we validate that the container has not
@@ -2856,7 +2857,8 @@ inline auto btree<P>::internal_emplace(iterator iter, Args &&...args)
}
}
(void)replaced_node;
-#ifdef ABSL_HAVE_ADDRESS_SANITIZER
+#if defined(ABSL_HAVE_ADDRESS_SANITIZER) || \
+ defined(ABSL_HAVE_HWADDRESS_SANITIZER)
if (!replaced_node) {
assert(iter.node_->is_leaf());
if (iter.node_->is_root()) {