1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-22 12:33:33 +02:00
llvm-mirror/include/llvm/Support
Zachary Turner 5f415496c7 [PDB] Don't build the entire source file list up front.
I tried to run llvm-pdbdump on a very large (~1.5GB) PDB to
try and identify show-stopping performance problems.  This
patch addresses the first such problem.

When loading the DBI stream, before anyone has even tried to
access a single record, we build an in memory map of every
source file for every module.  In the particular PDB I was
using, this was over 85 million files.  Specifically, the
complexity is O(m*n) where m is the number of modules and
n is the average number of source files (including headers)
per module.

The whole reason for doing this was so that we could have
constant time access to any module and any of its source
file lists.  However, we can still get O(1) access to the
source file list for a given module with a simple O(m)
precomputation, and access to the list of modules is
already O(1) anyway.

So this patches reduces the O(m*n) up-front precomputation
to an O(m) one, where n is ~6,500 and n*m is about 85 million
in my pathological test case.

Differential Revision: https://reviews.llvm.org/D32870

llvm-svn: 302205
2017-05-04 23:53:29 +00:00
..
ELFRelocs [AArch64] ILP32 Backend Relocation Support 2017-05-02 22:01:48 +00:00
WasmRelocs [WebAssembly] Initial linking metadata support 2017-03-30 23:58:19 +00:00
AArch64TargetParser.def [AArch64] Make the TargetParser add CPU exts provided by the arch. 2017-05-03 20:33:58 +00:00
AlignOf.h Revert r291503, "Lift the 10-type limit for AlignedCharArrayUnion", and followings. 2017-01-13 01:13:10 +00:00
Allocator.h Add red zones to BumpPtrAllocator under ASan 2017-03-08 21:53:12 +00:00
ARMAttributeParser.h [ARM] Create objdump subtarget from build attrs 2017-01-18 13:52:12 +00:00
ARMBuildAttributes.h [ARM] Create objdump subtarget from build attrs 2017-01-18 13:52:12 +00:00
ARMEHABI.h
ARMTargetParser.def [ARM] Rename HW div feature to HW div Thumb. NFCI. 2017-04-20 09:38:25 +00:00
ARMWinEH.h
ArrayRecycler.h [Support] Make asan poisoning for recyclers more aggressive by also poisoning the 'next' pointer. 2017-04-20 20:28:18 +00:00
Atomic.h Undef MemoryFence, which is defined to _mm_mfence by winnt.h 2017-02-14 01:38:14 +00:00
AtomicOrdering.h Fix some Clang-tidy modernize-use-using and Include What You Use warnings. 2016-08-13 00:50:41 +00:00
BinaryByteStream.h [Support] Move Stream library from MSF -> Support. 2017-03-02 20:52:51 +00:00
BinaryItemStream.h [Support] Move Stream library from MSF -> Support. 2017-03-02 20:52:51 +00:00
BinaryStream.h [Support] Move Stream library from MSF -> Support. 2017-03-02 20:52:51 +00:00
BinaryStreamArray.h [PDB] Don't build the entire source file list up front. 2017-05-04 23:53:29 +00:00
BinaryStreamError.h [Support] Move Stream library from MSF -> Support. 2017-03-02 20:52:51 +00:00
BinaryStreamReader.h Resubmit r301986 and r301987 "Add codeview::StringTable" 2017-05-03 15:58:37 +00:00
BinaryStreamRef.h [llvm-readobj] Update readobj to re-use parsing code. 2017-05-03 17:11:11 +00:00
BinaryStreamWriter.h Resubmit r301986 and r301987 "Add codeview::StringTable" 2017-05-03 15:58:37 +00:00
BlockFrequency.h
BranchProbability.h [BPI] Add multiplication by scalar operators to BranchProbability 2017-04-21 03:14:30 +00:00
CachePruning.h Support, LTO: When pruning a directory, ignore files matching a prefix. 2017-03-20 16:41:57 +00:00
Capacity.h
Casting.h [llvm-pdbdump] More advanced class definition dumping. 2017-04-12 23:18:21 +00:00
CBindingWrapping.h
Chrono.h Attempt to fix MSVC build broken by r294326 2017-02-07 18:35:36 +00:00
circular_raw_ostream.h
CMakeLists.txt CMake: ignore git stderr when trying to sort out revision. NFC. 2017-04-28 16:06:00 +00:00
CodeGen.h [ARM] Add support for embedded position-independent code 2016-08-08 15:28:31 +00:00
CodeGenCWrappers.h
COFF.h Add a file magic for CL.exe's object file created with /GL. 2016-11-15 00:54:54 +00:00
COM.h
CommandLine.h [Support][CommandLine] Make it possible to get error messages from ParseCommandLineOptions when ignoring errors. 2017-03-15 08:41:00 +00:00
Compiler.h Trailing whitespace. 2017-04-02 23:57:17 +00:00
Compression.h Recommit r292214 "[Support/Compression] - Change zlib API to return Error instead of custom status" 2017-01-17 15:45:07 +00:00
ConvertUTF.h Move UTF functions into namespace llvm. 2016-09-30 00:38:45 +00:00
CrashRecoveryContext.h
DataExtractor.h Make DWARFDebugLine use StringRef for directory/file tables. NFC 2017-05-02 17:37:32 +00:00
DataTypes.h.cmake
Debug.h Make VerifyDomInfo and VerifyLoopInfo global variables 2017-01-24 05:52:07 +00:00
DebugCounter.h DebugCounters: Add API for setting/unsetting programatically. 2017-03-18 15:41:13 +00:00
DOTGraphTraits.h
Dwarf.def [DWARF] Versioning for DWARF constants; verify FORMs 2017-04-20 19:16:51 +00:00
Dwarf.h [DWARF] Fix a couple of typos 2017-04-20 20:03:03 +00:00
DynamicLibrary.h Refactor DynamicLibrary so searching for a symbol will have a defined order and 2017-04-27 16:55:24 +00:00
ELF.h [MC] Set SHT_MIPS_DWARF section type for all .debug_* sections on MIPS 2017-03-10 08:22:20 +00:00
Endian.h iwyu fixes for lldbCore. 2017-04-06 21:28:29 +00:00
EndianStream.h
Errc.h
Errno.h
Error.h [ORC] Add RPC and serialization support for Errors and Expecteds. 2017-04-13 03:51:35 +00:00
ErrorHandling.h
ErrorOr.h
FileOutputBuffer.h Support outputting to /dev/null. 2017-01-09 21:52:35 +00:00
FileSystem.h [Support] Avoid UB in sys::fs::perms::operator~. NFC. 2017-04-26 00:48:28 +00:00
FileUtilities.h
Format.h Fix comment typos. NFC. 2016-11-20 13:47:59 +00:00
FormatAdapters.h Properly parse the TypeServer2 record. 2017-02-03 21:22:27 +00:00
FormatCommon.h Simplify format member detection in FormatVariadic 2016-12-15 09:40:27 +00:00
FormatProviders.h Don't build up std::vectors with constant sizes when an array suffices. 2017-03-24 14:11:47 +00:00
FormattedStream.h
FormatVariadic.h Spelling mistakes in comments. NFCI. 2017-03-30 12:59:53 +00:00
FormatVariadicDetails.h Simplify format member detection in FormatVariadic 2016-12-15 09:40:27 +00:00
GCOV.h [Support] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC). 2017-03-01 23:59:26 +00:00
GenericDomTree.h Avoid unnecessary copies in some for loops 2017-04-24 20:01:03 +00:00
GenericDomTreeConstruction.h Revert "Fix PR 24415 (at least), by making our post-dominator tree behavior sane." 2017-03-02 21:08:37 +00:00
GlobPattern.h Move GlobPattern class from LLD to llvm/Support. 2016-12-20 23:09:09 +00:00
GraphWriter.h Cleanup some GraphTraits iteration code 2017-04-19 03:22:50 +00:00
Host.h Make naming in Host.h in line with coding standards. 2017-03-31 13:06:40 +00:00
JamCRC.h
KnownBits.h [KnownBits] Add methods for determining if KnownBits is a constant value 2017-05-03 23:12:29 +00:00
LEB128.h [Support] Fix overflow in SLEB128 decoding. 2017-04-27 02:09:44 +00:00
LICENSE.TXT
LineIterator.h
Locale.h
LockFileManager.h
LowLevelTypeImpl.h [GlobalISel] Support vector-of-pointers in LLT 2017-04-19 07:23:57 +00:00
MachO.def Add LC_BUILD_VERSION load command 2017-01-23 20:07:55 +00:00
MachO.h Add support for the x86_thread_state32_t and 2017-01-23 21:13:29 +00:00
ManagedStatic.h [ADT, Support, TableGen] Fix some Clang-tidy modernize-use-default and Include What You Use warnings; other minor fixes (NFC). 2016-12-01 22:13:24 +00:00
MathExtras.h [MathExtras] Fix undefined behavior (shift by bit width) 2017-04-19 17:46:15 +00:00
MD5.h Add a function to MD5 a file's contents. 2017-03-20 23:33:18 +00:00
Memory.h
MemoryBuffer.h [Support] Add a function to check if a file resides locally. 2017-02-21 20:55:47 +00:00
MipsABIFlags.h
Mutex.h
MutexGuard.h
NativeFormatting.h Add newline to end of file to quiet warnings. 2016-12-25 18:41:47 +00:00
OnDiskHashTable.h Retire llvm::alignOf in favor of C++11 alignof. 2016-10-20 15:02:18 +00:00
Options.h Use StringRef in CommandLine Options handling (NFC) 2016-10-01 03:43:20 +00:00
Path.h [Support] Support both Windows and Posix paths on both platforms. 2017-03-16 22:28:04 +00:00
PluginLoader.h
PointerLikeTypeTraits.h Add PointerLikeTypeTraits for const things, as long as there is one for the non-const version. Clang and other users have a number of types they use as pointers, and this avoids having to define both const and non-const versions of PointerLikeTraits. 2017-03-07 18:47:50 +00:00
PrettyStackTrace.h Prepare PrettyStackTrace for LLDB adoption 2016-12-14 19:09:43 +00:00
Printable.h Fix comment typos. NFC. 2016-11-20 13:47:59 +00:00
Process.h Remove TimeValue usage from llvm/Support 2016-10-24 10:59:17 +00:00
Program.h
RandomNumberGenerator.h [RandomNumberGenerator] Remove MSVC 2013 compatibility hack. 2016-11-06 20:55:40 +00:00
raw_os_ostream.h
raw_ostream.h [ADT, Support, TableGen] Fix some Clang-tidy modernize-use-default and Include What You Use warnings; other minor fixes (NFC). 2016-12-01 22:13:24 +00:00
raw_sha1_ostream.h
Recycler.h [Support] Make asan poisoning for recyclers more aggressive by also poisoning the 'next' pointer. 2017-04-20 20:28:18 +00:00
RecyclingAllocator.h Retire llvm::alignOf in favor of C++11 alignof. 2016-10-20 15:02:18 +00:00
Regex.h Add const to a const method. NFC 2017-04-18 01:04:05 +00:00
Registry.h Add missing #include from r283039. Found by modules build. 2016-10-05 22:40:54 +00:00
RWMutex.h RWMutex.h: Use llvm-config.h instead of config.h in installed headers. 2017-02-16 08:22:08 +00:00
SaveAndRestore.h
ScaledNumber.h
ScopedPrinter.h [llvm-pdbdump] Allow printing only a portion of a stream. 2017-04-28 00:43:38 +00:00
SHA1.h Add convenient functions to compute hashes of byte vectors. 2016-11-23 00:46:09 +00:00
Signals.h
SMLoc.h [Support] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC). 2017-02-15 22:17:02 +00:00
Solaris.h
SourceMgr.h [Support] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC). 2017-02-15 22:17:02 +00:00
SpecialCaseList.h
StringPool.h
StringSaver.h Make StringSaver::save less ambiguous. 2017-04-27 03:45:33 +00:00
SwapByteOrder.h Add missing includes on Windows. 2016-12-21 18:50:52 +00:00
SystemUtils.h
TargetParser.h [ARM] Rename HW div feature to HW div Thumb. NFCI. 2017-04-20 09:38:25 +00:00
TargetRegistry.h [Support] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC). 2017-03-01 23:59:26 +00:00
TargetSelect.h
TarWriter.h Add a class to create a tar archive file. 2017-01-06 02:29:48 +00:00
thread.h [Windows] Remove the #include <eh.h> hack. 2017-03-03 20:21:59 +00:00
Threading.h Try to fix thread name truncation on non-Windows. 2017-03-04 18:53:09 +00:00
ThreadLocal.h
ThreadPool.h [Windows] Remove the #include <eh.h> hack. 2017-03-03 20:21:59 +00:00
Timer.h [Support] Make printAllJSONValues public, for custom output. 2017-04-03 18:04:15 +00:00
ToolOutputFile.h
TrailingObjects.h Workaround MSVC bug when using TrailingObjects from a template. 2017-02-28 18:05:41 +00:00
TrigramIndex.h Use trigrams to speed up SpecialCaseList. 2016-12-01 02:54:54 +00:00
type_traits.h Add support for DenseMap/DenseSet count and find using const pointers 2017-03-10 00:25:26 +00:00
TypeName.h
Unicode.h
UnicodeCharRanges.h Remove LLVM_CONSTEXPR. 2016-10-23 19:39:16 +00:00
UniqueLock.h [Support] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC). 2017-02-15 22:17:02 +00:00
Valgrind.h
Wasm.h [WebAssembly] Add size of section header to data relocation offsets. 2017-04-28 21:22:38 +00:00
Watchdog.h
Win64EH.h
WindowsError.h
xxhash.h Revert r301487: Replace HashString algorithm with xxHash64 2017-04-26 23:15:10 +00:00
YAMLParser.h Improve error handling in YAML parsing 2016-11-28 21:38:52 +00:00
YAMLTraits.h [llvm-pdbdump] Dump File / Line Info to YAML. 2017-04-25 20:22:02 +00:00