[libcxx-commits] [libcxx] Avoid using __local as it collides with clc++ keyword (PR #154020)

via libcxx-commits libcxx-commits at lists.llvm.org
Sun Aug 17 07:14:41 PDT 2025


https://github.com/piotrrak created https://github.com/llvm/llvm-project/pull/154020

None

>From 540c2545792ef7fe81a1c69011617e1a727730d7 Mon Sep 17 00:00:00 2001
From: Piotr Rak <piotr.rak at gmail.com>
Date: Fri, 15 Aug 2025 21:56:50 +0200
Subject: [PATCH] Avoid using __local as it collides with clc++ keyword

---
 libcxx/include/__algorithm/copy.h             |  2 +-
 libcxx/include/__algorithm/copy_backward.h    |  8 ++--
 libcxx/include/__algorithm/find_segment_if.h  |  6 +--
 .../include/__algorithm/for_each_n_segment.h  |  2 +-
 libcxx/include/__algorithm/for_each_segment.h |  6 +--
 libcxx/include/__algorithm/move.h             |  2 +-
 libcxx/include/__algorithm/move_backward.h    |  8 ++--
 libcxx/include/__cxx03/__algorithm/copy.h     |  2 +-
 .../__cxx03/__algorithm/copy_backward.h       |  8 ++--
 .../__cxx03/__algorithm/find_segment_if.h     |  6 +--
 .../__cxx03/__algorithm/for_each_segment.h    |  6 +--
 libcxx/include/__cxx03/__algorithm/move.h     |  2 +-
 .../__cxx03/__algorithm/move_backward.h       |  8 ++--
 .../__cxx03/__iterator/segmented_iterator.h   |  4 +-
 libcxx/include/__cxx03/deque                  |  8 ++--
 .../include/__iterator/segmented_iterator.h   |  4 +-
 libcxx/include/__ranges/join_view.h           |  2 +-
 libcxx/include/deque                          |  8 ++--
 .../experimental/include/tzdb/types_private.h |  6 +--
 libcxx/src/experimental/time_zone.cpp         | 20 +++++-----
 libcxx/src/experimental/tzdb.cpp              |  8 ++--
 .../time.zone/time.zone.db/rules.pass.cpp     | 20 +++++-----
 .../time.zone/time.zone.db/zones.pass.cpp     | 40 +++++++++----------
 23 files changed, 93 insertions(+), 93 deletions(-)

diff --git a/libcxx/include/__algorithm/copy.h b/libcxx/include/__algorithm/copy.h
index 63877281bf9b2..a3a14cc6cad16 100644
--- a/libcxx/include/__algorithm/copy.h
+++ b/libcxx/include/__algorithm/copy.h
@@ -202,7 +202,7 @@ struct __copy_impl {
     if (__first == __last)
       return std::make_pair(std::move(__first), std::move(__result));
 
-    auto __local_first      = _Traits::__local(__result);
+    auto __local_first      = _Traits::__local_it(__result);
     auto __segment_iterator = _Traits::__segment(__result);
     while (true) {
       auto __local_last = _Traits::__end(__segment_iterator);
diff --git a/libcxx/include/__algorithm/copy_backward.h b/libcxx/include/__algorithm/copy_backward.h
index 807c64b55a8f6..da9b91c9de602 100644
--- a/libcxx/include/__algorithm/copy_backward.h
+++ b/libcxx/include/__algorithm/copy_backward.h
@@ -178,12 +178,12 @@ struct __copy_backward_impl {
     auto __slast  = _Traits::__segment(__last);
     if (__sfirst == __slast) {
       auto __iters =
-          std::__copy_backward<_AlgPolicy>(_Traits::__local(__first), _Traits::__local(__last), std::move(__result));
+          std::__copy_backward<_AlgPolicy>(_Traits::__local_it(__first), _Traits::__local_it(__last), std::move(__result));
       return std::make_pair(__last, __iters.second);
     }
 
     __result =
-        std::__copy_backward<_AlgPolicy>(_Traits::__begin(__slast), _Traits::__local(__last), std::move(__result))
+        std::__copy_backward<_AlgPolicy>(_Traits::__begin(__slast), _Traits::__local_it(__last), std::move(__result))
             .second;
     --__slast;
     while (__sfirst != __slast) {
@@ -192,7 +192,7 @@ struct __copy_backward_impl {
               .second;
       --__slast;
     }
-    __result = std::__copy_backward<_AlgPolicy>(_Traits::__local(__first), _Traits::__end(__slast), std::move(__result))
+    __result = std::__copy_backward<_AlgPolicy>(_Traits::__local_it(__first), _Traits::__end(__slast), std::move(__result))
                    .second;
     return std::make_pair(__last, std::move(__result));
   }
@@ -212,7 +212,7 @@ struct __copy_backward_impl {
     if (__first == __last)
       return std::make_pair(__first, __result);
 
-    auto __local_last = _Traits::__local(__result);
+    auto __local_last = _Traits::__local_it(__result);
     while (true) {
       using _DiffT = typename common_type<__iter_diff_t<_InIter>, __iter_diff_t<_OutIter> >::type;
 
diff --git a/libcxx/include/__algorithm/find_segment_if.h b/libcxx/include/__algorithm/find_segment_if.h
index 9d6064f3e283a..4ead37f71f53e 100644
--- a/libcxx/include/__algorithm/find_segment_if.h
+++ b/libcxx/include/__algorithm/find_segment_if.h
@@ -34,11 +34,11 @@ __find_segment_if(_SegmentedIterator __first, _SegmentedIterator __last, _Pred _
 
   // We are in a single segment, so we might not be at the beginning or end
   if (__sfirst == __slast)
-    return _Traits::__compose(__sfirst, __pred(_Traits::__local(__first), _Traits::__local(__last), __proj));
+    return _Traits::__compose(__sfirst, __pred(_Traits::__local_it(__first), _Traits::__local_it(__last), __proj));
 
   { // We have more than one segment. Iterate over the first segment, since we might not start at the beginning
     auto __llast = _Traits::__end(__sfirst);
-    auto __liter = __pred(_Traits::__local(__first), __llast, __proj);
+    auto __liter = __pred(_Traits::__local_it(__first), __llast, __proj);
     if (__liter != __llast)
       return _Traits::__compose(__sfirst, __liter);
   }
@@ -54,7 +54,7 @@ __find_segment_if(_SegmentedIterator __first, _SegmentedIterator __last, _Pred _
   }
 
   // Iterate over the last segment
-  return _Traits::__compose(__sfirst, __pred(_Traits::__begin(__sfirst), _Traits::__local(__last), __proj));
+  return _Traits::__compose(__sfirst, __pred(_Traits::__begin(__sfirst), _Traits::__local_it(__last), __proj));
 }
 
 _LIBCPP_END_NAMESPACE_STD
diff --git a/libcxx/include/__algorithm/for_each_n_segment.h b/libcxx/include/__algorithm/for_each_n_segment.h
index a433df5d098ae..0d5891cbf3dd3 100644
--- a/libcxx/include/__algorithm/for_each_n_segment.h
+++ b/libcxx/include/__algorithm/for_each_n_segment.h
@@ -39,7 +39,7 @@ __for_each_n_segment(_SegmentedIterator __first, _Size __orig_n, _Functor __func
   using __difference_t = typename std::iterator_traits<__local_iter_t>::difference_type;
   __difference_t __n   = __orig_n;
   auto __seg           = _Traits::__segment(__first);
-  auto __local_first   = _Traits::__local(__first);
+  auto __local_first   = _Traits::__local_it(__first);
   __local_iter_t __local_last;
 
   while (__n > 0) {
diff --git a/libcxx/include/__algorithm/for_each_segment.h b/libcxx/include/__algorithm/for_each_segment.h
index 93aa8259b2f7f..c099858ba1023 100644
--- a/libcxx/include/__algorithm/for_each_segment.h
+++ b/libcxx/include/__algorithm/for_each_segment.h
@@ -32,12 +32,12 @@ __for_each_segment(_SegmentedIterator __first, _SegmentedIterator __last, _Funct
 
   // We are in a single segment, so we might not be at the beginning or end
   if (__sfirst == __slast) {
-    __func(_Traits::__local(__first), _Traits::__local(__last));
+    __func(_Traits::__local_it(__first), _Traits::__local_it(__last));
     return;
   }
 
   // We have more than one segment. Iterate over the first segment, since we might not start at the beginning
-  __func(_Traits::__local(__first), _Traits::__end(__sfirst));
+  __func(_Traits::__local_it(__first), _Traits::__end(__sfirst));
   ++__sfirst;
   // iterate over the segments which are guaranteed to be completely in the range
   while (__sfirst != __slast) {
@@ -45,7 +45,7 @@ __for_each_segment(_SegmentedIterator __first, _SegmentedIterator __last, _Funct
     ++__sfirst;
   }
   // iterate over the last segment
-  __func(_Traits::__begin(__sfirst), _Traits::__local(__last));
+  __func(_Traits::__begin(__sfirst), _Traits::__local_it(__last));
 }
 
 _LIBCPP_END_NAMESPACE_STD
diff --git a/libcxx/include/__algorithm/move.h b/libcxx/include/__algorithm/move.h
index 73b780d9b17f3..b95a3c9c00c73 100644
--- a/libcxx/include/__algorithm/move.h
+++ b/libcxx/include/__algorithm/move.h
@@ -85,7 +85,7 @@ struct __move_impl {
     if (__first == __last)
       return std::make_pair(std::move(__first), std::move(__result));
 
-    auto __local_first      = _Traits::__local(__result);
+    auto __local_first      = _Traits::__local_it(__result);
     auto __segment_iterator = _Traits::__segment(__result);
     while (true) {
       auto __local_last = _Traits::__end(__segment_iterator);
diff --git a/libcxx/include/__algorithm/move_backward.h b/libcxx/include/__algorithm/move_backward.h
index e3e61c7bc1e29..6d8b31a1ca317 100644
--- a/libcxx/include/__algorithm/move_backward.h
+++ b/libcxx/include/__algorithm/move_backward.h
@@ -59,12 +59,12 @@ struct __move_backward_impl {
     auto __slast  = _Traits::__segment(__last);
     if (__sfirst == __slast) {
       auto __iters =
-          std::__move_backward<_AlgPolicy>(_Traits::__local(__first), _Traits::__local(__last), std::move(__result));
+          std::__move_backward<_AlgPolicy>(_Traits::__local_it(__first), _Traits::__local_it(__last), std::move(__result));
       return std::make_pair(__last, __iters.second);
     }
 
     __result =
-        std::__move_backward<_AlgPolicy>(_Traits::__begin(__slast), _Traits::__local(__last), std::move(__result))
+        std::__move_backward<_AlgPolicy>(_Traits::__begin(__slast), _Traits::__local_it(__last), std::move(__result))
             .second;
     --__slast;
     while (__sfirst != __slast) {
@@ -73,7 +73,7 @@ struct __move_backward_impl {
               .second;
       --__slast;
     }
-    __result = std::__move_backward<_AlgPolicy>(_Traits::__local(__first), _Traits::__end(__slast), std::move(__result))
+    __result = std::__move_backward<_AlgPolicy>(_Traits::__local_it(__first), _Traits::__end(__slast), std::move(__result))
                    .second;
     return std::make_pair(__last, std::move(__result));
   }
@@ -94,7 +94,7 @@ struct __move_backward_impl {
 
     auto __orig_last = __last;
 
-    auto __local_last       = _Traits::__local(__result);
+    auto __local_last       = _Traits::__local_it(__result);
     auto __segment_iterator = _Traits::__segment(__result);
     while (true) {
       auto __local_first = _Traits::__begin(__segment_iterator);
diff --git a/libcxx/include/__cxx03/__algorithm/copy.h b/libcxx/include/__cxx03/__algorithm/copy.h
index ab164a8f9af51..171ec0fe2691f 100644
--- a/libcxx/include/__cxx03/__algorithm/copy.h
+++ b/libcxx/include/__cxx03/__algorithm/copy.h
@@ -76,7 +76,7 @@ struct __copy_impl {
     if (__first == __last)
       return std::make_pair(std::move(__first), std::move(__result));
 
-    auto __local_first      = _Traits::__local(__result);
+    auto __local_first      = _Traits::__local_it(__result);
     auto __segment_iterator = _Traits::__segment(__result);
     while (true) {
       auto __local_last = _Traits::__end(__segment_iterator);
diff --git a/libcxx/include/__cxx03/__algorithm/copy_backward.h b/libcxx/include/__cxx03/__algorithm/copy_backward.h
index 0a84b6ed27a98..1c0075319f7b6 100644
--- a/libcxx/include/__cxx03/__algorithm/copy_backward.h
+++ b/libcxx/include/__cxx03/__algorithm/copy_backward.h
@@ -52,12 +52,12 @@ struct __copy_backward_impl {
     auto __slast  = _Traits::__segment(__last);
     if (__sfirst == __slast) {
       auto __iters =
-          std::__copy_backward<_AlgPolicy>(_Traits::__local(__first), _Traits::__local(__last), std::move(__result));
+          std::__copy_backward<_AlgPolicy>(_Traits::__local_it(__first), _Traits::__local_it(__last), std::move(__result));
       return std::make_pair(__last, __iters.second);
     }
 
     __result =
-        std::__copy_backward<_AlgPolicy>(_Traits::__begin(__slast), _Traits::__local(__last), std::move(__result))
+        std::__copy_backward<_AlgPolicy>(_Traits::__begin(__slast), _Traits::__local_it(__last), std::move(__result))
             .second;
     --__slast;
     while (__sfirst != __slast) {
@@ -66,7 +66,7 @@ struct __copy_backward_impl {
               .second;
       --__slast;
     }
-    __result = std::__copy_backward<_AlgPolicy>(_Traits::__local(__first), _Traits::__end(__slast), std::move(__result))
+    __result = std::__copy_backward<_AlgPolicy>(_Traits::__local_it(__first), _Traits::__end(__slast), std::move(__result))
                    .second;
     return std::make_pair(__last, std::move(__result));
   }
@@ -85,7 +85,7 @@ struct __copy_backward_impl {
     if (__first == __last)
       return std::make_pair(__first, __result);
 
-    auto __local_last = _Traits::__local(__result);
+    auto __local_last = _Traits::__local_it(__result);
     while (true) {
       using _DiffT = typename common_type<__iter_diff_t<_InIter>, __iter_diff_t<_OutIter> >::type;
 
diff --git a/libcxx/include/__cxx03/__algorithm/find_segment_if.h b/libcxx/include/__cxx03/__algorithm/find_segment_if.h
index 9fdf8ae53d517..c3b28267a1f42 100644
--- a/libcxx/include/__cxx03/__algorithm/find_segment_if.h
+++ b/libcxx/include/__cxx03/__algorithm/find_segment_if.h
@@ -34,11 +34,11 @@ __find_segment_if(_SegmentedIterator __first, _SegmentedIterator __last, _Pred _
 
   // We are in a single segment, so we might not be at the beginning or end
   if (__sfirst == __slast)
-    return _Traits::__compose(__sfirst, __pred(_Traits::__local(__first), _Traits::__local(__last), __proj));
+    return _Traits::__compose(__sfirst, __pred(_Traits::__local_it(__first), _Traits::__local_it(__last), __proj));
 
   { // We have more than one segment. Iterate over the first segment, since we might not start at the beginning
     auto __llast = _Traits::__end(__sfirst);
-    auto __liter = __pred(_Traits::__local(__first), __llast, __proj);
+    auto __liter = __pred(_Traits::__local_it(__first), __llast, __proj);
     if (__liter != __llast)
       return _Traits::__compose(__sfirst, __liter);
   }
@@ -54,7 +54,7 @@ __find_segment_if(_SegmentedIterator __first, _SegmentedIterator __last, _Pred _
   }
 
   // Iterate over the last segment
-  return _Traits::__compose(__sfirst, __pred(_Traits::__begin(__sfirst), _Traits::__local(__last), __proj));
+  return _Traits::__compose(__sfirst, __pred(_Traits::__begin(__sfirst), _Traits::__local_it(__last), __proj));
 }
 
 _LIBCPP_END_NAMESPACE_STD
diff --git a/libcxx/include/__cxx03/__algorithm/for_each_segment.h b/libcxx/include/__cxx03/__algorithm/for_each_segment.h
index b1d54ad427659..3141a1a5bdab2 100644
--- a/libcxx/include/__cxx03/__algorithm/for_each_segment.h
+++ b/libcxx/include/__cxx03/__algorithm/for_each_segment.h
@@ -31,12 +31,12 @@ _LIBCPP_HIDE_FROM_ABI void __for_each_segment(_SegmentedIterator __first, _Segme
 
   // We are in a single segment, so we might not be at the beginning or end
   if (__sfirst == __slast) {
-    __func(_Traits::__local(__first), _Traits::__local(__last));
+    __func(_Traits::__local_it(__first), _Traits::__local_it(__last));
     return;
   }
 
   // We have more than one segment. Iterate over the first segment, since we might not start at the beginning
-  __func(_Traits::__local(__first), _Traits::__end(__sfirst));
+  __func(_Traits::__local_it(__first), _Traits::__end(__sfirst));
   ++__sfirst;
   // iterate over the segments which are guaranteed to be completely in the range
   while (__sfirst != __slast) {
@@ -44,7 +44,7 @@ _LIBCPP_HIDE_FROM_ABI void __for_each_segment(_SegmentedIterator __first, _Segme
     ++__sfirst;
   }
   // iterate over the last segment
-  __func(_Traits::__begin(__sfirst), _Traits::__local(__last));
+  __func(_Traits::__begin(__sfirst), _Traits::__local_it(__last));
 }
 
 _LIBCPP_END_NAMESPACE_STD
diff --git a/libcxx/include/__cxx03/__algorithm/move.h b/libcxx/include/__cxx03/__algorithm/move.h
index 0c744bc0e91a4..df1ae18964fca 100644
--- a/libcxx/include/__cxx03/__algorithm/move.h
+++ b/libcxx/include/__cxx03/__algorithm/move.h
@@ -76,7 +76,7 @@ struct __move_impl {
     if (__first == __last)
       return std::make_pair(std::move(__first), std::move(__result));
 
-    auto __local_first      = _Traits::__local(__result);
+    auto __local_first      = _Traits::__local_it(__result);
     auto __segment_iterator = _Traits::__segment(__result);
     while (true) {
       auto __local_last = _Traits::__end(__segment_iterator);
diff --git a/libcxx/include/__cxx03/__algorithm/move_backward.h b/libcxx/include/__cxx03/__algorithm/move_backward.h
index 61e29c5c396f1..2442832066bd1 100644
--- a/libcxx/include/__cxx03/__algorithm/move_backward.h
+++ b/libcxx/include/__cxx03/__algorithm/move_backward.h
@@ -53,12 +53,12 @@ struct __move_backward_impl {
     auto __slast  = _Traits::__segment(__last);
     if (__sfirst == __slast) {
       auto __iters =
-          std::__move_backward<_AlgPolicy>(_Traits::__local(__first), _Traits::__local(__last), std::move(__result));
+          std::__move_backward<_AlgPolicy>(_Traits::__local_it(__first), _Traits::__local_it(__last), std::move(__result));
       return std::make_pair(__last, __iters.second);
     }
 
     __result =
-        std::__move_backward<_AlgPolicy>(_Traits::__begin(__slast), _Traits::__local(__last), std::move(__result))
+        std::__move_backward<_AlgPolicy>(_Traits::__begin(__slast), _Traits::__local_it(__last), std::move(__result))
             .second;
     --__slast;
     while (__sfirst != __slast) {
@@ -67,7 +67,7 @@ struct __move_backward_impl {
               .second;
       --__slast;
     }
-    __result = std::__move_backward<_AlgPolicy>(_Traits::__local(__first), _Traits::__end(__slast), std::move(__result))
+    __result = std::__move_backward<_AlgPolicy>(_Traits::__local_it(__first), _Traits::__end(__slast), std::move(__result))
                    .second;
     return std::make_pair(__last, std::move(__result));
   }
@@ -87,7 +87,7 @@ struct __move_backward_impl {
 
     auto __orig_last = __last;
 
-    auto __local_last       = _Traits::__local(__result);
+    auto __local_last       = _Traits::__local_it(__result);
     auto __segment_iterator = _Traits::__segment(__result);
     while (true) {
       auto __local_first = _Traits::__begin(__segment_iterator);
diff --git a/libcxx/include/__cxx03/__iterator/segmented_iterator.h b/libcxx/include/__cxx03/__iterator/segmented_iterator.h
index 7e353d620dc83..9ad207bf34086 100644
--- a/libcxx/include/__cxx03/__iterator/segmented_iterator.h
+++ b/libcxx/include/__cxx03/__iterator/segmented_iterator.h
@@ -28,7 +28,7 @@
 // - static __segment_iterator Traits::__segment(It __it)
 //   Returns an iterator to the segment that the provided iterator is in.
 //
-// - static __local_iterator Traits::__local(It __it)
+// - static __local_iterator Traits::__local_it(It __it)
 //   Returns the local iterator pointing to the element that the provided iterator points to.
 //
 // - static __local_iterator Traits::__begin(__segment_iterator __it)
@@ -58,7 +58,7 @@ struct __segmented_iterator_traits;
   using __local_iterator   = ...;
 
   static __segment_iterator __segment(_Iterator);
-  static __local_iterator __local(_Iterator);
+  static __local_iterator __local_it(_Iterator);
   static __local_iterator __begin(__segment_iterator);
   static __local_iterator __end(__segment_iterator);
   static _Iterator __compose(__segment_iterator, __local_iterator);
diff --git a/libcxx/include/__cxx03/deque b/libcxx/include/__cxx03/deque
index fcf9d606f408f..30d45caba2c44 100644
--- a/libcxx/include/__cxx03/deque
+++ b/libcxx/include/__cxx03/deque
@@ -401,19 +401,19 @@ public:
   using __local_iterator        = _Pointer;
 
   static _LIBCPP_HIDE_FROM_ABI __segment_iterator __segment(_Iterator __iter) { return __iter.__m_iter_; }
-  static _LIBCPP_HIDE_FROM_ABI __local_iterator __local(_Iterator __iter) { return __iter.__ptr_; }
+  static _LIBCPP_HIDE_FROM_ABI __local_iterator __local_it(_Iterator __iter) { return __iter.__ptr_; }
   static _LIBCPP_HIDE_FROM_ABI __local_iterator __begin(__segment_iterator __iter) { return *__iter; }
 
   static _LIBCPP_HIDE_FROM_ABI __local_iterator __end(__segment_iterator __iter) {
     return *__iter + _Iterator::__block_size;
   }
 
-  static _LIBCPP_HIDE_FROM_ABI _Iterator __compose(__segment_iterator __segment, __local_iterator __local) {
-    if (__segment && __local == __end(__segment)) {
+  static _LIBCPP_HIDE_FROM_ABI _Iterator __compose(__segment_iterator __segment, __local_iterator __local_it) {
+    if (__segment && __local_it == __end(__segment)) {
       ++__segment;
       return _Iterator(__segment, *__segment);
     }
-    return _Iterator(__segment, __local);
+    return _Iterator(__segment, __local_it);
   }
 };
 
diff --git a/libcxx/include/__iterator/segmented_iterator.h b/libcxx/include/__iterator/segmented_iterator.h
index 5df9737137101..45c554b0a89f3 100644
--- a/libcxx/include/__iterator/segmented_iterator.h
+++ b/libcxx/include/__iterator/segmented_iterator.h
@@ -28,7 +28,7 @@
 // - static __segment_iterator Traits::__segment(It __it)
 //   Returns an iterator to the segment that the provided iterator is in.
 //
-// - static __local_iterator Traits::__local(It __it)
+// - static __local_iterator Traits::__local_it(It __it)
 //   Returns the local iterator pointing to the element that the provided iterator points to.
 //
 // - static __local_iterator Traits::__begin(__segment_iterator __it)
@@ -59,7 +59,7 @@ struct __segmented_iterator_traits;
   using __local_iterator   = ...;
 
   static __segment_iterator __segment(_Iterator);
-  static __local_iterator __local(_Iterator);
+  static __local_iterator __local_it(_Iterator);
   static __local_iterator __begin(__segment_iterator);
   static __local_iterator __end(__segment_iterator);
   static _Iterator __compose(__segment_iterator, __local_iterator);
diff --git a/libcxx/include/__ranges/join_view.h b/libcxx/include/__ranges/join_view.h
index 327b349f476a7..b374e552480ea 100644
--- a/libcxx/include/__ranges/join_view.h
+++ b/libcxx/include/__ranges/join_view.h
@@ -392,7 +392,7 @@ struct __segmented_iterator_traits<_JoinViewIterator> {
     return __segment_iterator(__iter.__outer_, __iter.__parent_);
   }
 
-  static constexpr _LIBCPP_HIDE_FROM_ABI __local_iterator __local(_JoinViewIterator __iter) {
+  static constexpr _LIBCPP_HIDE_FROM_ABI __local_iterator __local_it(_JoinViewIterator __iter) {
     if (ranges::empty(__iter.__parent_->__base_))
       return {};
     if (!__iter.__inner_.has_value())
diff --git a/libcxx/include/deque b/libcxx/include/deque
index 395a1076fd3c4..d23874ef48a87 100644
--- a/libcxx/include/deque
+++ b/libcxx/include/deque
@@ -465,19 +465,19 @@ public:
   using __local_iterator _LIBCPP_NODEBUG   = _Pointer;
 
   static _LIBCPP_HIDE_FROM_ABI __segment_iterator __segment(_Iterator __iter) { return __iter.__m_iter_; }
-  static _LIBCPP_HIDE_FROM_ABI __local_iterator __local(_Iterator __iter) { return __iter.__ptr_; }
+  static _LIBCPP_HIDE_FROM_ABI __local_iterator __local_it(_Iterator __iter) { return __iter.__ptr_; }
   static _LIBCPP_HIDE_FROM_ABI __local_iterator __begin(__segment_iterator __iter) { return *__iter; }
 
   static _LIBCPP_HIDE_FROM_ABI __local_iterator __end(__segment_iterator __iter) {
     return *__iter + _Iterator::__block_size;
   }
 
-  static _LIBCPP_HIDE_FROM_ABI _Iterator __compose(__segment_iterator __segment, __local_iterator __local) {
-    if (__segment && __local == __end(__segment)) {
+  static _LIBCPP_HIDE_FROM_ABI _Iterator __compose(__segment_iterator __segment, __local_iterator __local_it) {
+    if (__segment && __local_it == __end(__segment)) {
       ++__segment;
       return _Iterator(__segment, *__segment);
     }
-    return _Iterator(__segment, __local);
+    return _Iterator(__segment, __local_it);
   }
 };
 
diff --git a/libcxx/src/experimental/include/tzdb/types_private.h b/libcxx/src/experimental/include/tzdb/types_private.h
index c86982948b61f..5dd3d87a92487 100644
--- a/libcxx/src/experimental/include/tzdb/types_private.h
+++ b/libcxx/src/experimental/include/tzdb/types_private.h
@@ -58,11 +58,11 @@ struct __constrained_weekday {
 //  Sun<=25  last Sunday on or before the 25th
 using __on = variant<day, weekday_last, __constrained_weekday>;
 
-enum class __clock { __local, __standard, __universal };
+enum class __clock { __local_tm, __standard_tm, __universal_tm };
 
 struct __at {
   seconds __time{0};
-  __tz::__clock __clock{__tz::__clock::__local};
+  __tz::__clock __clock{__tz::__clock::__local_tm};
 };
 
 struct __save {
@@ -107,7 +107,7 @@ struct __continuation {
   year __year = chrono::year::min();
   month __in{January};
   __tz::__on __on{chrono::day{1}};
-  __tz::__at __at{chrono::seconds{0}, __tz::__clock::__local};
+  __tz::__at __at{chrono::seconds{0}, __tz::__clock::__local_tm};
 };
 
 } // namespace chrono::__tz
diff --git a/libcxx/src/experimental/time_zone.cpp b/libcxx/src/experimental/time_zone.cpp
index a735800b60317..7171659725277 100644
--- a/libcxx/src/experimental/time_zone.cpp
+++ b/libcxx/src/experimental/time_zone.cpp
@@ -194,7 +194,7 @@ __format(const __tz::__continuation& __continuation, const string& __letters, se
 
 [[nodiscard]] static seconds __at_to_sys_seconds(const __tz::__continuation& __continuation) {
   switch (__continuation.__at.__clock) {
-  case __tz::__clock::__local:
+  case __tz::__clock::__local_tm:
     return __continuation.__at.__time - __continuation.__stdoff -
            std::visit(
                [](const auto& __value) {
@@ -214,10 +214,10 @@ __format(const __tz::__continuation& __continuation, const string& __letters, se
                },
                __continuation.__rules);
 
-  case __tz::__clock::__universal:
+  case __tz::__clock::__universal_tm:
     return __continuation.__at.__time;
 
-  case __tz::__clock::__standard:
+  case __tz::__clock::__standard_tm:
     return __continuation.__at.__time - __continuation.__stdoff;
   }
   std::__libcpp_unreachable();
@@ -266,7 +266,7 @@ class __named_rule_until {
             // However SAVE can be negative, which would add a value to maximum
             // leading to undefined behaviour. In practice this often results in
             // an overflow to a very small value.
-            __until_ != sys_seconds::max() && __continuation.__at.__clock == __tz::__clock::__local} {}
+            __until_ != sys_seconds::max() && __continuation.__at.__clock == __tz::__clock::__local_tm} {}
 
   // Gives the unadjusted until value, this is useful when the SAVE is not known
   // at all.
@@ -284,7 +284,7 @@ class __named_rule_until {
 
 [[nodiscard]] static seconds __at_to_seconds(seconds __stdoff, const __tz::__rule& __rule) {
   switch (__rule.__at.__clock) {
-  case __tz::__clock::__local:
+  case __tz::__clock::__local_tm:
     // Local time and standard time behave the same. This is not
     // correct. Local time needs to adjust for the current saved time.
     // To know the saved time the rules need to be known and sorted.
@@ -292,10 +292,10 @@ class __named_rule_until {
     // saving of the local time later.
     return __rule.__at.__time - __stdoff;
 
-  case __tz::__clock::__universal:
+  case __tz::__clock::__universal_tm:
     return __rule.__at.__time;
 
-  case __tz::__clock::__standard:
+  case __tz::__clock::__standard_tm:
     return __rule.__at.__time - __stdoff;
   }
   std::__libcpp_unreachable();
@@ -396,13 +396,13 @@ __get_rules(const __tz::__rules_storage_type& __rules_db, const string& __rule_n
 
 [[nodiscard]] static seconds __at_to_seconds(seconds __stdoff, seconds __save, const __tz::__rule& __rule) {
   switch (__rule.__at.__clock) {
-  case __tz::__clock::__local:
+  case __tz::__clock::__local_tm:
     return __rule.__at.__time - __stdoff - __save;
 
-  case __tz::__clock::__universal:
+  case __tz::__clock::__universal_tm:
     return __rule.__at.__time;
 
-  case __tz::__clock::__standard:
+  case __tz::__clock::__standard_tm:
     return __rule.__at.__time - __stdoff;
   }
   std::__libcpp_unreachable();
diff --git a/libcxx/src/experimental/tzdb.cpp b/libcxx/src/experimental/tzdb.cpp
index ac5c62bb81902..17861764f9298 100644
--- a/libcxx/src/experimental/tzdb.cpp
+++ b/libcxx/src/experimental/tzdb.cpp
@@ -408,18 +408,18 @@ static void __matches(istream& __input, string_view __expected) {
 [[nodiscard]] static __tz::__clock __parse_clock(istream& __input) {
   switch (__input.get()) { // case sensitive
   case 'w':
-    return __tz::__clock::__local;
+    return __tz::__clock::__local_tm;
   case 's':
-    return __tz::__clock::__standard;
+    return __tz::__clock::__standard_tm;
 
   case 'u':
   case 'g':
   case 'z':
-    return __tz::__clock::__universal;
+    return __tz::__clock::__universal_tm;
   }
 
   __input.unget();
-  return __tz::__clock::__local;
+  return __tz::__clock::__local_tm;
 }
 
 [[nodiscard]] static bool __parse_dst(istream& __input, seconds __offset) {
diff --git a/libcxx/test/libcxx/time/time.zone/time.zone.db/rules.pass.cpp b/libcxx/test/libcxx/time/time.zone/time.zone.db/rules.pass.cpp
index 237a206b3a95b..fc8ffe4234389 100644
--- a/libcxx/test/libcxx/time/time.zone/time.zone.db/rules.pass.cpp
+++ b/libcxx/test/libcxx/time/time.zone/time.zone.db/rules.pass.cpp
@@ -479,35 +479,35 @@ R a 0 1 - Ja Su>=31 - 2s -
   assert(result.rules[0].second.size() == 10);
 
   assert(result.rules[0].second[0].__at.__time == std::chrono::hours(2));
-  assert(result.rules[0].second[0].__at.__clock == std::chrono::__tz::__clock::__local);
+  assert(result.rules[0].second[0].__at.__clock == std::chrono::__tz::__clock::__local_tm);
 
   assert(result.rules[0].second[1].__at.__time == std::chrono::hours(2));
-  assert(result.rules[0].second[1].__at.__clock == std::chrono::__tz::__clock::__standard);
+  assert(result.rules[0].second[1].__at.__clock == std::chrono::__tz::__clock::__standard_tm);
 
   assert(result.rules[0].second[2].__at.__time ==
          std::chrono::hours(1) + std::chrono::minutes(28) + std::chrono::seconds(14));
-  assert(result.rules[0].second[2].__at.__clock == std::chrono::__tz::__clock::__universal);
+  assert(result.rules[0].second[2].__at.__clock == std::chrono::__tz::__clock::__universal_tm);
 
   assert(result.rules[0].second[3].__at.__time == std::chrono::minutes(19) + std::chrono::seconds(32));
-  assert(result.rules[0].second[3].__at.__clock == std::chrono::__tz::__clock::__universal);
+  assert(result.rules[0].second[3].__at.__clock == std::chrono::__tz::__clock::__universal_tm);
 
   assert(result.rules[0].second[4].__at.__time == std::chrono::hours(12));
-  assert(result.rules[0].second[4].__at.__clock == std::chrono::__tz::__clock::__universal);
+  assert(result.rules[0].second[4].__at.__clock == std::chrono::__tz::__clock::__universal_tm);
 
   assert(result.rules[0].second[5].__at.__time == std::chrono::hours(15));
-  assert(result.rules[0].second[5].__at.__clock == std::chrono::__tz::__clock::__local);
+  assert(result.rules[0].second[5].__at.__clock == std::chrono::__tz::__clock::__local_tm);
 
   assert(result.rules[0].second[6].__at.__time == std::chrono::hours(24));
-  assert(result.rules[0].second[6].__at.__clock == std::chrono::__tz::__clock::__local);
+  assert(result.rules[0].second[6].__at.__clock == std::chrono::__tz::__clock::__local_tm);
 
   assert(result.rules[0].second[7].__at.__time == std::chrono::hours(260));
-  assert(result.rules[0].second[7].__at.__clock == std::chrono::__tz::__clock::__local);
+  assert(result.rules[0].second[7].__at.__clock == std::chrono::__tz::__clock::__local_tm);
 
   assert(result.rules[0].second[8].__at.__time == -(std::chrono::hours(2) + std::chrono::minutes(30)));
-  assert(result.rules[0].second[8].__at.__clock == std::chrono::__tz::__clock::__local);
+  assert(result.rules[0].second[8].__at.__clock == std::chrono::__tz::__clock::__local_tm);
 
   assert(result.rules[0].second[9].__at.__time == std::chrono::hours(0)); // The man page expresses it in hours
-  assert(result.rules[0].second[9].__at.__clock == std::chrono::__tz::__clock::__local);
+  assert(result.rules[0].second[9].__at.__clock == std::chrono::__tz::__clock::__local_tm);
 }
 
 static void test_save() {
diff --git a/libcxx/test/libcxx/time/time.zone/time.zone.db/zones.pass.cpp b/libcxx/test/libcxx/time/time.zone/time.zone.db/zones.pass.cpp
index ded89ed808e17..19115ff9b6b0f 100644
--- a/libcxx/test/libcxx/time/time.zone/time.zone.db/zones.pass.cpp
+++ b/libcxx/test/libcxx/time/time.zone/time.zone.db/zones.pass.cpp
@@ -212,32 +212,32 @@ Z nj 0 r f 42 Jul 1 -
   assert(continuations(result.zones[0])[0].__in == std::chrono::January);
   assert(std::get<std::chrono::day>(continuations(result.zones[0])[0].__on) == std::chrono::day(1));
   assert(continuations(result.zones[0])[0].__at.__time == std::chrono::seconds(0));
-  assert(continuations(result.zones[0])[0].__at.__clock == std::chrono::__tz::__clock::__local);
+  assert(continuations(result.zones[0])[0].__at.__clock == std::chrono::__tz::__clock::__local_tm);
 
   assert(continuations(result.zones[1])[0].__year == std::chrono::year(1000));
   assert(continuations(result.zones[1])[0].__in == std::chrono::January);
   assert(std::get<std::chrono::day>(continuations(result.zones[1])[0].__on) == std::chrono::day(1));
   assert(continuations(result.zones[1])[0].__at.__time == std::chrono::seconds(0));
-  assert(continuations(result.zones[1])[0].__at.__clock == std::chrono::__tz::__clock::__local);
+  assert(continuations(result.zones[1])[0].__at.__clock == std::chrono::__tz::__clock::__local_tm);
 
   assert(continuations(result.zones[2])[0].__year == std::chrono::year(-1000));
   assert(continuations(result.zones[2])[0].__in == std::chrono::November);
   assert(std::get<std::chrono::day>(continuations(result.zones[2])[0].__on) == std::chrono::day(1));
   assert(continuations(result.zones[2])[0].__at.__time == std::chrono::seconds(0));
-  assert(continuations(result.zones[2])[0].__at.__clock == std::chrono::__tz::__clock::__local);
+  assert(continuations(result.zones[2])[0].__at.__clock == std::chrono::__tz::__clock::__local_tm);
 
   assert(continuations(result.zones[3])[0].__year == std::chrono::year::max());
   assert(continuations(result.zones[3])[0].__in == std::chrono::September);
   assert(std::get<std::chrono::day>(continuations(result.zones[3])[0].__on) == std::chrono::day(31));
   assert(continuations(result.zones[3])[0].__at.__time == std::chrono::seconds(0));
-  assert(continuations(result.zones[3])[0].__at.__clock == std::chrono::__tz::__clock::__local);
+  assert(continuations(result.zones[3])[0].__at.__clock == std::chrono::__tz::__clock::__local_tm);
 
   assert(continuations(result.zones[4])[0].__year == std::chrono::year(0));
   assert(continuations(result.zones[4])[0].__in == std::chrono::January);
   assert(std::get<std::chrono::weekday_last>(continuations(result.zones[4])[0].__on) ==
          std::chrono::weekday_last{std::chrono::Wednesday});
   assert(continuations(result.zones[4])[0].__at.__time == std::chrono::seconds(0));
-  assert(continuations(result.zones[4])[0].__at.__clock == std::chrono::__tz::__clock::__local);
+  assert(continuations(result.zones[4])[0].__at.__clock == std::chrono::__tz::__clock::__local_tm);
 
   assert(continuations(result.zones[5])[0].__year == std::chrono::year(-42));
   assert(continuations(result.zones[5])[0].__in == std::chrono::June);
@@ -246,7 +246,7 @@ Z nj 0 r f 42 Jul 1 -
   assert(r.__comparison == std::chrono::__tz::__constrained_weekday::__le);
   assert(r.__day == std::chrono::day(1));
   assert(continuations(result.zones[5])[0].__at.__time == std::chrono::seconds(0));
-  assert(continuations(result.zones[5])[0].__at.__clock == std::chrono::__tz::__clock::__local);
+  assert(continuations(result.zones[5])[0].__at.__clock == std::chrono::__tz::__clock::__local_tm);
 
   assert(continuations(result.zones[6])[0].__year == std::chrono::year(42));
   assert(continuations(result.zones[6])[0].__in == std::chrono::July);
@@ -255,26 +255,26 @@ Z nj 0 r f 42 Jul 1 -
   assert(r.__comparison == std::chrono::__tz::__constrained_weekday::__ge);
   assert(r.__day == std::chrono::day(12));
   assert(continuations(result.zones[6])[0].__at.__time == std::chrono::seconds(0));
-  assert(continuations(result.zones[6])[0].__at.__clock == std::chrono::__tz::__clock::__local);
+  assert(continuations(result.zones[6])[0].__at.__clock == std::chrono::__tz::__clock::__local_tm);
 
   assert(continuations(result.zones[7])[0].__year == std::chrono::year(42));
   assert(continuations(result.zones[7])[0].__in == std::chrono::July);
   assert(std::get<std::chrono::day>(continuations(result.zones[7])[0].__on) == std::chrono::day(1));
   assert(continuations(result.zones[7])[0].__at.__time == std::chrono::hours(2));
-  assert(continuations(result.zones[7])[0].__at.__clock == std::chrono::__tz::__clock::__local);
+  assert(continuations(result.zones[7])[0].__at.__clock == std::chrono::__tz::__clock::__local_tm);
 
   assert(continuations(result.zones[8])[0].__year == std::chrono::year(42));
   assert(continuations(result.zones[8])[0].__in == std::chrono::July);
   assert(std::get<std::chrono::day>(continuations(result.zones[8])[0].__on) == std::chrono::day(1));
   assert(continuations(result.zones[8])[0].__at.__time ==
          std::chrono::hours(1) + std::chrono::minutes(28) + std::chrono::seconds(14));
-  assert(continuations(result.zones[8])[0].__at.__clock == std::chrono::__tz::__clock::__universal);
+  assert(continuations(result.zones[8])[0].__at.__clock == std::chrono::__tz::__clock::__universal_tm);
 
   assert(continuations(result.zones[9])[0].__year == std::chrono::year(42));
   assert(continuations(result.zones[9])[0].__in == std::chrono::July);
   assert(std::get<std::chrono::day>(continuations(result.zones[9])[0].__on) == std::chrono::day(1));
   assert(continuations(result.zones[9])[0].__at.__time == std::chrono::hours(0)); // The man page expresses it in hours
-  assert(continuations(result.zones[9])[0].__at.__clock == std::chrono::__tz::__clock::__local);
+  assert(continuations(result.zones[9])[0].__at.__clock == std::chrono::__tz::__clock::__local_tm);
 }
 
 static void test_continuation() {
@@ -301,32 +301,32 @@ Z na 0 r f
   assert(continuations(result.zones[0])[0].__in == std::chrono::January);
   assert(std::get<std::chrono::day>(continuations(result.zones[0])[0].__on) == std::chrono::day(1));
   assert(continuations(result.zones[0])[0].__at.__time == std::chrono::seconds(0));
-  assert(continuations(result.zones[0])[0].__at.__clock == std::chrono::__tz::__clock::__local);
+  assert(continuations(result.zones[0])[0].__at.__clock == std::chrono::__tz::__clock::__local_tm);
 
   assert(continuations(result.zones[0])[1].__year == std::chrono::year(1000));
   assert(continuations(result.zones[0])[1].__in == std::chrono::January);
   assert(std::get<std::chrono::day>(continuations(result.zones[0])[1].__on) == std::chrono::day(1));
   assert(continuations(result.zones[0])[1].__at.__time == std::chrono::seconds(0));
-  assert(continuations(result.zones[0])[1].__at.__clock == std::chrono::__tz::__clock::__local);
+  assert(continuations(result.zones[0])[1].__at.__clock == std::chrono::__tz::__clock::__local_tm);
 
   assert(continuations(result.zones[0])[2].__year == std::chrono::year(-1000));
   assert(continuations(result.zones[0])[2].__in == std::chrono::November);
   assert(std::get<std::chrono::day>(continuations(result.zones[0])[2].__on) == std::chrono::day(1));
   assert(continuations(result.zones[0])[2].__at.__time == std::chrono::seconds(0));
-  assert(continuations(result.zones[0])[2].__at.__clock == std::chrono::__tz::__clock::__local);
+  assert(continuations(result.zones[0])[2].__at.__clock == std::chrono::__tz::__clock::__local_tm);
 
   assert(continuations(result.zones[0])[3].__year == std::chrono::year::max());
   assert(continuations(result.zones[0])[3].__in == std::chrono::September);
   assert(std::get<std::chrono::day>(continuations(result.zones[0])[3].__on) == std::chrono::day(31));
   assert(continuations(result.zones[0])[3].__at.__time == std::chrono::seconds(0));
-  assert(continuations(result.zones[0])[3].__at.__clock == std::chrono::__tz::__clock::__local);
+  assert(continuations(result.zones[0])[3].__at.__clock == std::chrono::__tz::__clock::__local_tm);
 
   assert(continuations(result.zones[0])[4].__year == std::chrono::year(0));
   assert(continuations(result.zones[0])[4].__in == std::chrono::January);
   assert(std::get<std::chrono::weekday_last>(continuations(result.zones[0])[4].__on) ==
          std::chrono::weekday_last{std::chrono::Wednesday});
   assert(continuations(result.zones[0])[4].__at.__time == std::chrono::seconds(0));
-  assert(continuations(result.zones[0])[4].__at.__clock == std::chrono::__tz::__clock::__local);
+  assert(continuations(result.zones[0])[4].__at.__clock == std::chrono::__tz::__clock::__local_tm);
 
   assert(continuations(result.zones[0])[5].__year == std::chrono::year(-42));
   assert(continuations(result.zones[0])[5].__in == std::chrono::June);
@@ -335,7 +335,7 @@ Z na 0 r f
   assert(r.__comparison == std::chrono::__tz::__constrained_weekday::__le);
   assert(r.__day == std::chrono::day(1));
   assert(continuations(result.zones[0])[5].__at.__time == std::chrono::seconds(0));
-  assert(continuations(result.zones[0])[5].__at.__clock == std::chrono::__tz::__clock::__local);
+  assert(continuations(result.zones[0])[5].__at.__clock == std::chrono::__tz::__clock::__local_tm);
 
   assert(continuations(result.zones[0])[6].__year == std::chrono::year(42));
   assert(continuations(result.zones[0])[6].__in == std::chrono::July);
@@ -344,26 +344,26 @@ Z na 0 r f
   assert(r.__comparison == std::chrono::__tz::__constrained_weekday::__ge);
   assert(r.__day == std::chrono::day(12));
   assert(continuations(result.zones[0])[6].__at.__time == std::chrono::seconds(0));
-  assert(continuations(result.zones[0])[6].__at.__clock == std::chrono::__tz::__clock::__local);
+  assert(continuations(result.zones[0])[6].__at.__clock == std::chrono::__tz::__clock::__local_tm);
 
   assert(continuations(result.zones[0])[7].__year == std::chrono::year(42));
   assert(continuations(result.zones[0])[7].__in == std::chrono::July);
   assert(std::get<std::chrono::day>(continuations(result.zones[0])[7].__on) == std::chrono::day(1));
   assert(continuations(result.zones[0])[7].__at.__time == std::chrono::hours(2));
-  assert(continuations(result.zones[0])[7].__at.__clock == std::chrono::__tz::__clock::__local);
+  assert(continuations(result.zones[0])[7].__at.__clock == std::chrono::__tz::__clock::__local_tm);
 
   assert(continuations(result.zones[0])[8].__year == std::chrono::year(42));
   assert(continuations(result.zones[0])[8].__in == std::chrono::July);
   assert(std::get<std::chrono::day>(continuations(result.zones[0])[8].__on) == std::chrono::day(1));
   assert(continuations(result.zones[0])[8].__at.__time ==
          std::chrono::hours(1) + std::chrono::minutes(28) + std::chrono::seconds(14));
-  assert(continuations(result.zones[0])[8].__at.__clock == std::chrono::__tz::__clock::__universal);
+  assert(continuations(result.zones[0])[8].__at.__clock == std::chrono::__tz::__clock::__universal_tm);
 
   assert(continuations(result.zones[0])[9].__year == std::chrono::year(42));
   assert(continuations(result.zones[0])[9].__in == std::chrono::July);
   assert(std::get<std::chrono::day>(continuations(result.zones[0])[9].__on) == std::chrono::day(1));
   assert(continuations(result.zones[0])[9].__at.__time == std::chrono::hours(0)); // The man page expresses it in hours
-  assert(continuations(result.zones[0])[9].__at.__clock == std::chrono::__tz::__clock::__local);
+  assert(continuations(result.zones[0])[9].__at.__clock == std::chrono::__tz::__clock::__local_tm);
 }
 
 int main(int, const char**) {



More information about the libcxx-commits mailing list