[upstream_utils] Add cbegin()/cend()/crbegin()/crend() to SmallVector (#8918)

std::vector has these.
This commit is contained in:
Tyler Veness
2026-05-26 21:55:50 -07:00
committed by GitHub
parent ac7a9524f8
commit aedee56e22
35 changed files with 69 additions and 33 deletions

View File

@@ -1,7 +1,7 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: PJ Reiniger <pj.reiniger@gmail.com>
Date: Sat, 7 May 2022 22:09:18 -0400
Subject: [PATCH 01/33] Remove StringRef, ArrayRef, and Optional
Subject: [PATCH 01/34] Remove StringRef, ArrayRef, and Optional
---
llvm/include/llvm/ADT/PointerUnion.h | 1 -

View File

@@ -1,7 +1,7 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: PJ Reiniger <pj.reiniger@gmail.com>
Date: Sat, 7 May 2022 22:12:41 -0400
Subject: [PATCH 02/33] Wrap std::min/max calls in parens, for Windows warnings
Subject: [PATCH 02/34] Wrap std::min/max calls in parens, for Windows warnings
---
llvm/include/llvm/ADT/DenseMap.h | 14 +++++++-------

View File

@@ -1,7 +1,7 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: PJ Reiniger <pj.reiniger@gmail.com>
Date: Sat, 7 May 2022 22:13:55 -0400
Subject: [PATCH 03/33] FunctionExtras: change unique_function storage size
Subject: [PATCH 03/34] FunctionExtras: change unique_function storage size
---
llvm/include/llvm/ADT/FunctionExtras.h | 4 ++--

View File

@@ -1,7 +1,7 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: PJ Reiniger <pj.reiniger@gmail.com>
Date: Sat, 7 May 2022 22:17:19 -0400
Subject: [PATCH 04/33] Threading updates
Subject: [PATCH 04/34] Threading updates
- Remove guards for threads and exception
- Replace std::lock_guard with std::scoped_lock

View File

@@ -1,7 +1,7 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: PJ Reiniger <pj.reiniger@gmail.com>
Date: Sat, 7 May 2022 22:28:13 -0400
Subject: [PATCH 05/33] \#ifdef guard safety
Subject: [PATCH 05/34] \#ifdef guard safety
Prevents redefinition if someone is pulling in real LLVM, since the macros are in global namespace
---

View File

@@ -1,7 +1,7 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: PJ Reiniger <pj.reiniger@gmail.com>
Date: Sat, 7 May 2022 22:37:34 -0400
Subject: [PATCH 06/33] Explicitly use std::
Subject: [PATCH 06/34] Explicitly use std::
---
llvm/include/llvm/ADT/DenseMap.h | 11 ++++++-----

View File

@@ -1,7 +1,7 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: PJ Reiniger <pj.reiniger@gmail.com>
Date: Sat, 7 May 2022 22:53:50 -0400
Subject: [PATCH 07/33] Remove format_provider
Subject: [PATCH 07/34] Remove format_provider
---
llvm/include/llvm/Support/Chrono.h | 126 ------------------------

View File

@@ -1,7 +1,7 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: PJ Reiniger <pj.reiniger@gmail.com>
Date: Sun, 8 May 2022 13:34:07 -0400
Subject: [PATCH 08/33] Add compiler warning pragmas
Subject: [PATCH 08/34] Add compiler warning pragmas
---
llvm/include/llvm/ADT/FunctionExtras.h | 11 +++++++++++

View File

@@ -1,7 +1,7 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: PJ Reiniger <pj.reiniger@gmail.com>
Date: Sun, 8 May 2022 13:43:50 -0400
Subject: [PATCH 09/33] Remove unused functions
Subject: [PATCH 09/34] Remove unused functions
---
llvm/include/llvm/ADT/SmallString.h | 77 ------

View File

@@ -1,7 +1,7 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: PJ Reiniger <pj.reiniger@gmail.com>
Date: Thu, 5 May 2022 23:18:34 -0400
Subject: [PATCH 10/33] SmallVector: detemplatize SmallVectorBase
Subject: [PATCH 10/34] SmallVector: detemplatize SmallVectorBase
---
llvm/include/llvm/ADT/SmallVector.h | 35 ++++++++++-------------------

View File

@@ -1,7 +1,7 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: PJ Reiniger <pj.reiniger@gmail.com>
Date: Sun, 8 May 2022 13:48:59 -0400
Subject: [PATCH 11/33] raw_ostream: add vector support
Subject: [PATCH 11/34] raw_ostream: add vector support
---
llvm/include/llvm/Support/raw_ostream.h | 115 ++++++++++++++++++++++++

View File

@@ -1,7 +1,7 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: PJ Reiniger <pj.reiniger@gmail.com>
Date: Thu, 5 May 2022 18:09:45 -0400
Subject: [PATCH 12/33] MathExtras: delete numbers
Subject: [PATCH 12/34] MathExtras: delete numbers
---
llvm/include/llvm/Support/MathExtras.h | 31 --------------------------

View File

@@ -1,7 +1,7 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: PJ Reiniger <pj.reiniger@gmail.com>
Date: Tue, 3 May 2022 22:50:24 -0400
Subject: [PATCH 13/33] MathExtras: add Lerp() and sgn()
Subject: [PATCH 13/34] MathExtras: add Lerp() and sgn()
---
llvm/include/llvm/Support/MathExtras.h | 21 +++++++++++++++++++++

View File

@@ -1,7 +1,7 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: PJ Reiniger <pj.reiniger@gmail.com>
Date: Sun, 8 May 2022 16:38:11 -0400
Subject: [PATCH 14/33] Fixup includes
Subject: [PATCH 14/34] Fixup includes
---
llvm/include/llvm/Support/PointerLikeTypeTraits.h | 1 +

View File

@@ -1,7 +1,7 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: PJ Reiniger <pj.reiniger@gmail.com>
Date: Tue, 3 May 2022 20:22:38 -0400
Subject: [PATCH 15/33] Windows support
Subject: [PATCH 15/34] Windows support
---
.../llvm/Support/Windows/WindowsSupport.h | 56 +++++------

View File

@@ -1,7 +1,7 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Tyler Veness <calcmogul@gmail.com>
Date: Tue, 17 Sep 2024 21:19:52 -0700
Subject: [PATCH 16/33] ErrorHandling: remove call to RtlGetLastNtStatus()
Subject: [PATCH 16/34] ErrorHandling: remove call to RtlGetLastNtStatus()
---
llvm/lib/Support/ErrorHandling.cpp | 23 -----------------------

View File

@@ -1,7 +1,7 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: PJ Reiniger <pj.reiniger@gmail.com>
Date: Sun, 8 May 2022 16:46:20 -0400
Subject: [PATCH 17/33] ErrorHandling: prefer fmtlib
Subject: [PATCH 17/34] ErrorHandling: prefer fmtlib
---
llvm/lib/Support/ErrorHandling.cpp | 19 ++++++-------------

View File

@@ -1,7 +1,7 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: PJ Reiniger <pj.reiniger@gmail.com>
Date: Sun, 8 May 2022 16:49:36 -0400
Subject: [PATCH 18/33] raw_ostream: prefer wpi's fs.h
Subject: [PATCH 18/34] raw_ostream: prefer wpi's fs.h
---
llvm/include/llvm/Support/raw_ostream.h | 7 ++-----

View File

@@ -1,7 +1,7 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: PJ Reiniger <pj.reiniger@gmail.com>
Date: Sun, 8 May 2022 19:16:51 -0400
Subject: [PATCH 19/33] Remove unused functions
Subject: [PATCH 19/34] Remove unused functions
---
llvm/include/llvm/Support/VersionTuple.h | 1 -

View File

@@ -1,7 +1,7 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: PJ Reiniger <pj.reiniger@gmail.com>
Date: Mon, 9 May 2022 00:04:30 -0400
Subject: [PATCH 20/33] ConvertUTF: use SmallVector for UTF conversion
Subject: [PATCH 20/34] ConvertUTF: use SmallVector for UTF conversion
---
llvm/include/llvm/Support/ConvertUTF.h | 7 ++++---

View File

@@ -1,7 +1,7 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: PJ Reiniger <pj.reiniger@gmail.com>
Date: Thu, 19 May 2022 00:58:36 -0400
Subject: [PATCH 21/33] raw_ostream: use static pointers in raw_ostream
Subject: [PATCH 21/34] raw_ostream: use static pointers in raw_ostream
See #1401
---

View File

@@ -1,7 +1,7 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: PJ Reiniger <pj.reiniger@gmail.com>
Date: Fri, 1 Mar 2024 11:56:17 -0800
Subject: [PATCH 22/33] Endian: constexpr endian byte swap
Subject: [PATCH 22/34] Endian: constexpr endian byte swap
---
llvm/include/llvm/Support/Endian.h | 4 +++-

View File

@@ -1,7 +1,7 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Tyler Veness <calcmogul@gmail.com>
Date: Wed, 10 Aug 2022 17:07:52 -0700
Subject: [PATCH 23/33] PointerUnion: copy type traits from STLExtras
Subject: [PATCH 23/34] PointerUnion: copy type traits from STLExtras
---
llvm/include/llvm/ADT/PointerUnion.h | 46 ++++++++++++++++++++++++++++

View File

@@ -1,7 +1,7 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Leander Schulten <Leander.Schulten@rwth-aachen.de>
Date: Mon, 10 Jul 2023 00:53:43 +0200
Subject: [PATCH 24/33] DenseMap: unused variable in release mode
Subject: [PATCH 24/34] DenseMap: unused variable in release mode
---
llvm/include/llvm/ADT/DenseMap.h | 2 +-

View File

@@ -1,7 +1,7 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Tyler Veness <calcmogul@gmail.com>
Date: Tue, 11 Jul 2023 22:56:09 -0700
Subject: [PATCH 25/33] Use C++20 <bit> header
Subject: [PATCH 25/34] Use C++20 <bit> header
---
llvm/include/llvm/ADT/DenseMap.h | 1 +

View File

@@ -1,7 +1,7 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Tyler Veness <calcmogul@gmail.com>
Date: Sun, 30 Jul 2023 14:17:37 -0700
Subject: [PATCH 26/33] DenseMap: remove printer test
Subject: [PATCH 26/34] DenseMap: remove printer test
LLVM modifies internal GTest headers to support it, which we can't do.
---

View File

@@ -1,7 +1,7 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Peter Johnson <johnson.peter@gmail.com>
Date: Sun, 29 Oct 2023 23:00:08 -0700
Subject: [PATCH 27/33] raw_ostream: Add SetNumBytesInBuffer
Subject: [PATCH 27/34] raw_ostream: Add SetNumBytesInBuffer
---
llvm/include/llvm/Support/raw_ostream.h | 5 +++++

View File

@@ -1,7 +1,7 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Tyler Veness <calcmogul@gmail.com>
Date: Tue, 17 Sep 2024 15:30:31 -0700
Subject: [PATCH 28/33] raw_ostream: Replace errnoAsErrorCode()
Subject: [PATCH 28/34] raw_ostream: Replace errnoAsErrorCode()
---
llvm/lib/Support/raw_ostream.cpp | 4 ++--

View File

@@ -1,7 +1,7 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Peter Johnson <johnson.peter@gmail.com>
Date: Sat, 2 Dec 2023 15:21:32 -0800
Subject: [PATCH 29/33] type_traits.h: Add is_constexpr()
Subject: [PATCH 29/34] type_traits.h: Add is_constexpr()
---
llvm/include/llvm/Support/type_traits.h | 5 +++++

View File

@@ -1,7 +1,7 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Tyler Veness <calcmogul@gmail.com>
Date: Sun, 17 Mar 2024 14:51:11 -0700
Subject: [PATCH 30/33] raw_ostream: remove auto-conversion
Subject: [PATCH 30/34] raw_ostream: remove auto-conversion
---
llvm/lib/Support/raw_ostream.cpp | 13 +------------

View File

@@ -1,7 +1,7 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Tyler Veness <calcmogul@gmail.com>
Date: Tue, 18 Jun 2024 09:07:33 -0700
Subject: [PATCH 31/33] SmallVector: add erase_if()
Subject: [PATCH 31/34] SmallVector: add erase_if()
---
llvm/include/llvm/ADT/SmallVector.h | 8 ++++++++

View File

@@ -1,7 +1,7 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Tyler Veness <calcmogul@gmail.com>
Date: Mon, 23 Dec 2024 22:56:29 -0800
Subject: [PATCH 32/33] MathExtras: fix minIntN() and maxIntN() assertions
Subject: [PATCH 32/34] MathExtras: fix minIntN() and maxIntN() assertions
---
llvm/include/llvm/Support/MathExtras.h | 4 ++--

View File

@@ -1,7 +1,7 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: crueter <crueter@eden-emu.dev>
Date: Wed, 6 May 2026 12:42:53 -0400
Subject: [PATCH 33/33] SmallSet: add SmallSetIterator postincrement operator
Subject: [PATCH 33/34] SmallSet: add SmallSetIterator postincrement operator
Required for Xcode 26.4
---

View File

@@ -0,0 +1,32 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Tyler Veness <calcmogul@gmail.com>
Date: Tue, 26 May 2026 16:55:28 -0700
Subject: [PATCH 34/34] SmallVector: add cbegin()/cend()/crbegin()/crend()
---
llvm/include/llvm/ADT/SmallVector.h | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/llvm/include/llvm/ADT/SmallVector.h b/llvm/include/llvm/ADT/SmallVector.h
index e51771928717625a218981ccd5b9068b63329b02..38d4a23bdd2d46d8b12ccaf27ae44dc6139a54a1 100644
--- a/llvm/include/llvm/ADT/SmallVector.h
+++ b/llvm/include/llvm/ADT/SmallVector.h
@@ -275,14 +275,18 @@ public:
// forward iterator creation methods.
iterator begin() { return (iterator)this->BeginX; }
const_iterator begin() const { return (const_iterator)this->BeginX; }
+ const_iterator cbegin() const { return (const_iterator)this->BeginX; }
iterator end() { return begin() + size(); }
const_iterator end() const { return begin() + size(); }
+ const_iterator cend() const { return begin() + size(); }
// reverse iterator creation methods.
reverse_iterator rbegin() { return reverse_iterator(end()); }
const_reverse_iterator rbegin() const{ return const_reverse_iterator(end()); }
+ const_reverse_iterator crbegin() const{ return const_reverse_iterator(end()); }
reverse_iterator rend() { return reverse_iterator(begin()); }
const_reverse_iterator rend() const { return const_reverse_iterator(begin());}
+ const_reverse_iterator crend() const { return const_reverse_iterator(begin());}
size_type size_in_bytes() const { return size() * sizeof(T); }
size_type max_size() const {

View File

@@ -275,14 +275,18 @@ public:
// forward iterator creation methods.
iterator begin() { return (iterator)this->BeginX; }
const_iterator begin() const { return (const_iterator)this->BeginX; }
const_iterator cbegin() const { return (const_iterator)this->BeginX; }
iterator end() { return begin() + size(); }
const_iterator end() const { return begin() + size(); }
const_iterator cend() const { return begin() + size(); }
// reverse iterator creation methods.
reverse_iterator rbegin() { return reverse_iterator(end()); }
const_reverse_iterator rbegin() const{ return const_reverse_iterator(end()); }
const_reverse_iterator crbegin() const{ return const_reverse_iterator(end()); }
reverse_iterator rend() { return reverse_iterator(begin()); }
const_reverse_iterator rend() const { return const_reverse_iterator(begin());}
const_reverse_iterator crend() const { return const_reverse_iterator(begin());}
size_type size_in_bytes() const { return size() * sizeof(T); }
size_type max_size() const {