llvm-project/llvm/tools
Xinliang David Li a716cc5c33 [PGO] Improve Indexed Profile Reader efficiency
With the support of value profiling added, the Indexed prof
reader gets less efficient. The prof reader initialization
used to be just reading the file header, but with VP support
added, initialization needs to walk through all profile keys
of ondisk hash table resulting in very poor locality and large
memory increase (keys are stored together with the profile data
in the mapped profile buffer). Even worse, when the reader is 
used by the compiler (not llvm-profdata too), the penalty becomes
very high as compilation of each single module requires touching
profile data buffer for the whole program. 

In this patch, the icall target values (MD5hash) are no longer eargerly 
converted back to name strings when the data is read into memory. New
interface is added to to profile reader so that InstrProfSymtab can be
lazily created for Indexed profile reader on-demand. Creating of the 
symtab is intended to be used by llvm-profdata tool for symbolic dumping
of  VP data. It can be used with compiler (for legacy out of tree uses)
too but not recommended due to compile time and memory reasons 
mentioned above.

Some other cleanups are also included: Function Addr to md5 map is now
consolated into InstrProfSymtab. InstrProfStringtab is no longer used and
eliminated.

llvm-svn: 256114
2015-12-20 06:22:13 +00:00
..
bugpoint Change linkInModule to take a std::unique_ptr. 2015-12-16 23:16:33 +00:00
bugpoint-passes [bugpoint] Add a named metadata (+their operands) reducer 2015-11-06 00:12:50 +00:00
dsymutil [dsymutil] Ignore absolute symbols in the debug map 2015-12-11 17:50:37 +00:00
gold Use LLVM style variable name (NFC) 2015-12-16 21:37:48 +00:00
llc fix 'the the '; NFC 2015-12-07 19:21:39 +00:00
lli Drop materializeAllPermanently. 2015-12-18 20:13:39 +00:00
llvm-ar [llvm-ar] Use failIfError/fail helpers. 2015-11-14 19:00:33 +00:00
llvm-as Support for function summary index bitcode sections and files. 2015-10-04 14:33:43 +00:00
llvm-as-fuzzer [libFuzzer] make LLVMFuzzerTestOneInput (the fuzzer target function) return int instead of void. The actual return value is not *yet* used (and expected to be 0). This change is API breaking, so the fuzzers will need to be updated. 2015-10-02 23:34:06 +00:00
llvm-bcanalyzer [IR] Remove terminatepad 2015-12-14 18:34:23 +00:00
llvm-c-test Deprecate a few C APIs. 2015-12-18 23:46:42 +00:00
llvm-config Fix a use-after-free in `llvm-config`. 2015-11-25 22:49:48 +00:00
llvm-cov [llvm-cov] Adjust column widths for function and file reports 2015-10-21 16:03:32 +00:00
llvm-cxxdump Reapply r250906 with many suggested updates from Rafael Espindola. 2015-11-05 19:24:56 +00:00
llvm-diff llvm-diff: Remove implicit ilist iterator conversions, NFC 2015-10-20 18:17:05 +00:00
llvm-dis Drop materializeAllPermanently. 2015-12-18 20:13:39 +00:00
llvm-dwarfdump dwarfdump: Added macro support to llvm-dwarfdump tool. 2015-11-12 09:38:54 +00:00
llvm-dwp [llvm-dwp] Deduplicate type units 2015-12-14 07:42:00 +00:00
llvm-extract Assert that we have all use/users in the getters. 2015-12-19 20:03:23 +00:00
llvm-go Enable linking tools, shared libraries against libLLVM 2015-09-01 03:14:31 +00:00
llvm-jitlistener Fix the -DBUILD_SHARED_LIBS=ON build. 2015-07-07 17:48:00 +00:00
llvm-link [ThinLTO] Metadata linking for imported functions 2015-12-17 17:14:09 +00:00
llvm-lto Let llvm-lto installed. A few tests in clang/test are using it. 2015-12-07 23:07:16 +00:00
llvm-mc Fix some Clang-tidy modernize warnings, other minor fixes. 2015-11-04 22:32:32 +00:00
llvm-mc-fuzzer [libFuzzer] make LLVMFuzzerTestOneInput (the fuzzer target function) return int instead of void. The actual return value is not *yet* used (and expected to be 0). This change is API breaking, so the fuzzers will need to be updated. 2015-10-02 23:34:06 +00:00
llvm-mcmarkup Explicitly pass ownership of the MemoryBuffer to AddNewSourceBuffer using std::unique_ptr 2014-08-21 20:44:56 +00:00
llvm-nm Fix UMR in llvm-nm on IR object files in printDarwinSymbol 2015-11-19 00:51:50 +00:00
llvm-objdump [llvm-objdump] Fail early if we can't parse the object header. 2015-12-19 22:09:40 +00:00
llvm-pdbdump Introduce a range version of std::any_of, and use it in SCEV 2015-12-01 07:49:23 +00:00
llvm-profdata [PGO] Improve Indexed Profile Reader efficiency 2015-12-20 06:22:13 +00:00
llvm-readobj Reland "[llvm-readobj] Simplify usage of -codeview flag" 2015-12-16 18:28:12 +00:00
llvm-rtdyld [Orc] Removing traces of takeOwnershipOfBuffers left after r251560. 2015-12-07 17:35:56 +00:00
llvm-shlib [CMake] Bug 25059 - CMake libllvm.so.$MAJOR.$MINOR shared object name not compatible with ldconfig 2015-11-04 23:11:12 +00:00
llvm-size Reapply r250906 with many suggested updates from Rafael Espindola. 2015-11-05 19:24:56 +00:00
llvm-split TransformUtils: Introduce module splitter. 2015-08-21 02:48:20 +00:00
llvm-stress Use CmpInst::Predicate instead of 'unsigned short' in some places. NFC 2015-12-15 06:11:33 +00:00
llvm-symbolizer [Symbolizer]: Add -pretty-print option 2015-11-11 20:41:43 +00:00
lto Fix the order of destructors in LibLTOCodeGenerator 2015-12-09 03:37:51 +00:00
msbuild MSBuild integration: fix the loop in install.bat 2014-09-30 22:30:06 +00:00
obj2yaml [obj2yaml] Fix "time of check to time of use" bug. Add a test. 2015-09-19 20:49:34 +00:00
opt [opt] Fix run-twice option for non-idempotent passes 2015-12-05 01:38:12 +00:00
sancov [sancov] IWYU fix: add proper header inclusion. 2015-12-18 22:02:08 +00:00
verify-uselistorder [uselistorder] Insert blank line, NFC 2015-10-13 21:51:02 +00:00
xcode-toolchain [CMake] [Darwin] Add support for generating Xcode-compatible toolchains that xcodebuild and xcrun can search 2015-10-15 20:09:01 +00:00
yaml2obj Add a RAW mode to StringTableBuilder. 2015-10-23 21:48:05 +00:00
CMakeLists.txt [CMake] Adding llvm-profdata to the list of tools clang needs. 2015-12-16 18:30:36 +00:00
LLVMBuild.txt llvm-dwp: Initial layout 2015-12-01 00:48:34 +00:00
Makefile llvm-dwp: Initial layout 2015-12-01 00:48:34 +00:00