llvm-project/llvm/unittests
Nikita Popov fe593fe15f [ADT] Fix SmallDenseMap assertion with large InlineBuckets
Fixes issue encountered in D56362, where I tried to use a
SmallSetVector<Instruction*, 128> with an excessively large number
of inline elements. This triggers an "Must allocate more buckets
than are inline" assertion inside allocateBuckets() under certain
usage patterns.

The issue is as follows: The grow() method is used either to grow
the map, or to rehash it and remove tombstones. The latter is done
if the fraction of empty (non-used, non-tombstone) elements is
below 1/8. In this case grow() is invoked with the current number
of buckets.

This is currently incorrectly handled for dense maps using the small
rep. The current implementation will switch them over to the large
rep, which violates the invariant that the large rep is only used
if there are more than InlineBuckets buckets.

This patch fixes the issue by staying in the small rep and only
moving the buckets. An alternative, if we do want to switch to the
large rep in this case, would be to relax the assertion in
allocateBuckets().

Differential Revision: https://reviews.llvm.org/D56455
2019-12-11 21:41:14 +01:00
..
ADT [ADT] Fix SmallDenseMap assertion with large InlineBuckets 2019-12-11 21:41:14 +01:00
Analysis [Loop] Add isRotated method to Loop class. 2019-12-11 09:43:10 -05:00
AsmParser Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
BinaryFormat [BinaryFormat] Teach identify_magic about Tapi files. 2019-08-21 21:00:16 +00:00
Bitcode Add AutoUpgrade function to add new address space datalayout string to existing datalayouts. 2019-09-18 22:15:58 +00:00
Bitstream [Bitcode] Move Bitstream to a separate library 2019-07-03 22:40:07 +00:00
CodeGen [PGO][PGSO] DAG.shouldOptForSize part. 2019-11-21 14:16:00 -08:00
DebugInfo [DebugInfo] Fix printing of DW_LNS_set_isa 2019-12-11 13:38:41 +00:00
Demangle Update more file headers across all of the LLVM projects in the monorepo 2019-01-19 10:56:40 +00:00
ExecutionEngine [ORC][JITLink] Add support for weak references, and improve handling of static 2019-11-28 13:30:49 -08:00
Frontend [OpenMP] Introduce the OpenMP-IR-Builder 2019-12-11 14:38:49 -06:00
FuzzMutate [llvm] Migrate llvm::make_unique to std::make_unique 2019-08-15 15:54:37 +00:00
IR [IR] allow undefined elements when checking for splat constants 2019-12-10 17:16:59 -05:00
LineEditor Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
Linker [llvm] Migrate llvm::make_unique to std::make_unique 2019-08-15 15:54:37 +00:00
MC [Mips] Use appropriate private label prefix based on Mips ABI 2019-10-23 12:24:35 +02:00
MI [unittests] Add InitializePasses.h includes 2019-11-13 19:42:58 -08:00
Object Add operator<< for object::SectionedAddress 2019-11-19 10:34:30 +01:00
ObjectYAML minidump: Add an "arm64" constant 2019-10-31 11:20:46 +01:00
Option Option spell checking: Penalize delimiter flags if input has no argument 2019-05-01 16:45:15 +00:00
Passes Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
ProfileData Revert "[Coverage] Revise format to reduce binary size" 2019-12-04 10:35:14 -08:00
Remarks [Remarks] Fix error message check in unit test 2019-10-31 15:51:36 -07:00
Support [VFS] Disable check for ../foo on Windows 2019-12-11 10:53:35 -08:00
TableGen [UnitTests] Try and pacify gcc-5 2019-10-05 08:57:17 +00:00
Target [ARM][MVE] Fix copy-paste error in VQSHL instruction ids. 2019-12-06 15:23:23 +00:00
TextAPI Reland "[TextAPI] Introduce TBDv4" 2019-10-10 04:24:44 +00:00
Transforms [DebugInfo] Support to emit debugInfo for extern variables 2019-12-10 08:09:51 -08:00
XRay [llvm] Migrate llvm::make_unique to std::make_unique 2019-08-15 15:54:37 +00:00
tools Fix uninitialized variable warning. NFC. 2019-11-18 13:26:50 +00:00
CMakeLists.txt [OpenMP] Introduce the OpenMP-IR-Builder 2019-12-11 14:38:49 -06:00
unittest.cfg.in Add support for unittest inputs. 2018-09-05 23:30:17 +00:00