Skip to content

Commit

Permalink
[upstream_utils] Add wpi::SmallVector erase_if() (wpilibsuite#6752)
Browse files Browse the repository at this point in the history
  • Loading branch information
calcmogul authored Jun 18, 2024
1 parent b6bd798 commit e2893fc
Show file tree
Hide file tree
Showing 38 changed files with 75 additions and 38 deletions.
Original file line number Diff line number Diff line change
@@ -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/35] Remove StringRef, ArrayRef, and Optional
Subject: [PATCH 01/36] Remove StringRef, ArrayRef, and Optional

---
llvm/include/llvm/ADT/PointerUnion.h | 1 -
Expand Down
Original file line number Diff line number Diff line change
@@ -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/35] Wrap std::min/max calls in parens, for Windows warnings
Subject: [PATCH 02/36] Wrap std::min/max calls in parens, for Windows warnings

---
llvm/include/llvm/ADT/DenseMap.h | 4 ++--
Expand Down
Original file line number Diff line number Diff line change
@@ -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/35] Change unique_function storage size
Subject: [PATCH 03/36] Change unique_function storage size

---
llvm/include/llvm/ADT/FunctionExtras.h | 4 ++--
Expand Down
2 changes: 1 addition & 1 deletion upstream_utils/llvm_patches/0004-Threading-updates.patch
Original file line number Diff line number Diff line change
@@ -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/35] Threading updates
Subject: [PATCH 04/36] Threading updates

- Remove guards for threads and exception
- Prefer scope gaurd over lock gaurd
Expand Down
2 changes: 1 addition & 1 deletion upstream_utils/llvm_patches/0005-ifdef-guard-safety.patch
Original file line number Diff line number Diff line change
@@ -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/35] \#ifdef guard safety
Subject: [PATCH 05/36] \#ifdef guard safety

Prevents redefinition if someone is pulling in real LLVM, since the macros are in global namespace
---
Expand Down
2 changes: 1 addition & 1 deletion upstream_utils/llvm_patches/0006-Explicitly-use-std.patch
Original file line number Diff line number Diff line change
@@ -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/35] Explicitly use std::
Subject: [PATCH 06/36] Explicitly use std::

---
llvm/include/llvm/ADT/SmallSet.h | 2 +-
Expand Down
Original file line number Diff line number Diff line change
@@ -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/35] Remove format_provider
Subject: [PATCH 07/36] Remove format_provider

---
llvm/include/llvm/Support/Chrono.h | 114 ------------------------
Expand Down
Original file line number Diff line number Diff line change
@@ -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/35] Add compiler warning pragmas
Subject: [PATCH 08/36] Add compiler warning pragmas

---
llvm/include/llvm/ADT/FunctionExtras.h | 11 +++++++++++
Expand Down
Original file line number Diff line number Diff line change
@@ -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/35] Remove unused functions
Subject: [PATCH 09/36] Remove unused functions

---
llvm/include/llvm/ADT/SmallString.h | 79 ------
Expand Down
Original file line number Diff line number Diff line change
@@ -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/35] Detemplatize SmallVectorBase
Subject: [PATCH 10/36] Detemplatize SmallVectorBase

---
llvm/include/llvm/ADT/SmallVector.h | 35 ++++++++++-----------------
Expand Down
Original file line number Diff line number Diff line change
@@ -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/35] Add vectors to raw_ostream
Subject: [PATCH 11/36] Add vectors to raw_ostream

---
llvm/include/llvm/Support/raw_ostream.h | 115 ++++++++++++++++++++++++
Expand Down
Original file line number Diff line number Diff line change
@@ -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:16:10 -0400
Subject: [PATCH 12/35] Extra collections features
Subject: [PATCH 12/36] Extra collections features

---
llvm/include/llvm/ADT/StringMap.h | 103 +++++++++++++++++++++++++++++-
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: PJ Reiniger <pj.reiniger@gmail.com>
Date: Wed, 4 May 2022 00:01:00 -0400
Subject: [PATCH 13/35] EpochTracker ABI macro
Subject: [PATCH 13/36] EpochTracker ABI macro

---
llvm/include/llvm/ADT/EpochTracker.h | 2 +-
Expand Down
Original file line number Diff line number Diff line change
@@ -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 14/35] Delete numbers from MathExtras
Subject: [PATCH 14/36] Delete numbers from MathExtras

---
llvm/include/llvm/Support/MathExtras.h | 36 --------------------------
Expand Down
2 changes: 1 addition & 1 deletion upstream_utils/llvm_patches/0015-Add-lerp-and-sgn.patch
Original file line number Diff line number Diff line change
@@ -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 15/35] Add lerp and sgn
Subject: [PATCH 15/36] Add lerp and sgn

---
llvm/include/llvm/Support/MathExtras.h | 20 ++++++++++++++++++++
Expand Down
2 changes: 1 addition & 1 deletion upstream_utils/llvm_patches/0016-Fixup-includes.patch
Original file line number Diff line number Diff line change
@@ -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 16/35] Fixup includes
Subject: [PATCH 16/36] Fixup includes

---
llvm/include/llvm/ADT/StringMap.h | 4 ++++
Expand Down
Original file line number Diff line number Diff line change
@@ -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:42:09 -0400
Subject: [PATCH 17/35] Use std::is_trivially_copy_constructible
Subject: [PATCH 17/36] Use std::is_trivially_copy_constructible

---
llvm/include/llvm/Support/type_traits.h | 16 ----------------
Expand Down
2 changes: 1 addition & 1 deletion upstream_utils/llvm_patches/0018-Windows-support.patch
Original file line number Diff line number Diff line change
@@ -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 18/35] Windows support
Subject: [PATCH 18/36] Windows support

---
.../llvm/Support/Windows/WindowsSupport.h | 45 +++++----
Expand Down
4 changes: 2 additions & 2 deletions upstream_utils/llvm_patches/0019-Prefer-fmtlib.patch
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
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 19/35] Prefer fmtlib
Subject: [PATCH 19/36] Prefer fmtlib

---
llvm/lib/Support/ErrorHandling.cpp | 20 ++++++--------------
1 file changed, 6 insertions(+), 14 deletions(-)

diff --git a/llvm/lib/Support/ErrorHandling.cpp b/llvm/lib/Support/ErrorHandling.cpp
index 3a88178cfbbcf7062a958c7de820247bc913ab33..54137a331ca9e752b02c0f16ae996094a6f2fafa 100644
index 3a88178cfbbcf7062a958c7de820247bc913ab33..4d992442d153d088f6a7a1fc13e3c84012c45a06 100644
--- a/llvm/lib/Support/ErrorHandling.cpp
+++ b/llvm/lib/Support/ErrorHandling.cpp
@@ -22,7 +22,7 @@
Expand Down
2 changes: 1 addition & 1 deletion upstream_utils/llvm_patches/0020-Prefer-wpi-s-fs.h.patch
Original file line number Diff line number Diff line change
@@ -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 20/35] Prefer wpi's fs.h
Subject: [PATCH 20/36] Prefer wpi's fs.h

---
llvm/include/llvm/Support/raw_ostream.h | 7 ++-----
Expand Down
Original file line number Diff line number Diff line change
@@ -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 21/35] Remove unused functions
Subject: [PATCH 21/36] Remove unused functions

---
llvm/include/llvm/Support/raw_ostream.h | 5 +-
Expand Down Expand Up @@ -35,7 +35,7 @@ index d56999186f719f8d91f3a047a19960caf62a066c..9a9a1f688313a5784a58a70f2cb4cc0d
/// Tie this stream to the specified stream. Replaces any existing tied-to
/// stream. Specifying a nullptr unties the stream.
diff --git a/llvm/lib/Support/ErrorHandling.cpp b/llvm/lib/Support/ErrorHandling.cpp
index 54137a331ca9e752b02c0f16ae996094a6f2fafa..e253d6f7a5ca3aee75823efdb9717dcd93fff5dc 100644
index 4d992442d153d088f6a7a1fc13e3c84012c45a06..e19a38256ce714359b85076cf49056f379764d8d 100644
--- a/llvm/lib/Support/ErrorHandling.cpp
+++ b/llvm/lib/Support/ErrorHandling.cpp
@@ -181,22 +181,6 @@ void llvm::llvm_unreachable_internal(const char *msg, const char *file,
Expand Down
4 changes: 2 additions & 2 deletions upstream_utils/llvm_patches/0022-OS-specific-changes.patch
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: PJ Reiniger <pj.reiniger@gmail.com>
Date: Sun, 8 May 2022 19:30:43 -0400
Subject: [PATCH 22/35] OS-specific changes
Subject: [PATCH 22/36] OS-specific changes

---
llvm/lib/Support/ErrorHandling.cpp | 16 +++++++---------
1 file changed, 7 insertions(+), 9 deletions(-)

diff --git a/llvm/lib/Support/ErrorHandling.cpp b/llvm/lib/Support/ErrorHandling.cpp
index e253d6f7a5ca3aee75823efdb9717dcd93fff5dc..5c08e469e2e44b27e69f4aa974bc59deb8217c9b 100644
index e19a38256ce714359b85076cf49056f379764d8d..54b1c09d61d43a936373da8d3bb69b9b1325bf48 100644
--- a/llvm/lib/Support/ErrorHandling.cpp
+++ b/llvm/lib/Support/ErrorHandling.cpp
@@ -96,15 +96,7 @@ void llvm::report_fatal_error(std::string_view Reason, bool GenCrashDiag) {
Expand Down
Original file line number Diff line number Diff line change
@@ -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 23/35] Use SmallVector for UTF conversion
Subject: [PATCH 23/36] Use SmallVector for UTF conversion

---
llvm/include/llvm/Support/ConvertUTF.h | 6 +++---
Expand Down
Original file line number Diff line number Diff line change
@@ -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 24/35] Prefer to use static pointers in raw_ostream
Subject: [PATCH 24/36] Prefer to use static pointers in raw_ostream

See #1401
---
Expand Down
Original file line number Diff line number Diff line change
@@ -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 25/35] constexpr endian byte swap
Subject: [PATCH 25/36] constexpr endian byte swap

---
llvm/include/llvm/Support/Endian.h | 4 +++-
Expand Down
Original file line number Diff line number Diff line change
@@ -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 26/35] Copy type traits from STLExtras.h into PointerUnion.h
Subject: [PATCH 26/36] Copy type traits from STLExtras.h into PointerUnion.h

---
llvm/include/llvm/ADT/PointerUnion.h | 46 ++++++++++++++++++++++++++++
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Tyler Veness <calcmogul@gmail.com>
Date: Wed, 10 Aug 2022 22:35:00 -0700
Subject: [PATCH 27/35] Remove StringMap test for llvm::sort()
Subject: [PATCH 27/36] Remove StringMap test for llvm::sort()

---
llvm/unittests/ADT/StringMapTest.cpp | 14 --------------
Expand Down
Original file line number Diff line number Diff line change
@@ -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 28/35] Unused variable in release mode
Subject: [PATCH 28/36] Unused variable in release mode

---
llvm/include/llvm/ADT/DenseMap.h | 2 +-
Expand Down
2 changes: 1 addition & 1 deletion upstream_utils/llvm_patches/0029-Use-C-20-bit-header.patch
Original file line number Diff line number Diff line change
@@ -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 29/35] Use C++20 <bit> header
Subject: [PATCH 29/36] Use C++20 <bit> header

---
llvm/include/llvm/ADT/DenseMap.h | 3 +-
Expand Down
Original file line number Diff line number Diff line change
@@ -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 30/35] Remove DenseMap GTest printer test
Subject: [PATCH 30/36] Remove DenseMap GTest printer test

LLVM modifies internal GTest headers to support it, which we can't do.
---
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Tyler Veness <calcmogul@gmail.com>
Date: Fri, 15 Sep 2023 18:26:50 -0700
Subject: [PATCH 31/35] Replace deprecated std::aligned_storage_t
Subject: [PATCH 31/36] Replace deprecated std::aligned_storage_t

---
llvm/include/llvm/ADT/FunctionExtras.h | 4 ++--
Expand Down
Original file line number Diff line number Diff line change
@@ -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 32/35] raw_ostream: Add SetNumBytesInBuffer
Subject: [PATCH 32/36] raw_ostream: Add SetNumBytesInBuffer

---
llvm/include/llvm/Support/raw_ostream.h | 5 +++++
Expand Down
Original file line number Diff line number Diff line change
@@ -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 33/35] type_traits.h: Add is_constexpr()
Subject: [PATCH 33/36] type_traits.h: Add is_constexpr()

---
llvm/include/llvm/Support/type_traits.h | 5 +++++
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Tyler Veness <calcmogul@gmail.com>
Date: Fri, 1 Mar 2024 11:37:36 -0800
Subject: [PATCH 34/35] Add back removed raw_string_ostream::write_impl()
Subject: [PATCH 34/36] Add back removed raw_string_ostream::write_impl()

---
llvm/lib/Support/raw_ostream.cpp | 8 ++++++++
Expand Down
Original file line number Diff line number Diff line change
@@ -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 35/35] Remove auto-conversion from raw_ostream
Subject: [PATCH 35/36] Remove auto-conversion from raw_ostream

---
llvm/lib/Support/raw_ostream.cpp | 9 ---------
Expand Down
28 changes: 28 additions & 0 deletions upstream_utils/llvm_patches/0036-Add-SmallVector-erase_if.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
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 36/36] Add SmallVector erase_if()

---
llvm/include/llvm/ADT/SmallVector.h | 8 ++++++++
1 file changed, 8 insertions(+)

diff --git a/llvm/include/llvm/ADT/SmallVector.h b/llvm/include/llvm/ADT/SmallVector.h
index b953ae45a34772eb7fd04c3af0275a7d093e1242..f4ec2d673e0edac516dd605e7aebbf7dd9d99cc5 100644
--- a/llvm/include/llvm/ADT/SmallVector.h
+++ b/llvm/include/llvm/ADT/SmallVector.h
@@ -1328,6 +1328,14 @@ template <typename Out, typename R> SmallVector<Out> to_vector_of(R &&Range) {
return {std::begin(Range), std::end(Range)};
}

+template <typename T, typename Pred>
+typename SmallVectorImpl<T>::size_type erase_if(
+ SmallVectorImpl<T>& c, Pred pred) {
+ const auto original_size = c.size();
+ c.erase(std::remove_if(c.begin(), c.end(), pred), c.end());
+ return original_size - c.size();
+}
+
} // end namespace llvm

namespace std {
1 change: 1 addition & 0 deletions upstream_utils/update_llvm.py
Original file line number Diff line number Diff line change
Expand Up @@ -213,6 +213,7 @@ def main():
"0033-type_traits.h-Add-is_constexpr.patch",
"0034-Add-back-removed-raw_string_ostream-write_impl.patch",
"0035-Remove-auto-conversion-from-raw_ostream.patch",
"0036-Add-SmallVector-erase_if.patch",
]:
git_am(
os.path.join(wpilib_root, "upstream_utils/llvm_patches", f),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1328,6 +1328,14 @@ template <typename Out, typename R> SmallVector<Out> to_vector_of(R &&Range) {
return {std::begin(Range), std::end(Range)};
}

template <typename T, typename Pred>
typename SmallVectorImpl<T>::size_type erase_if(
SmallVectorImpl<T>& c, Pred pred) {
const auto original_size = c.size();
c.erase(std::remove_if(c.begin(), c.end(), pred), c.end());
return original_size - c.size();
}

} // end namespace wpi

namespace std {
Expand Down

0 comments on commit e2893fc

Please sign in to comment.