|
Revision tags: llvmorg-20.1.0, llvmorg-20.1.0-rc3, llvmorg-20.1.0-rc2, llvmorg-20.1.0-rc1, llvmorg-21-init, llvmorg-19.1.7, llvmorg-19.1.6, llvmorg-19.1.5, llvmorg-19.1.4, llvmorg-19.1.3, llvmorg-19.1.2, llvmorg-19.1.1, llvmorg-19.1.0, llvmorg-19.1.0-rc4, llvmorg-19.1.0-rc3, llvmorg-19.1.0-rc2, llvmorg-19.1.0-rc1, llvmorg-20-init, llvmorg-18.1.8, llvmorg-18.1.7, llvmorg-18.1.6, llvmorg-18.1.5, llvmorg-18.1.4, llvmorg-18.1.3, llvmorg-18.1.2, llvmorg-18.1.1, llvmorg-18.1.0, llvmorg-18.1.0-rc4, llvmorg-18.1.0-rc3, llvmorg-18.1.0-rc2, llvmorg-18.1.0-rc1, llvmorg-19-init, llvmorg-17.0.6, llvmorg-17.0.5, llvmorg-17.0.4, llvmorg-17.0.3, llvmorg-17.0.2, llvmorg-17.0.1, llvmorg-17.0.0, llvmorg-17.0.0-rc4, llvmorg-17.0.0-rc3, llvmorg-17.0.0-rc2, llvmorg-17.0.0-rc1, llvmorg-18-init, llvmorg-16.0.6, llvmorg-16.0.5, llvmorg-16.0.4, llvmorg-16.0.3, llvmorg-16.0.2, llvmorg-16.0.1, llvmorg-16.0.0, llvmorg-16.0.0-rc4, llvmorg-16.0.0-rc3, llvmorg-16.0.0-rc2, llvmorg-16.0.0-rc1, llvmorg-17-init, llvmorg-15.0.7, llvmorg-15.0.6, llvmorg-15.0.5, llvmorg-15.0.4, llvmorg-15.0.3, llvmorg-15.0.2, llvmorg-15.0.1, llvmorg-15.0.0, llvmorg-15.0.0-rc3, llvmorg-15.0.0-rc2, llvmorg-15.0.0-rc1, llvmorg-16-init, llvmorg-14.0.6, llvmorg-14.0.5, llvmorg-14.0.4, llvmorg-14.0.3, llvmorg-14.0.2, llvmorg-14.0.1 |
|
| #
7c3d8c89 |
| 07-Apr-2022 |
Antonio Frighetto <[email protected]> |
Fix warnings when `-Wdeprecated-enum-enum-conversion` is enabled
clang may throw the following warning: include/clang/AST/DeclarationName.h:210:52: error: arithmetic between different enumeration ty
Fix warnings when `-Wdeprecated-enum-enum-conversion` is enabled
clang may throw the following warning: include/clang/AST/DeclarationName.h:210:52: error: arithmetic between different enumeration types ('clang::DeclarationName::StoredNameKind' and 'clang::detail::DeclarationNameExtra::ExtraKind') is deprecated when flags -Werror,-Wdeprecated-enum-enum-conversion are on.
This adds the `addEnumValues()` helper function to STLExtras.h to hide the details of adding enumeration values together from two different enumerations.
show more ...
|
| #
b39f4377 |
| 28-Mar-2022 |
Chris Bieneman <[email protected]> |
[ADT] add initializer list specialization for is_contained
Adding an initializer list specialization for is_contained allows for compile-time evaluation when called with a constant or runtime evalua
[ADT] add initializer list specialization for is_contained
Adding an initializer list specialization for is_contained allows for compile-time evaluation when called with a constant or runtime evaluation for non-constant values.
This patch doesn't add any uses of this template, but that is coming in a subsequent patch.
Reviewed By: pete
Differential Revision: https://reviews.llvm.org/D122079
show more ...
|
| #
df4da5f3 |
| 18-Mar-2022 |
Marek Kurdej <[email protected]> |
[ADT] Add drop_end.
This patch adds drop_end that is analogical to drop_begin. It tries to fill the functional gap where one could drop first elements but not the last ones. The need for it came in
[ADT] Add drop_end.
This patch adds drop_end that is analogical to drop_begin. It tries to fill the functional gap where one could drop first elements but not the last ones. The need for it came in when refactoring clang-format.
Reviewed By: dblaikie
Differential Revision: https://reviews.llvm.org/D122009
show more ...
|
|
Revision tags: llvmorg-14.0.0, llvmorg-14.0.0-rc4, llvmorg-14.0.0-rc3, llvmorg-14.0.0-rc2, llvmorg-14.0.0-rc1, llvmorg-15-init, llvmorg-13.0.1, llvmorg-13.0.1-rc3, llvmorg-13.0.1-rc2 |
|
| #
78a26c7d |
| 14-Dec-2021 |
Scott Linder <[email protected]> |
[ADT] Add new type traits for type pack indexes
Similar versions of these already exist, this effectively just just factors them out into STLExtras. I plan to use these in future patches.
Reviewed
[ADT] Add new type traits for type pack indexes
Similar versions of these already exist, this effectively just just factors them out into STLExtras. I plan to use these in future patches.
Reviewed By: dblaikie
Differential Revision: https://reviews.llvm.org/D100672
show more ...
|
|
Revision tags: llvmorg-13.0.1-rc1 |
|
| #
c92de29f |
| 01-Nov-2021 |
Geoffrey Martin-Noble <[email protected]> |
[NFC] Add size inference to to_vector
A default calculated size for SmallVector was added in https://reviews.llvm.org/D92522 after discussion in https://groups.google.com/g/llvm-dev/c/Z-VwNCTRGSg, b
[NFC] Add size inference to to_vector
A default calculated size for SmallVector was added in https://reviews.llvm.org/D92522 after discussion in https://groups.google.com/g/llvm-dev/c/Z-VwNCTRGSg, but to_vector still requires an explicit size. This patch adds the default size to to_vector as well, so that this case doesn't unnecessarily force users to pick an arbitrary size.
Reviewed By: silvas, dblaikie
Differential Revision: https://reviews.llvm.org/D112968
show more ...
|
|
Revision tags: llvmorg-13.0.0, llvmorg-13.0.0-rc4, llvmorg-13.0.0-rc3, llvmorg-13.0.0-rc2, llvmorg-13.0.0-rc1 |
|
| #
b70de61f |
| 29-Jul-2021 |
Mehdi Amini <[email protected]> |
Add `all_of_zip` to STLExtras
This takes two ranges and invokes a predicate on the element-wise pair in the ranges. It returns true if all the pairs are matching the predicate and the ranges have th
Add `all_of_zip` to STLExtras
This takes two ranges and invokes a predicate on the element-wise pair in the ranges. It returns true if all the pairs are matching the predicate and the ranges have the same size. It is useful with containers that aren't random iterator where we can't check the sizes in O(1).
Differential Revision: https://reviews.llvm.org/D106605
show more ...
|
|
Revision tags: llvmorg-14-init |
|
| #
83887df1 |
| 01-Jul-2021 |
Scott Linder <[email protected]> |
[ADT] Follow up to fix bug in "Add makeVisitor to STLExtras.h"
Address mistakenly comparing the pointer values of two C-style strings rather than comparing their contents in the unit tests for makeV
[ADT] Follow up to fix bug in "Add makeVisitor to STLExtras.h"
Address mistakenly comparing the pointer values of two C-style strings rather than comparing their contents in the unit tests for makeVisitor, added in 6d6f35eb7b92c6dd4478834497752f4e963db16d
show more ...
|
| #
6d6f35eb |
| 28-Jun-2021 |
Scott Linder <[email protected]> |
[ADT] Add makeVisitor to STLExtras.h
Relands patch reverted by 61242c0addb120294211d24a97ed89837418cb36 The original patch mistakenly included unrelated tests.
Adds a utility to combine multiple Ca
[ADT] Add makeVisitor to STLExtras.h
Relands patch reverted by 61242c0addb120294211d24a97ed89837418cb36 The original patch mistakenly included unrelated tests.
Adds a utility to combine multiple Callables into a single Callable. This is useful to make constructing a visitor for `std::visit`-like functions more natural; functions like this will be added in future patches.
Intended to supercede https://reviews.llvm.org/D99560 by perfectly-forwarding the combined Callables.
Reviewed By: dblaikie
Differential Revision: https://reviews.llvm.org/D100670
show more ...
|
| #
61242c0a |
| 28-Jun-2021 |
Scott Linder <[email protected]> |
Revert "[ADT] Add makeVisitor to STLExtras.h"
This reverts commit 14a8aa615597ef0aa424ac9545906bf8b9865063.
Mistakenly landed this before a patch it should depend on was accepted.
|
| #
14a8aa61 |
| 28-Jun-2021 |
Scott Linder <[email protected]> |
[ADT] Add makeVisitor to STLExtras.h
Adds a utility to combine multiple Callables into a single Callable. This is useful to make constructing a visitor for `std::visit`-like functions more natural;
[ADT] Add makeVisitor to STLExtras.h
Adds a utility to combine multiple Callables into a single Callable. This is useful to make constructing a visitor for `std::visit`-like functions more natural; functions like this will be added in future patches.
Intended to supercede https://reviews.llvm.org/D99560 by perfectly-forwarding the combined Callables.
Reviewed By: dblaikie
Differential Revision: https://reviews.llvm.org/D100670
show more ...
|
|
Revision tags: llvmorg-12.0.1, llvmorg-12.0.1-rc4, llvmorg-12.0.1-rc3, llvmorg-12.0.1-rc2 |
|
| #
e17610cf |
| 26-May-2021 |
Scott Linder <[email protected]> |
[ADT] Refactor enumerate unit tests
Preparation for landing the tests for llvm::makeVisitor, including breaking out the a "Counted" base class and explicitly testing the prvalue case as distinct fro
[ADT] Refactor enumerate unit tests
Preparation for landing the tests for llvm::makeVisitor, including breaking out the a "Counted" base class and explicitly testing the prvalue case as distinct from the rvalue case.
Differential Revision: https://reviews.llvm.org/D103206
show more ...
|
|
Revision tags: llvmorg-12.0.1-rc1 |
|
| #
a08673d0 |
| 24-May-2021 |
David Blaikie <[email protected]> |
Add a range-based wrapper for std::unique(begin, end, binary_predicate)
|
| #
2d1f2ba7 |
| 18-May-2021 |
Stella Stamenova <[email protected]> |
Revert "[ADT] Add new type traits for type pack indexes"
This reverts commit a6d3987b8ef3b7616f0835b89515c4264f2a7a64.
|
| #
a6d3987b |
| 14-Apr-2021 |
Scott Linder <[email protected]> |
[ADT] Add new type traits for type pack indexes
Similar versions of these already exist, this effectively just just factors them out into STLExtras. I plan to use these in future patches.
Different
[ADT] Add new type traits for type pack indexes
Similar versions of these already exist, this effectively just just factors them out into STLExtras. I plan to use these in future patches.
Differential Revision: https://reviews.llvm.org/D100672
show more ...
|
|
Revision tags: llvmorg-12.0.0, llvmorg-12.0.0-rc5, llvmorg-12.0.0-rc4, llvmorg-12.0.0-rc3, llvmorg-12.0.0-rc2, llvmorg-11.1.0, llvmorg-11.1.0-rc3, llvmorg-12.0.0-rc1, llvmorg-13-init, llvmorg-11.1.0-rc2 |
|
| #
dc300beb |
| 18-Jan-2021 |
Kazu Hirata <[email protected]> |
[STLExtras] Add a default value to drop_begin
This patch adds the default value of 1 to drop_begin.
In the llvm codebase, 70% of calls to drop_begin have 1 as the second argument. The interface si
[STLExtras] Add a default value to drop_begin
This patch adds the default value of 1 to drop_begin.
In the llvm codebase, 70% of calls to drop_begin have 1 as the second argument. The interface similar to with std::next should improve readability.
This patch converts a couple of calls to drop_begin as examples.
Differential Revision: https://reviews.llvm.org/D94858
show more ...
|
|
Revision tags: llvmorg-11.1.0-rc1 |
|
| #
c701f85c |
| 10-Jan-2021 |
Florian Hahn <[email protected]> |
[STLExtras] Use return type from operator* of the wrapped iter.
Currently make_early_inc_range cannot be used with iterators with operator* implementations that do not return a reference.
Most nota
[STLExtras] Use return type from operator* of the wrapped iter.
Currently make_early_inc_range cannot be used with iterators with operator* implementations that do not return a reference.
Most notably in the LLVM codebase, this means the User iterator ranges cannot be used with make_early_inc_range, which slightly simplifies iterating over ranges while elements are removed.
Instead of directly using BaseT::reference as return type of operator*, this patch uses decltype to get the actual return type of the operator* implementation in WrappedIteratorT.
This patch also updates a few places to use make use of make_early_inc_range.
Reviewed By: dblaikie
Differential Revision: https://reviews.llvm.org/D93992
show more ...
|
|
Revision tags: llvmorg-11.0.1, llvmorg-11.0.1-rc2 |
|
| #
92310454 |
| 17-Dec-2020 |
Barry Revzin <[email protected]> |
Make LLVM build in C++20 mode
Part of the <=> changes in C++20 make certain patterns of writing equality operators ambiguous with themselves (sorry!). This patch goes through and adjusts all the com
Make LLVM build in C++20 mode
Part of the <=> changes in C++20 make certain patterns of writing equality operators ambiguous with themselves (sorry!). This patch goes through and adjusts all the comparison operators such that they should work in both C++17 and C++20 modes. It also makes two other small C++20-specific changes (adding a constructor to a type that cases to be an aggregate, and adding casts from u8 literals which no longer have type const char*).
There were four categories of errors that this review fixes. Here are canonical examples of them, ordered from most to least common:
// 1) Missing const namespace missing_const { struct A { #ifndef FIXED bool operator==(A const&); #else bool operator==(A const&) const; #endif };
bool a = A{} == A{}; // error }
// 2) Type mismatch on CRTP namespace crtp_mismatch { template <typename Derived> struct Base { #ifndef FIXED bool operator==(Derived const&) const; #else // in one case changed to taking Base const& friend bool operator==(Derived const&, Derived const&); #endif };
struct D : Base<D> { };
bool b = D{} == D{}; // error }
// 3) iterator/const_iterator with only mixed comparison namespace iter_const_iter { template <bool Const> struct iterator { using const_iterator = iterator<true>;
iterator();
template <bool B, std::enable_if_t<(Const && !B), int> = 0> iterator(iterator<B> const&);
#ifndef FIXED bool operator==(const_iterator const&) const; #else friend bool operator==(iterator const&, iterator const&); #endif };
bool c = iterator<false>{} == iterator<false>{} // error || iterator<false>{} == iterator<true>{} || iterator<true>{} == iterator<false>{} || iterator<true>{} == iterator<true>{}; }
// 4) Same-type comparison but only have mixed-type operator namespace ambiguous_choice { enum Color { Red };
struct C { C(); C(Color); operator Color() const; bool operator==(Color) const; friend bool operator==(C, C); };
bool c = C{} == C{}; // error bool d = C{} == Red; }
Differential revision: https://reviews.llvm.org/D78938
show more ...
|
|
Revision tags: llvmorg-11.0.1-rc1 |
|
| #
e9e2e310 |
| 06-Nov-2020 |
Sean Silva <[email protected]> |
[STLExtras] Add append_range helper.
This is convenient in a lot of cases, such as when the thing you want to append is `someReallyLongFunctionName()` that you'd rather not write twice or assign to
[STLExtras] Add append_range helper.
This is convenient in a lot of cases, such as when the thing you want to append is `someReallyLongFunctionName()` that you'd rather not write twice or assign to a variable for the paired begin/end calls.
Differential Revision: https://reviews.llvm.org/D90894
show more ...
|
|
Revision tags: llvmorg-11.0.0, llvmorg-11.0.0-rc6, llvmorg-11.0.0-rc5, llvmorg-11.0.0-rc4, llvmorg-11.0.0-rc3, llvmorg-11.0.0-rc2, llvmorg-11.0.0-rc1 |
|
| #
4363ea61 |
| 25-Jul-2020 |
Nathan James <[email protected]> |
Fix C2975 error under MSVC
Apparantly a constexpr value isn't a compile time constant under certain versions of MSVC.
|
| #
6c25fc35 |
| 25-Jul-2020 |
Nathan James <[email protected]> |
[ADT] Add a range-based version of std::move
Adds a range-based version of `std::move`, the version that moves a range, not the one that creates r-value references.
Reviewed By: dblaikie, gamesh411
[ADT] Add a range-based version of std::move
Adds a range-based version of `std::move`, the version that moves a range, not the one that creates r-value references.
Reviewed By: dblaikie, gamesh411
Differential Revision: https://reviews.llvm.org/D83902
show more ...
|
|
Revision tags: llvmorg-12-init, llvmorg-10.0.1, llvmorg-10.0.1-rc4, llvmorg-10.0.1-rc3, llvmorg-10.0.1-rc2 |
|
| #
0d9726bc |
| 22-Jun-2020 |
Rahul Joshi <[email protected]> |
- Add hasNItemsOrLess and container variants of hasNItems, hasNItemsOrMore, and hasNItemsOrLess - Fixed a bug in hasNItems() - Extend the STLExtras unit test to test hasSingleElement() and hasNItems(
- Add hasNItemsOrLess and container variants of hasNItems, hasNItemsOrMore, and hasNItemsOrLess - Fixed a bug in hasNItems() - Extend the STLExtras unit test to test hasSingleElement() and hasNItems() and friends.
Differential Revision: https://reviews.llvm.org/D82232
show more ...
|
|
Revision tags: llvmorg-10.0.1-rc1, llvmorg-10.0.0, llvmorg-10.0.0-rc6, llvmorg-10.0.0-rc5, llvmorg-10.0.0-rc4, llvmorg-10.0.0-rc3, llvmorg-10.0.0-rc2 |
|
| #
fb45968e |
| 10-Feb-2020 |
Justin Lebar <[email protected]> |
Use C++14-style return type deduction in LLVM.
Summary: Simplifies the C++11-style "-> decltype(...)" return-type deduction.
Note that you have to be careful about whether the function return type
Use C++14-style return type deduction in LLVM.
Summary: Simplifies the C++11-style "-> decltype(...)" return-type deduction.
Note that you have to be careful about whether the function return type is `auto` or `decltype(auto)`. The difference is that bare `auto` strips const and reference, just like lambda return type deduction. In some cases that's what we want (or more likely, we know that the return type is a value type), but whenever we're wrapping a templated function which might return a reference, we need to be sure that the return type is decltype(auto).
No functional change.
Subscribers: dexonsmith, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D74383
show more ...
|
|
Revision tags: llvmorg-10.0.0-rc1, llvmorg-11-init, llvmorg-9.0.1, llvmorg-9.0.1-rc3, llvmorg-9.0.1-rc2, llvmorg-9.0.1-rc1 |
|
| #
058bc4c8 |
| 13-Nov-2019 |
Lang Hames <[email protected]> |
[ADT] Move drop_begin from iterator_range.h into STLExtras.
Summary: drop_begin depends on adl_begin/adl_end, which are defined in STLExtras.h, but we can't just #include STLExtras.h in iterator_ran
[ADT] Move drop_begin from iterator_range.h into STLExtras.
Summary: drop_begin depends on adl_begin/adl_end, which are defined in STLExtras.h, but we can't just #include STLExtras.h in iterator_range.h as that would introduce a circular reference (STLExtras.h already depends on iterator_range.h). The simplest solution is to move drop_begin into STLExtras.h, which is a reasonable home for it anyway.
Reviewers: dblaikie
Subscribers: dexonsmith, ributzka, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D70189
show more ...
|
|
Revision tags: llvmorg-9.0.0, llvmorg-9.0.0-rc6, llvmorg-9.0.0-rc5, llvmorg-9.0.0-rc4, llvmorg-9.0.0-rc3 |
|
| #
0eaee545 |
| 15-Aug-2019 |
Jonas Devlieghere <[email protected]> |
[llvm] Migrate llvm::make_unique to std::make_unique
Now that we've moved to C++14, we no longer need the llvm::make_unique implementation from STLExtras.h. This patch is a mechanical replacement of
[llvm] Migrate llvm::make_unique to std::make_unique
Now that we've moved to C++14, we no longer need the llvm::make_unique implementation from STLExtras.h. This patch is a mechanical replacement of (hopefully) all the llvm::make_unique instances across the monorepo.
llvm-svn: 369013
show more ...
|
|
Revision tags: llvmorg-9.0.0-rc2, llvmorg-9.0.0-rc1, llvmorg-10-init, llvmorg-8.0.1, llvmorg-8.0.1-rc4 |
|
| #
78ee2fbf |
| 30-Jun-2019 |
Fangrui Song <[email protected]> |
Cleanup: llvm::bsearch -> llvm::partition_point after r364719
llvm-svn: 364720
|