From 4167eab063636a1fadcd571e0a762ff67d742c25 Mon Sep 17 00:00:00 2001 From: Abseil Team Date: Wed, 29 Sep 2021 09:40:33 -0700 Subject: [PATCH] Export of internal Abseil changes -- 506fa3e10b3d8399ad937c32ecea26d1ad4e62bb by Abseil Team : Disable ABSL_HAVE_STD_IS_TRIVIALLY_ASSIGNABLE when GCC < 8.2.0 is used with libc++ PiperOrigin-RevId: 399707056 -- 656b7c7cee87f46a4bc7953618796f82da08e62c by Derek Mauro : Remove the MSVC flag implementation from flag.h to help clarify that methods on absl::Flag are not part of the public API PiperOrigin-RevId: 399584678 -- a92a9bc156303bc663b84c4b704891ec8f67e333 by Abseil Team : Get rid of MemcpyIfAllowed while continuing to suppress erroneous warnings PiperOrigin-RevId: 399468864 -- 5f9a66895f707ba001fb51b88c0c6025f8c872a3 by Abseil Team : Use feature testing to check for availability of invoke_result. Feature testing should be available by C++20, which removes invoke_result. https://en.cppreference.com/w/cpp/feature_test PiperOrigin-RevId: 399447373 -- 946c0a502b4499dbfcabf1ab93ddde0048288fb4 by CJ Johnson : Add rvalue-reference qualifier to the Commit method on ConstructionTransaction PiperOrigin-RevId: 399442206 -- 726a4d036eff49aeb6fd0ca2b1775699b6844395 by Greg Falcon : Internal change PiperOrigin-RevId: 399441870 -- 1df6d3f659b88dbac13c3d8e13db23bb3844ece2 by Abseil Team : Clang-format whitespace changes PiperOrigin-RevId: 399281271 -- 4a828cde95a07421d699ebac775b37810624214f by Derek Mauro : Internal change PiperOrigin-RevId: 399234071 -- e520c72b34ba2f98668c889139001f8276243d31 by Greg Falcon : Import of CCTZ from GitHub. PiperOrigin-RevId: 399233662 GitOrigin-RevId: 506fa3e10b3d8399ad937c32ecea26d1ad4e62bb Change-Id: I92b9176d2387c08eb167f9268efa78b55b8e09c2 --- absl/base/config.h | 12 +- absl/container/internal/inlined_vector.h | 30 ++--- absl/flags/BUILD.bazel | 1 + absl/flags/CMakeLists.txt | 1 + absl/flags/flag.h | 96 +-------------- absl/flags/internal/flag_msvc.inc | 116 ++++++++++++++++++ absl/hash/internal/hash.cc | 6 +- absl/hash/internal/hash.h | 6 +- absl/meta/type_traits.h | 3 +- absl/strings/cord.h | 16 +-- absl/time/internal/cctz/src/tzfile.h | 2 +- absl/time/internal/cctz/testdata/version | 2 +- .../cctz/testdata/zoneinfo/Africa/Accra | Bin 700 -> 130 bytes .../cctz/testdata/zoneinfo/America/Anguilla | Bin 130 -> 177 bytes .../cctz/testdata/zoneinfo/America/Antigua | Bin 130 -> 177 bytes .../cctz/testdata/zoneinfo/America/Aruba | Bin 151 -> 177 bytes .../cctz/testdata/zoneinfo/America/Atikokan | Bin 224 -> 149 bytes .../cctz/testdata/zoneinfo/America/Barbados | Bin 231 -> 278 bytes .../testdata/zoneinfo/America/Blanc-Sablon | Bin 205 -> 177 bytes .../testdata/zoneinfo/America/Coral_Harbour | Bin 224 -> 149 bytes .../cctz/testdata/zoneinfo/America/Creston | Bin 158 -> 240 bytes .../cctz/testdata/zoneinfo/America/Curacao | Bin 151 -> 177 bytes .../cctz/testdata/zoneinfo/America/Dominica | Bin 130 -> 177 bytes .../cctz/testdata/zoneinfo/America/Grenada | Bin 130 -> 177 bytes .../cctz/testdata/zoneinfo/America/Guadeloupe | Bin 130 -> 177 bytes .../cctz/testdata/zoneinfo/America/Guyana | Bin 172 -> 181 bytes .../cctz/testdata/zoneinfo/America/Kralendijk | Bin 151 -> 177 bytes .../testdata/zoneinfo/America/Lower_Princes | Bin 151 -> 177 bytes .../cctz/testdata/zoneinfo/America/Marigot | Bin 130 -> 177 bytes .../cctz/testdata/zoneinfo/America/Montserrat | Bin 130 -> 177 bytes .../cctz/testdata/zoneinfo/America/Nassau | Bin 1006 -> 1717 bytes .../testdata/zoneinfo/America/Port_of_Spain | Bin 130 -> 177 bytes .../testdata/zoneinfo/America/St_Barthelemy | Bin 130 -> 177 bytes .../cctz/testdata/zoneinfo/America/St_Kitts | Bin 130 -> 177 bytes .../cctz/testdata/zoneinfo/America/St_Lucia | Bin 130 -> 177 bytes .../cctz/testdata/zoneinfo/America/St_Thomas | Bin 130 -> 177 bytes .../cctz/testdata/zoneinfo/America/St_Vincent | Bin 130 -> 177 bytes .../cctz/testdata/zoneinfo/America/Tortola | Bin 130 -> 177 bytes .../cctz/testdata/zoneinfo/America/Virgin | Bin 130 -> 177 bytes .../zoneinfo/Antarctica/DumontDUrville | Bin 152 -> 154 bytes .../cctz/testdata/zoneinfo/Antarctica/Syowa | Bin 133 -> 133 bytes .../cctz/testdata/zoneinfo/Asia/Amman | Bin 787 -> 922 bytes .../cctz/testdata/zoneinfo/Atlantic/Azores | Bin 1435 -> 1453 bytes .../cctz/testdata/zoneinfo/Atlantic/Jan_Mayen | Bin 676 -> 705 bytes .../cctz/testdata/zoneinfo/Atlantic/Madeira | Bin 1435 -> 1453 bytes .../cctz/testdata/zoneinfo/Europe/Lisbon | Bin 1436 -> 1454 bytes .../cctz/testdata/zoneinfo/Pacific/Apia | Bin 268 -> 407 bytes .../cctz/testdata/zoneinfo/Pacific/Enderbury | Bin 172 -> 172 bytes .../cctz/testdata/zoneinfo/Pacific/Kanton | Bin 0 -> 172 bytes .../cctz/testdata/zoneinfo/Pacific/Niue | Bin 175 -> 154 bytes .../cctz/testdata/zoneinfo/Pacific/Rarotonga | Bin 391 -> 406 bytes .../cctz/testdata/zoneinfo/Pacific/Tongatapu | Bin 237 -> 237 bytes .../internal/cctz/testdata/zoneinfo/Portugal | Bin 1436 -> 1454 bytes .../cctz/testdata/zoneinfo/zone1970.tab | 29 ++--- 54 files changed, 158 insertions(+), 162 deletions(-) create mode 100644 absl/flags/internal/flag_msvc.inc create mode 100644 absl/time/internal/cctz/testdata/zoneinfo/Pacific/Kanton diff --git a/absl/base/config.h b/absl/base/config.h index 5d3edcd2..0562cddb 100644 --- a/absl/base/config.h +++ b/absl/base/config.h @@ -243,15 +243,17 @@ static_assert(ABSL_INTERNAL_INLINE_NAMESPACE_STR[0] != 'h' || // // Checks whether `std::is_trivially_copy_assignable` is supported. -// Notes: Clang with libc++ supports these features, as does gcc >= 5.1 with -// either libc++ or libstdc++, and Visual Studio (but not NVCC). +// Notes: Clang with libc++ supports these features, as does gcc >= 7.4 with +// libstdc++, or gcc >= 8.2 with libc++, and Visual Studio (but not NVCC). #if defined(ABSL_HAVE_STD_IS_TRIVIALLY_CONSTRUCTIBLE) #error ABSL_HAVE_STD_IS_TRIVIALLY_CONSTRUCTIBLE cannot be directly set #elif defined(ABSL_HAVE_STD_IS_TRIVIALLY_ASSIGNABLE) #error ABSL_HAVE_STD_IS_TRIVIALLY_ASSIGNABLE cannot directly set -#elif (defined(__clang__) && defined(_LIBCPP_VERSION)) || \ - (!defined(__clang__) && ABSL_INTERNAL_HAVE_MIN_GNUC_VERSION(7, 4) && \ - (defined(_LIBCPP_VERSION) || defined(__GLIBCXX__))) || \ +#elif (defined(__clang__) && defined(_LIBCPP_VERSION)) || \ + (!defined(__clang__) && \ + ((ABSL_INTERNAL_HAVE_MIN_GNUC_VERSION(7, 4) && defined(__GLIBCXX__)) || \ + (ABSL_INTERNAL_HAVE_MIN_GNUC_VERSION(8, 2) && \ + defined(_LIBCPP_VERSION)))) || \ (defined(_MSC_VER) && !defined(__NVCC__)) #define ABSL_HAVE_STD_IS_TRIVIALLY_CONSTRUCTIBLE 1 #define ABSL_HAVE_STD_IS_TRIVIALLY_ASSIGNABLE 1 diff --git a/absl/container/internal/inlined_vector.h b/absl/container/internal/inlined_vector.h index e2ecf46c..1d7d6cda 100644 --- a/absl/container/internal/inlined_vector.h +++ b/absl/container/internal/inlined_vector.h @@ -126,23 +126,6 @@ struct MallocAdapter { } }; -// If kUseMemcpy is true, memcpy(dst, src, n); else do nothing. -// Useful to avoid compiler warnings when memcpy() is used for T values -// that are not trivially copyable in non-reachable code. -template -inline void MemcpyIfAllowed(void* dst, const void* src, size_t n); - -// memcpy when allowed. -template <> -inline void MemcpyIfAllowed(void* dst, const void* src, size_t n) { - memcpy(dst, src, n); -} - -// Do nothing for types that are not memcpy-able. This function is only -// called from non-reachable branches. -template <> -inline void MemcpyIfAllowed(void*, const void*, size_t) {} - template void ConstructElements(NoTypeDeduction& allocator, Pointer construct_first, ValueAdapter& values, @@ -288,7 +271,7 @@ class ConstructionTransaction { GetData() = data; GetSize() = size; } - void Commit() { + void Commit() && { GetData() = nullptr; GetSize() = 0; } @@ -511,7 +494,8 @@ void Storage::InitFrom(const Storage& other) { src = other.GetAllocatedData(); } if (IsMemcpyOk::value) { - MemcpyIfAllowed::value>(dst, src, sizeof(dst[0]) * n); + std::memcpy(reinterpret_cast(dst), + reinterpret_cast(src), n * sizeof(ValueType)); } else { auto values = IteratorValueAdapter>(src); ConstructElements(GetAllocator(), dst, values, n); @@ -628,7 +612,7 @@ auto Storage::Resize(ValueAdapter values, SizeType new_size) ConstructElements(alloc, new_data, move_values, size); DestroyElements(alloc, base, size); - construction_tx.Commit(); + std::move(construction_tx).Commit(); DeallocateIfAllocated(); SetAllocation(std::move(allocation_tx).Release()); SetIsAllocated(); @@ -668,8 +652,8 @@ auto Storage::Insert(ConstIterator pos, ValueAdapter values, DestroyElements(GetAllocator(), storage_view.data, storage_view.size); - construction_tx.Commit(); - move_construction_tx.Commit(); + std::move(construction_tx).Commit(); + std::move(move_construction_tx).Commit(); DeallocateIfAllocated(); SetAllocation(std::move(allocation_tx).Release()); @@ -721,7 +705,7 @@ auto Storage::Insert(ConstIterator pos, ValueAdapter values, ConstructElements(GetAllocator(), insert_construction.data(), values, insert_construction.size()); - move_construction_tx.Commit(); + std::move(move_construction_tx).Commit(); AddSize(insert_count); return Iterator(storage_view.data + insert_index); diff --git a/absl/flags/BUILD.bazel b/absl/flags/BUILD.bazel index c178b86b..7957c6dd 100644 --- a/absl/flags/BUILD.bazel +++ b/absl/flags/BUILD.bazel @@ -217,6 +217,7 @@ cc_library( name = "flag", srcs = [ "flag.cc", + "internal/flag_msvc.inc", ], hdrs = [ "declare.h", diff --git a/absl/flags/CMakeLists.txt b/absl/flags/CMakeLists.txt index 956f70f8..7f3298e9 100644 --- a/absl/flags/CMakeLists.txt +++ b/absl/flags/CMakeLists.txt @@ -202,6 +202,7 @@ absl_cc_library( HDRS "declare.h" "flag.h" + "internal/flag_msvc.inc" COPTS ${ABSL_DEFAULT_COPTS} LINKOPTS diff --git a/absl/flags/flag.h b/absl/flags/flag.h index 14209e7b..1a7e4d4d 100644 --- a/absl/flags/flag.h +++ b/absl/flags/flag.h @@ -71,101 +71,7 @@ ABSL_NAMESPACE_BEGIN template using Flag = flags_internal::Flag; #else -// MSVC debug builds do not implement initialization with constexpr constructors -// correctly. To work around this we add a level of indirection, so that the -// class `absl::Flag` contains an `internal::Flag*` (instead of being an alias -// to that class) and dynamically allocates an instance when necessary. We also -// forward all calls to internal::Flag methods via trampoline methods. In this -// setup the `absl::Flag` class does not have constructor and virtual methods, -// all the data members are public and thus MSVC is able to initialize it at -// link time. To deal with multiple threads accessing the flag for the first -// time concurrently we use an atomic boolean indicating if flag object is -// initialized. We also employ the double-checked locking pattern where the -// second level of protection is a global Mutex, so if two threads attempt to -// construct the flag concurrently only one wins. -// This solution is based on a recomendation here: -// https://developercommunity.visualstudio.com/content/problem/336946/class-with-constexpr-constructor-not-using-static.html?childToView=648454#comment-648454 - -namespace flags_internal { -absl::Mutex* GetGlobalConstructionGuard(); -} // namespace flags_internal - -template -class Flag { - public: - // No constructor and destructor to ensure this is an aggregate type. - // Visual Studio 2015 still requires the constructor for class to be - // constexpr initializable. -#if _MSC_VER <= 1900 - constexpr Flag(const char* name, const char* filename, - const flags_internal::HelpGenFunc help_gen, - const flags_internal::FlagDfltGenFunc default_value_gen) - : name_(name), - filename_(filename), - help_gen_(help_gen), - default_value_gen_(default_value_gen), - inited_(false), - impl_(nullptr) {} -#endif - - flags_internal::Flag& GetImpl() const { - if (!inited_.load(std::memory_order_acquire)) { - absl::MutexLock l(flags_internal::GetGlobalConstructionGuard()); - - if (inited_.load(std::memory_order_acquire)) { - return *impl_; - } - - impl_ = new flags_internal::Flag( - name_, filename_, - {flags_internal::FlagHelpMsg(help_gen_), - flags_internal::FlagHelpKind::kGenFunc}, - {flags_internal::FlagDefaultSrc(default_value_gen_), - flags_internal::FlagDefaultKind::kGenFunc}); - inited_.store(true, std::memory_order_release); - } - - return *impl_; - } - - // Public methods of `absl::Flag` are NOT part of the Abseil Flags API. - // See https://abseil.io/docs/cpp/guides/flags - bool IsRetired() const { return GetImpl().IsRetired(); } - absl::string_view Name() const { return GetImpl().Name(); } - std::string Help() const { return GetImpl().Help(); } - bool IsModified() const { return GetImpl().IsModified(); } - bool IsSpecifiedOnCommandLine() const { - return GetImpl().IsSpecifiedOnCommandLine(); - } - std::string Filename() const { return GetImpl().Filename(); } - std::string DefaultValue() const { return GetImpl().DefaultValue(); } - std::string CurrentValue() const { return GetImpl().CurrentValue(); } - template - inline bool IsOfType() const { - return GetImpl().template IsOfType(); - } - T Get() const { - return flags_internal::FlagImplPeer::InvokeGet(GetImpl()); - } - void Set(const T& v) { - flags_internal::FlagImplPeer::InvokeSet(GetImpl(), v); - } - void InvokeCallback() { GetImpl().InvokeCallback(); } - - const CommandLineFlag& Reflect() const { - return flags_internal::FlagImplPeer::InvokeReflect(GetImpl()); - } - - // The data members are logically private, but they need to be public for - // this to be an aggregate type. - const char* name_; - const char* filename_; - const flags_internal::HelpGenFunc help_gen_; - const flags_internal::FlagDfltGenFunc default_value_gen_; - - mutable std::atomic inited_; - mutable flags_internal::Flag* impl_; -}; +#include "absl/flags/internal/flag_msvc.inc" #endif // GetFlag() diff --git a/absl/flags/internal/flag_msvc.inc b/absl/flags/internal/flag_msvc.inc new file mode 100644 index 00000000..c31bd27f --- /dev/null +++ b/absl/flags/internal/flag_msvc.inc @@ -0,0 +1,116 @@ +// +// Copyright 2021 The Abseil Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Do not include this file directly. +// Include absl/flags/flag.h instead. + +// MSVC debug builds do not implement initialization with constexpr constructors +// correctly. To work around this we add a level of indirection, so that the +// class `absl::Flag` contains an `internal::Flag*` (instead of being an alias +// to that class) and dynamically allocates an instance when necessary. We also +// forward all calls to internal::Flag methods via trampoline methods. In this +// setup the `absl::Flag` class does not have constructor and virtual methods, +// all the data members are public and thus MSVC is able to initialize it at +// link time. To deal with multiple threads accessing the flag for the first +// time concurrently we use an atomic boolean indicating if flag object is +// initialized. We also employ the double-checked locking pattern where the +// second level of protection is a global Mutex, so if two threads attempt to +// construct the flag concurrently only one wins. +// +// This solution is based on a recomendation here: +// https://developercommunity.visualstudio.com/content/problem/336946/class-with-constexpr-constructor-not-using-static.html?childToView=648454#comment-648454 + +namespace flags_internal { +absl::Mutex* GetGlobalConstructionGuard(); +} // namespace flags_internal + +// Public methods of `absl::Flag` are NOT part of the Abseil Flags API. +// See https://abseil.io/docs/cpp/guides/flags +template +class Flag { + public: + // No constructor and destructor to ensure this is an aggregate type. + // Visual Studio 2015 still requires the constructor for class to be + // constexpr initializable. +#if _MSC_VER <= 1900 + constexpr Flag(const char* name, const char* filename, + const flags_internal::HelpGenFunc help_gen, + const flags_internal::FlagDfltGenFunc default_value_gen) + : name_(name), + filename_(filename), + help_gen_(help_gen), + default_value_gen_(default_value_gen), + inited_(false), + impl_(nullptr) {} +#endif + + flags_internal::Flag& GetImpl() const { + if (!inited_.load(std::memory_order_acquire)) { + absl::MutexLock l(flags_internal::GetGlobalConstructionGuard()); + + if (inited_.load(std::memory_order_acquire)) { + return *impl_; + } + + impl_ = new flags_internal::Flag( + name_, filename_, + {flags_internal::FlagHelpMsg(help_gen_), + flags_internal::FlagHelpKind::kGenFunc}, + {flags_internal::FlagDefaultSrc(default_value_gen_), + flags_internal::FlagDefaultKind::kGenFunc}); + inited_.store(true, std::memory_order_release); + } + + return *impl_; + } + + // Public methods of `absl::Flag` are NOT part of the Abseil Flags API. + // See https://abseil.io/docs/cpp/guides/flags + bool IsRetired() const { return GetImpl().IsRetired(); } + absl::string_view Name() const { return GetImpl().Name(); } + std::string Help() const { return GetImpl().Help(); } + bool IsModified() const { return GetImpl().IsModified(); } + bool IsSpecifiedOnCommandLine() const { + return GetImpl().IsSpecifiedOnCommandLine(); + } + std::string Filename() const { return GetImpl().Filename(); } + std::string DefaultValue() const { return GetImpl().DefaultValue(); } + std::string CurrentValue() const { return GetImpl().CurrentValue(); } + template + inline bool IsOfType() const { + return GetImpl().template IsOfType(); + } + T Get() const { + return flags_internal::FlagImplPeer::InvokeGet(GetImpl()); + } + void Set(const T& v) { + flags_internal::FlagImplPeer::InvokeSet(GetImpl(), v); + } + void InvokeCallback() { GetImpl().InvokeCallback(); } + + const CommandLineFlag& Reflect() const { + return flags_internal::FlagImplPeer::InvokeReflect(GetImpl()); + } + + // The data members are logically private, but they need to be public for + // this to be an aggregate type. + const char* name_; + const char* filename_; + const flags_internal::HelpGenFunc help_gen_; + const flags_internal::FlagDfltGenFunc default_value_gen_; + + mutable std::atomic inited_; + mutable flags_internal::Flag* impl_; +}; diff --git a/absl/hash/internal/hash.cc b/absl/hash/internal/hash.cc index 4b818917..11451e57 100644 --- a/absl/hash/internal/hash.cc +++ b/absl/hash/internal/hash.cc @@ -21,9 +21,9 @@ namespace hash_internal { uint64_t MixingHashState::CombineLargeContiguousImpl32( uint64_t state, const unsigned char* first, size_t len) { while (len >= PiecewiseChunkSize()) { - state = - Mix(state, absl::hash_internal::CityHash32(reinterpret_cast(first), - PiecewiseChunkSize())); + state = Mix(state, + hash_internal::CityHash32(reinterpret_cast(first), + PiecewiseChunkSize())); len -= PiecewiseChunkSize(); first += PiecewiseChunkSize(); } diff --git a/absl/hash/internal/hash.h b/absl/hash/internal/hash.h index f5174096..e5af0ac0 100644 --- a/absl/hash/internal/hash.h +++ b/absl/hash/internal/hash.h @@ -42,6 +42,7 @@ #include "absl/base/internal/unaligned_access.h" #include "absl/base/port.h" #include "absl/container/fixed_array.h" +#include "absl/hash/internal/city.h" #include "absl/hash/internal/low_level_hash.h" #include "absl/meta/type_traits.h" #include "absl/numeric/int128.h" @@ -49,7 +50,6 @@ #include "absl/types/optional.h" #include "absl/types/variant.h" #include "absl/utility/utility.h" -#include "absl/hash/internal/city.h" namespace absl { ABSL_NAMESPACE_BEGIN @@ -883,7 +883,7 @@ class ABSL_DLL MixingHashState : public HashStateBase { #ifdef ABSL_HAVE_INTRINSIC_INT128 return LowLevelHashImpl(data, len); #else - return absl::hash_internal::CityHash64(reinterpret_cast(data), len); + return hash_internal::CityHash64(reinterpret_cast(data), len); #endif } @@ -929,7 +929,7 @@ inline uint64_t MixingHashState::CombineContiguousImpl( if (ABSL_PREDICT_FALSE(len > PiecewiseChunkSize())) { return CombineLargeContiguousImpl32(state, first, len); } - v = absl::hash_internal::CityHash32(reinterpret_cast(first), len); + v = hash_internal::CityHash32(reinterpret_cast(first), len); } else if (len >= 4) { v = Read4To8(first, len); } else if (len > 0) { diff --git a/absl/meta/type_traits.h b/absl/meta/type_traits.h index 8358e799..d886cb30 100644 --- a/absl/meta/type_traits.h +++ b/absl/meta/type_traits.h @@ -642,7 +642,8 @@ using underlying_type_t = typename std::underlying_type::type; namespace type_traits_internal { -#if __cplusplus >= 201703L || (defined(_MSVC_LANG) && _MSVC_LANG >= 201703L) +#if (defined(__cpp_lib_is_invocable) && __cpp_lib_is_invocable >= 201703L) || \ + (defined(_MSVC_LANG) && _MSVC_LANG >= 201703L) // std::result_of is deprecated (C++17) or removed (C++20) template struct result_of; template diff --git a/absl/strings/cord.h b/absl/strings/cord.h index ac1832f0..175d7b90 100644 --- a/absl/strings/cord.h +++ b/absl/strings/cord.h @@ -256,9 +256,7 @@ class Cord { // swap() // // Swaps the contents of two Cords. - friend void swap(Cord& x, Cord& y) noexcept { - x.swap(y); - } + friend void swap(Cord& x, Cord& y) noexcept { x.swap(y); } // Cord::size() // @@ -722,14 +720,14 @@ class Cord { const char* data() const; // Returns nullptr if holding pointer void set_data(const char* data, size_t n, bool nullify_tail); // Discards pointer, if any - char* set_data(size_t n); // Write data to the result + char* set_data(size_t n); // Write data to the result // Returns nullptr if holding bytes absl::cord_internal::CordRep* tree() const; absl::cord_internal::CordRep* as_tree() const; // Returns non-null iff was holding a pointer absl::cord_internal::CordRep* clear(); // Converts to pointer if necessary. - void reduce_size(size_t n); // REQUIRES: holding data + void reduce_size(size_t n); // REQUIRES: holding data void remove_prefix(size_t n); // REQUIRES: holding data void AppendArray(absl::string_view src, MethodIdentifier method); absl::string_view FindFlatStartPiece() const; @@ -1440,12 +1438,8 @@ inline bool operator==(const Cord& lhs, const Cord& rhs) { } inline bool operator!=(const Cord& x, const Cord& y) { return !(x == y); } -inline bool operator<(const Cord& x, const Cord& y) { - return x.Compare(y) < 0; -} -inline bool operator>(const Cord& x, const Cord& y) { - return x.Compare(y) > 0; -} +inline bool operator<(const Cord& x, const Cord& y) { return x.Compare(y) < 0; } +inline bool operator>(const Cord& x, const Cord& y) { return x.Compare(y) > 0; } inline bool operator<=(const Cord& x, const Cord& y) { return x.Compare(y) <= 0; } diff --git a/absl/time/internal/cctz/src/tzfile.h b/absl/time/internal/cctz/src/tzfile.h index 269fa36c..31e85982 100644 --- a/absl/time/internal/cctz/src/tzfile.h +++ b/absl/time/internal/cctz/src/tzfile.h @@ -43,7 +43,7 @@ struct tzhead { char tzh_magic[4]; /* TZ_MAGIC */ - char tzh_version[1]; /* '\0' or '2' or '3' as of 2013 */ + char tzh_version[1]; /* '\0' or '2'-'4' as of 2021 */ char tzh_reserved[15]; /* reserved; must be zero */ char tzh_ttisutcnt[4]; /* coded number of trans. time flags */ char tzh_ttisstdcnt[4]; /* coded number of trans. time flags */ diff --git a/absl/time/internal/cctz/testdata/version b/absl/time/internal/cctz/testdata/version index 1d590958..ba5601ef 100644 --- a/absl/time/internal/cctz/testdata/version +++ b/absl/time/internal/cctz/testdata/version @@ -1 +1 @@ -2021a +2021b diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Accra b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Accra index c39ae382b5e8cf587c0fa38e729140aed60a222f..8906e88c819d9ad3b794eb6356a240a74a95ffae 100644 GIT binary patch delta 51 xcmdnP+Qc{^Oox$yfq@B#IsOB|q-T>n82|tOV*wNZ0Tv(M5C(T3<^mE1TmYq|4(I>? literal 700 zcmWHE%1kq2AP5+NDnJ+nLI`WI1uA0&Vv+wqFiUod35Z^JU`qp-{`BMnh+b?meF2!h znhEAF6+Nv0;xFAcw*W*h`}PkkzkK=yu>6V}Mqv4sl`LTSRlBx>`KzNl!TdF|UxC%H zwb=t!zphpeEWcj%16Y1TTp(C}!+&M4{3eHMVE(3uE5Q6MN?c&|TMpd;tKY_K3zpxu zgdZ%w{YfEMen+b_SbpcRZ(#ne^b=tI?iHF~^?N*igVpctj0MZ@)6xga@6Vb5mOsFq z1eQPOD+=ZxeES^CKdk2oR)6@sG+6yn{u;3S(G7lJ`C}h8faQ-*Yy!)lFysNtpDbYq z^G^vmfaOnzT7lJ{ZntRwh2y1%mn%T@?S;3&@^_q8OMv)yoB6={?I#~T<^b%7 delta 51 zcmdnU*u*#?Oox$yfq@B#IsOB|WOL&+jQ{^13t?dR|Nr;_1{NRR5C+HK5C$$FVZsFf D&3zG{ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Antigua b/absl/time/internal/cctz/testdata/zoneinfo/America/Antigua index f4fe59034242c4416bc84f06f38530d625149329..47b4dc34160dd3ff97ebc35ccdc99fcf49c7ffbb 100644 GIT binary patch delta 98 zcmZo-+{ic~ESiOZfdPaC{sTePv#C2l^yzO#2SD^Cb%7 delta 51 zcmdnU*u*#?Oox$yfq@B#IsOB|WOL&+jQ{^13t?dR|Nr;_1{NRR5C+HK5C$$FVZsFf D&3zG{ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Aruba b/absl/time/internal/cctz/testdata/zoneinfo/America/Aruba index d6ddf7d8f6bf58d3f61e4adcb760e11fcd866db8..47b4dc34160dd3ff97ebc35ccdc99fcf49c7ffbb 100644 GIT binary patch delta 98 zcmbQvxRG%}STqX*0|N*P{0D-nXH$2A=+obf4uI%O%3lh=bi&&UjLb}o|NkFiXJGjM k|M&q0mjC~+USQ+^lRQ4YAqtgKpYIj;XoV^!r%&Ia{&ocE&%lkOIiQ` diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Barbados b/absl/time/internal/cctz/testdata/zoneinfo/America/Barbados index 9d3afa6a53bd83dce2ccaa77b1cc6cae885dd328..720c9863f2a834f310280cc9113bedc59a25206d 100644 GIT binary patch delta 139 zcmaFPIE`sSm?J*}0|N^X3;hRzNe(MhLGGeP11|0kpw7{DaU|NmDn fFmn9=fBXOgkB@H%gA))tx&U!-2m=?8FyR6KxFsUO diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Blanc-Sablon b/absl/time/internal/cctz/testdata/zoneinfo/America/Blanc-Sablon index 7096b69a564b7fdcc0f569d819c69a430edf0be2..47b4dc34160dd3ff97ebc35ccdc99fcf49c7ffbb 100644 GIT binary patch delta 98 zcmX@hxRG%}STqX*0|N*P{0D-nXH$2A=+obf4uI%O%3lh=bi&&UjLb}o|NkFiXJGjM k|M&q0mjC~+USQ+^lRQ4YAqtgKpYIj;XoV^!r%&Ia{&ocE&%lkOIiQ` diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Creston b/absl/time/internal/cctz/testdata/zoneinfo/America/Creston index 9d69a0ab819e936a1f4f8029e111a7b960db8b8f..c2bd2f949b248b835c98216b4dc66f9f6eb0265e 100644 GIT binary patch literal 240 zcmWHE%1kq2AP5+NDnJ+nLI`W&1}b9#VuAla5XZu^0YuMRW;Fps&)?170HPPP$$r^U93H~J1!S0W0RTV0SUUg! delta 79 zcmeysIFE5cmb%7 delta 51 zcmdnU*u*#?Oox$yfq@B#IsOB|WOL&+jQ{^13t?dR|Nr;_1{NRR5C+HK5C$$FVZsFf D&3zG{ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Grenada b/absl/time/internal/cctz/testdata/zoneinfo/America/Grenada index f4fe59034242c4416bc84f06f38530d625149329..47b4dc34160dd3ff97ebc35ccdc99fcf49c7ffbb 100644 GIT binary patch delta 98 zcmZo-+{ic~ESiOZfdPaC{sTePv#C2l^yzO#2SD^Cb%7 delta 51 zcmdnU*u*#?Oox$yfq@B#IsOB|WOL&+jQ{^13t?dR|Nr;_1{NRR5C+HK5C$$FVZsFf D&3zG{ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Guadeloupe b/absl/time/internal/cctz/testdata/zoneinfo/America/Guadeloupe index f4fe59034242c4416bc84f06f38530d625149329..47b4dc34160dd3ff97ebc35ccdc99fcf49c7ffbb 100644 GIT binary patch delta 98 zcmZo-+{ic~ESiOZfdPaC{sTePv#C2l^yzO#2SD^Cb%7 delta 51 zcmdnU*u*#?Oox$yfq@B#IsOB|WOL&+jQ{^13t?dR|Nr;_1{NRR5C+HK5C$$FVZsFf D&3zG{ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Guyana b/absl/time/internal/cctz/testdata/zoneinfo/America/Guyana index ebd85d0f3e022a63253d529931cf8b4842e21500..bcc66881c17cebf8767b7a147b1fcf7ab29bbd9f 100644 GIT binary patch delta 102 zcmZ3(xRr52SUd{@0|N*P{Re_cvi$8JddAIa2cQ@OS3T<<5UqLD;Q%8OGvojNCo35k t{{KIIfPv-z|I;oE9RL4cy}-cd;~T=DYhVJz#wMm9l7Y(x$hR}$0sye@BV+&o delta 93 zcmdnWxQ1~;SQs+{0|N^X3;hRz88<6CfNTb?+ATI9TD|_a0V5Oh|Nkc|7#RNlKkdT6 n^8f$U3k+QU{~tfVz~|!|!k}wlY+?!`f!KtB%LYi=nQ#FB=dm7N diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Kralendijk b/absl/time/internal/cctz/testdata/zoneinfo/America/Kralendijk index d6ddf7d8f6bf58d3f61e4adcb760e11fcd866db8..47b4dc34160dd3ff97ebc35ccdc99fcf49c7ffbb 100644 GIT binary patch delta 98 zcmbQvxRG%}STqX*0|N*P{0D-nXH$2A=+obf4uI%O%3lh=bi&&UjLb}o|NkFiXJGjM k|M&q0mjC~+USQ+^lRQ4YAqb%7 delta 51 zcmdnU*u*#?Oox$yfq@B#IsOB|WOL&+jQ{^13t?dR|Nr;_1{NRR5C+HK5C$$FVZsFf D&3zG{ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Montserrat b/absl/time/internal/cctz/testdata/zoneinfo/America/Montserrat index f4fe59034242c4416bc84f06f38530d625149329..47b4dc34160dd3ff97ebc35ccdc99fcf49c7ffbb 100644 GIT binary patch delta 98 zcmZo-+{ic~ESiOZfdPaC{sTePv#C2l^yzO#2SD^Cb%7 delta 51 zcmdnU*u*#?Oox$yfq@B#IsOB|WOL&+jQ{^13t?dR|Nr;_1{NRR5C+HK5C$$FVZsFf D&3zG{ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Nassau b/absl/time/internal/cctz/testdata/zoneinfo/America/Nassau index 2ef2aa8971d343b89ef197aa3e9def0c26d8b54f..fe6be8ea8c97db1c1d99c4198f4b9b024e3aba4c 100644 GIT binary patch literal 1717 zcmb`{`%hD690u?gM8tvuauF3L>a-N0Eg)XNjXFVwTgADO;SG<5L2$`9af+BI>V_hT zhAg0FbHT|)F6t_16$ay?h!_(^@CHLXC}WPBM^seMcJKGuA7D)OZQk?r^PcBD{i(;W zIx#+gy>qO1gBFe9-A7LG+GxI9Eqpc)r1VkdlxK;Q$A0e>D1S{?H&Pz|xl~7)n{6vo z=0z97`TN$v1>Py>pNJ2I3mukA)GJy#9WLtA!X=(pMcOa9tw;alo0ISTXz7&-V*T=1gFKc4p2K^3^ zo_obH7;f~7g|F?GkZ{PQ#*r7F7VtmHcCcxt>(qPBpA7t8h`Y9fE&iERhu>DimB{2ea zUF8G2MXF%;g%0pUl|Ae+LnSailkEE8$=3Gpc z>U7w*#USt+^UFzu)o16yn$*u=ZI%b@pO7F^FJSX992gM^&t2IL2Px;k^8%{j`D4bx z3#PP5jL(AZC-B0NDmb{|CLHo-4!p=XAX4w6%H8nCnN4u$(T%V!sSIA6woBkO_DNJW zyd-V|9HvQz!^4)q;m?X>YpeJ9jIw#3_W#|rSWMZB@%L4&l?{JOo?&+Q?trV)=XwJR i598}gzP{pXg@GwJg7~JdK2RN?*81xG{nh?zt>RzxQxqHk delta 185 zcmdnW`;L7=m}M*j0|P4%i~I+I$>vU7Ao}!|_W>aK!Y}s&Ao`-R37CIL`AY$af2m^D ofz9m9dzfOGnOJB8|Nq}!HaVY7o;N&%!8I6&1Ay3N@@zIK0FW9qr~m)} diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Port_of_Spain b/absl/time/internal/cctz/testdata/zoneinfo/America/Port_of_Spain index f4fe59034242c4416bc84f06f38530d625149329..47b4dc34160dd3ff97ebc35ccdc99fcf49c7ffbb 100644 GIT binary patch delta 98 zcmZo-+{ic~ESiOZfdPaC{sTePv#C2l^yzO#2SD^Cb%7 delta 51 zcmdnU*u*#?Oox$yfq@B#IsOB|WOL&+jQ{^13t?dR|Nr;_1{NRR5C+HK5C$$FVZsFf D&3zG{ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/St_Barthelemy b/absl/time/internal/cctz/testdata/zoneinfo/America/St_Barthelemy index f4fe59034242c4416bc84f06f38530d625149329..47b4dc34160dd3ff97ebc35ccdc99fcf49c7ffbb 100644 GIT binary patch delta 98 zcmZo-+{ic~ESiOZfdPaC{sTePv#C2l^yzO#2SD^Cb%7 delta 51 zcmdnU*u*#?Oox$yfq@B#IsOB|WOL&+jQ{^13t?dR|Nr;_1{NRR5C+HK5C$$FVZsFf D&3zG{ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/St_Kitts b/absl/time/internal/cctz/testdata/zoneinfo/America/St_Kitts index f4fe59034242c4416bc84f06f38530d625149329..47b4dc34160dd3ff97ebc35ccdc99fcf49c7ffbb 100644 GIT binary patch delta 98 zcmZo-+{ic~ESiOZfdPaC{sTePv#C2l^yzO#2SD^Cb%7 delta 51 zcmdnU*u*#?Oox$yfq@B#IsOB|WOL&+jQ{^13t?dR|Nr;_1{NRR5C+HK5C$$FVZsFf D&3zG{ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/St_Lucia b/absl/time/internal/cctz/testdata/zoneinfo/America/St_Lucia index f4fe59034242c4416bc84f06f38530d625149329..47b4dc34160dd3ff97ebc35ccdc99fcf49c7ffbb 100644 GIT binary patch delta 98 zcmZo-+{ic~ESiOZfdPaC{sTePv#C2l^yzO#2SD^Cb%7 delta 51 zcmdnU*u*#?Oox$yfq@B#IsOB|WOL&+jQ{^13t?dR|Nr;_1{NRR5C+HK5C$$FVZsFf D&3zG{ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/St_Thomas b/absl/time/internal/cctz/testdata/zoneinfo/America/St_Thomas index f4fe59034242c4416bc84f06f38530d625149329..47b4dc34160dd3ff97ebc35ccdc99fcf49c7ffbb 100644 GIT binary patch delta 98 zcmZo-+{ic~ESiOZfdPaC{sTePv#C2l^yzO#2SD^Cb%7 delta 51 zcmdnU*u*#?Oox$yfq@B#IsOB|WOL&+jQ{^13t?dR|Nr;_1{NRR5C+HK5C$$FVZsFf D&3zG{ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/St_Vincent b/absl/time/internal/cctz/testdata/zoneinfo/America/St_Vincent index f4fe59034242c4416bc84f06f38530d625149329..47b4dc34160dd3ff97ebc35ccdc99fcf49c7ffbb 100644 GIT binary patch delta 98 zcmZo-+{ic~ESiOZfdPaC{sTePv#C2l^yzO#2SD^Cb%7 delta 51 zcmdnU*u*#?Oox$yfq@B#IsOB|WOL&+jQ{^13t?dR|Nr;_1{NRR5C+HK5C$$FVZsFf D&3zG{ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Tortola b/absl/time/internal/cctz/testdata/zoneinfo/America/Tortola index f4fe59034242c4416bc84f06f38530d625149329..47b4dc34160dd3ff97ebc35ccdc99fcf49c7ffbb 100644 GIT binary patch delta 98 zcmZo-+{ic~ESiOZfdPaC{sTePv#C2l^yzO#2SD^Cb%7 delta 51 zcmdnU*u*#?Oox$yfq@B#IsOB|WOL&+jQ{^13t?dR|Nr;_1{NRR5C+HK5C$$FVZsFf D&3zG{ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Virgin b/absl/time/internal/cctz/testdata/zoneinfo/America/Virgin index f4fe59034242c4416bc84f06f38530d625149329..47b4dc34160dd3ff97ebc35ccdc99fcf49c7ffbb 100644 GIT binary patch delta 98 zcmZo-+{ic~ESiOZfdPaC{sTePv#C2l^yzO#2SD^Cb%7 delta 51 zcmdnU*u*#?Oox$yfq@B#IsOB|WOL&+jQ{^13t?dR|Nr;_1{NRR5C+HK5C$$FVZsFf D&3zG{ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/DumontDUrville b/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/DumontDUrville index c0cfc85a29e833d02896066e54126317826ed90f..5d8fc3a1b253d1df3a0184013469c6e46f6f6f75 100644 GIT binary patch delta 75 zcmbQiIE!&YmIQm=iMt0|OHfbNmN_D|^ZsK=eJ6gai=%+=i)vk%18?4F)|67+7=-3>dTx P4H&p=fTW$Sp#c{FAkVDa${VbC@(X5g{`l6JbrTmZ{(2uT0{ delta 41 pcmZo=Y-OB~tn_?i1Op=j6lfVRu;>~XFlZYXGjQ1eNjqI*E&#A%2M7QF diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Amman b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Amman index 1bd09fef27c9f005bbd84e8262a56a3f2a72364f..d97d308d7afdd2e5c81a9895c2062706f9b4b1ce 100644 GIT binary patch delta 172 zcmbQtHj8~i7-Q(ha0{k-1|SFt+VTKIhl(^NfaoxzX%E2k-??BqLZ|{l->nDJk)NW# zbkyENFdco#2297ybq3S1o8-WBT&*gYj-PFvzyJgZvFr~(bYit^0uv(`PM*PJJ9$2n c;N+`J+QLS9rg|p&MkYGGh6X^UslFi>05`oVnE(I) delta 40 ucmbQmKACMo7^B<9a0{l%g3NA{W0Ng%+J~b00gZMxBvhE delta 21 dcmZ3>J)3(%7-QGQa2=-2lbQOMCM&ac0RU2!2O|Ig diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Atlantic/Jan_Mayen b/absl/time/internal/cctz/testdata/zoneinfo/Atlantic/Jan_Mayen index dfc509570a5be7ea90f64610ad5ca5a58fa3d172..465546bd396ae5eb75076f13ba9c29b0c926c835 100644 GIT binary patch delta 246 zcmZ3&dXRNOn5PW`0|N^X3;hRz{6&dBK=f=L@dPk^_0|UvJ?G}S2_SmzlC5BR-p&bN zdVb4vFnxlvaKglTla!0wrZIrjU5eP(0HzoE3xMd$$T>CYkj z6~$nE*EF|))nC_<0@F7*r-A94Ob5a0ZoaG#*sRVd#>mdh$OMGUlMR^EH5eFpI)FZ4 jkWpX+`h-t_fs=tj%Yc#B$2Ww**)9uaF1RA2I~M^v4KBF#XB>6PW&N{uoSuQNIGFzlt9P z)87O>OaPhtU7roi|Ni091fbg(gneBEfYfFuMsCK*`Aj@Wn8TWZflCCWNJfE?g@J)j ofPvG;H-y32H5f#MFmM40T|*F8$JbcTRL?-i*U$h&>lO{w*UYD diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Atlantic/Madeira b/absl/time/internal/cctz/testdata/zoneinfo/Atlantic/Madeira index 7c3a49c0e8cdcf1fa43835b3767a999b9b2b6b01..cf965c3f9274923cc8410311741b0e30b06339bb 100644 GIT binary patch delta 33 ocmbQuy_S1I7-P@Ia2+P@TQ^$`{sY17lVzLhm?kq#=4b5z00I>ci~s-t delta 21 dcmZ3>J)3(%7-QGQa2=-2lbQOMCM&ac0RU2!2O|Ig diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Lisbon b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Lisbon index 64841661a01a1cf9e33b5ae3f013f569168eb77c..f0c70b690660ce4ebf469a7016f9b8343eb20ea6 100644 GIT binary patch delta 33 ocmbQky^ecA7-R3oa2+P@TQ|!U{sY17lNp=qm}WCg7H4e*000;dYybcN delta 21 dcmZ3-J%@Wj7-RRwa2=-2lbNP5P1a^@1^`nG2QL5s diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Apia b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Apia index 244af26f8a2f44b8530ba639cb3c7393c58b3783..a6b835aab4c5e2e2a31bda0afdc8646b57d19a87 100644 GIT binary patch delta 186 zcmeBSn$A2Sj8ST0xJNw$5Co+CdjO&X6SNXQbdcMF2Ov7wfhPe(ho~KT0HQ|IG)SrjFDqvxCa{}6ALp7^JI5Me+e6HLlZk4UrRkxJp+AX9bXeYLm}FKT|*-vHe}E?G-lwk0g`sQhQ?d~DeDpc delta 80 zcmZ3(xQ1~;vS*!nXbJ-m2!*j60MYuamKzwEnE(HepTofL|9`jx1Iz#asR0Ze3=G>Y eF!1>JhA`+F8Ue8(gSMeD1D6euw9_>-<^lkQ@DzLi diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Kanton b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Kanton new file mode 100644 index 0000000000000000000000000000000000000000..2b6a06088ef603f03fb482b628347ff72970fe3d GIT binary patch literal 172 zcmWHE%1kq2AP5+NDnJ+nLI`VN1}b9#VuAlaa9HPd1CY%i6vlD@MC-F!ZeU~rDFK52 t|HB;^SpNS{4PfA4VAytnfk)TCfI-*L2#5_Cv<;0JxNLx=ovxuV7XW_87Tf>; literal 0 HcmV?d00001 diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Niue b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Niue index 7b3579351395393825ba3770ac94e729131fabef..be874e2472c2a79ed0d4de3011abd8831812911f 100644 GIT binary patch delta 75 zcmZ3_IE!&Ymt;41~3Tt_=Yg(8X6iIfJkF7$-rd;WZM}UasdFf_aBx3 diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Rarotonga b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Rarotonga index 143a1883b0f87c60c4d52a7dde8fd38c24834243..7220bda0adb9f04d704cb893a5d1ee8bd9173b82 100644 GIT binary patch delta 72 zcmZo?p2j>OOhSf%fq@l>Mg9XpjnADEAo~8ogo$aF6q#6N^0svt6 B6L0_k delta 57 ncmbQn+|E29OhB4}fq?~xMg9Xpow?V