Avoid multiplication in RandomSeed(). PiperOrigin-RevId: 938127360 Change-Id: I8d397e778cd1031c3a622017bfff3e350507e652
diff --git a/absl/container/internal/raw_hash_set.cc b/absl/container/internal/raw_hash_set.cc index c8936cf..5277f6e 100644 --- a/absl/container/internal/raw_hash_set.cc +++ b/absl/container/internal/raw_hash_set.cc
@@ -76,15 +76,16 @@ // Returns "random" seed. inline size_t RandomSeed() { + constexpr size_t kIncrement = 0xad53; #ifdef ABSL_HAVE_THREAD_LOCAL static thread_local size_t counter = 0; - size_t value = ++counter; + counter += kIncrement; + size_t value = counter; #else // ABSL_HAVE_THREAD_LOCAL static std::atomic<size_t> counter(0); - size_t value = counter.fetch_add(1, std::memory_order_relaxed); + size_t value = counter.fetch_add(kIncrement, std::memory_order_relaxed); #endif // ABSL_HAVE_THREAD_LOCAL - return (value * size_t{0xad53}) ^ - static_cast<size_t>(reinterpret_cast<uintptr_t>(&counter)); + return value ^ static_cast<size_t>(reinterpret_cast<uintptr_t>(&counter)); } bool ShouldRehashForBugDetection(size_t capacity) {