llvm-project/llvm/unittests/ADT
Nathan James cf8d19f4fb
[ADT] Add methods to SmallString for efficient concatenation
A common pattern when using SmallString is to repeatedly call append to build a larger string.
The issue here is the optimizer can't see through this and often has to check there is enough space in the storage for each string you try to append.
This results in lots of conditional branches and potentially multiple calls to grow needing to be emitted if the buffer wasn't large enough.
By taking an initializer_list of StringRefs, SmallString can preallocate the storage it needs for all of the StringRefs which only need to grow one time at most, then use a fast path of copying all the strings into its storage knowing there is guaranteed to be enough capacity.
By using StringRefs, this also means you can append different string like types in one go as they will all be implicitly converted to a StringRef.

Reviewed By: dblaikie

Differential Revision: https://reviews.llvm.org/D90386
2020-10-30 10:07:40 +00:00
..
APFixedPointTest.cpp [Fixed Point] Add floating point methods to APFixedPoint. 2020-10-09 10:27:42 +02:00
APFloatTest.cpp [APFloat] convert SNaN to QNaN in convert() and raise Invalid signal 2020-10-01 14:37:38 -04:00
APIntTest.cpp [APIntTest] Extend extractBits to check 'lshr+trunc' pattern for each case as well. 2020-10-06 16:32:40 +01:00
APSIntTest.cpp ADT: Fix that APSInt's string constructor claims it requires 5 bits to store a zero 2020-06-10 16:36:33 +02:00
AnyTest.cpp
ArrayRefTest.cpp
BitFieldsTest.cpp [Bitfields][NFC] Make sure bitfields are contiguous 2020-07-07 14:35:13 +00:00
BitVectorTest.cpp Fix bug in SmallBitVector::find_next_unset 2020-04-24 13:50:30 -07:00
BitmaskEnumTest.cpp
BreadthFirstIteratorTest.cpp
BumpPtrListTest.cpp
CMakeLists.txt [ADT] Move FixedPoint.h from Clang to LLVM. 2020-08-20 10:29:45 +02:00
CoalescingBitVectorTest.cpp [LiveDebugValues] Speed up removeEntryValue, NFC 2020-06-01 11:02:36 -07:00
DAGDeltaAlgorithmTest.cpp
DeltaAlgorithmTest.cpp
DenseMapTest.cpp [ADT] Allow K to be incomplete during DenseMap<K*, V> instantiation 2020-02-28 14:24:04 -08:00
DenseSetTest.cpp [llvm] Add contains(KeyType) -> bool methods to DenseSet 2020-07-17 11:26:26 -07:00
DepthFirstIteratorTest.cpp
DirectedGraphTest.cpp
EnumeratedArrayTest.cpp
EquivalenceClassesTest.cpp
FallibleIteratorTest.cpp
FloatingPointMode.cpp Separately track input and output denormal mode 2020-02-04 12:59:21 -05:00
FoldingSet.cpp
FunctionExtrasTest.cpp Reland [ADT] Support const-qualified unique_functions 2020-06-29 21:40:16 +02:00
FunctionRefTest.cpp [ADT] Fix accidental pointer comparison in test 2020-10-27 18:11:45 +01:00
HashingTest.cpp Add hashing support for std::tuple 2020-07-16 19:01:25 +02:00
IListBaseTest.cpp
IListIteratorTest.cpp
IListNodeBaseTest.cpp
IListNodeTest.cpp
IListSentinelTest.cpp
IListTest.cpp
ImmutableListTest.cpp
ImmutableMapTest.cpp [ADT] Fix for ImmutableMapRef 2020-10-29 13:19:51 +01:00
ImmutableSetTest.cpp
IntEqClassesTest.cpp
IntervalMapTest.cpp [ADT] Add CoalescingBitVector, implemented using IntervalMap [1/3] 2020-02-27 12:39:46 -08:00
IntrusiveRefCntPtrTest.cpp
IteratorTest.cpp
MapVectorTest.cpp Github access test: remove unnecessary whitespaces. 2020-05-20 09:53:44 +01:00
MappedIteratorTest.cpp
OptionalTest.cpp [ADT] Make Optional a literal type. 2020-09-01 16:13:40 -07:00
PackedVectorTest.cpp
PointerEmbeddedIntTest.cpp PointerLikeTypeTraits: Standardize NumLowBitsAvailable on static constexpr rather than anonymous enum 2020-01-16 15:30:50 -08:00
PointerIntPairTest.cpp PointerLikeTypeTraits: Standardize NumLowBitsAvailable on static constexpr rather than anonymous enum 2020-01-16 15:30:50 -08:00
PointerSumTypeTest.cpp
PointerUnionTest.cpp Removed PointerUnion3 and PointerUnion4 aliases in favor of the variadic template 2020-01-14 18:56:29 +01:00
PostOrderIteratorTest.cpp
PriorityWorklistTest.cpp
RangeAdapterTest.cpp
SCCIteratorTest.cpp
STLExtrasTest.cpp Fix C2975 error under MSVC 2020-07-25 11:03:59 +01:00
ScopeExitTest.cpp
SequenceTest.cpp
SetVectorTest.cpp [llvm] Add contains(KeyType) -> bool methods to SetVector 2020-07-17 11:26:27 -07:00
SimpleIListTest.cpp [ADT/STLExtras.h] - Add llvm::is_sorted wrapper and update callers. 2020-04-14 14:11:02 +03:00
SmallPtrSetTest.cpp [llvm] Add contains(KeyType) -> bool methods to SmallPtrSet 2020-07-17 11:26:27 -07:00
SmallSetTest.cpp [llvm] Add contains(KeyType) -> bool methods to SmallSet 2020-07-17 11:26:27 -07:00
SmallStringTest.cpp [ADT] Add methods to SmallString for efficient concatenation 2020-10-30 10:07:40 +00:00
SmallVectorTest.cpp
SparseBitVectorTest.cpp
SparseMultiSetTest.cpp
SparseSetTest.cpp [llvm] Add contains(KeyType) -> bool methods to SparseSet 2020-07-17 11:26:27 -07:00
StatisticTest.cpp
StringExtrasTest.cpp [llvm][StringExtras] Add a fail-able version of `fromHex` 2020-10-28 16:58:06 -07:00
StringMapTest.cpp [clang-tidy] remove duplicate fixes of alias checkers 2020-06-19 20:40:59 +01:00
StringRefTest.cpp [ADT] Implicitly convert between StringRef and std::string_view when we have C++17 2020-01-28 13:56:12 +01:00
StringSetTest.cpp [llvm] Add contains(KeyType) -> bool methods to StringSet 2020-07-17 11:26:27 -07:00
StringSwitchTest.cpp
TestGraph.h
TinyPtrVectorTest.cpp
TripleTest.cpp [RFC][Target] Add a new triple called Triple::csky 2020-09-02 12:46:09 +08:00
TwineTest.cpp [llvm][NFC] Add missing 'override's in unittests/ 2020-07-17 17:35:59 -07:00
TypeSwitchTest.cpp [llvm][ADT] Move TypeSwitch class from MLIR to LLVM 2020-04-14 15:14:41 -07:00
TypeTraitsTest.cpp [mlir][NFC] Remove the STLExtras.h header file now that it has been merged into LLVM. 2020-04-14 15:14:41 -07:00
WaymarkingTest.cpp [ADT] Implement the Waymarking as an independent utility 2020-03-31 17:08:24 +03:00