llvm-project/llvm/tools
Teresa Johnson ff642b9b84 Restore "Function bitcode index in Value Symbol Table and lazy reading support"
This reverts commit r247898 (which reverted r247894).

Patch fixed to address two issues exposed by buildbots:
- unused variable warning in NDEBUG mode
- std::initializer_list lifetime issue causing test failures

Original Summary:
Support for including the function bitcode indices in the Value Symbol
Table. This requires writing the VST after the function blocks, which in
turn requires a new VST forward declaration record encoding the offset of
the full VST (which is backpatched to contain the offset after the VST
is written).

This patch also enables the lazy function reader to use the new function
indices out of the VST. This support will be used by ThinLTO as well, which
will be in a follow on patch. Backwards compatibility with older bitcode
files is maintained.

A new test is also included.

The bitcode format (used for the lazy reader as well as the upcoming
ThinLTO patches) came out of discussions with Duncan and others and is
described here:
https://drive.google.com/file/d/0B036uwnWM6RWdnBLakxmeDdOeXc/view

Reviewers: dexonsmith, davidxl, joker.eph

Subscribers: llvm-commits

Differential Revision: http://reviews.llvm.org/D12536

llvm-svn: 247927
2015-09-17 20:12:00 +00:00
..
bugpoint Replace some calls to isa<LandingPadInst> with isEHPad() 2015-08-19 19:54:02 +00:00
bugpoint-passes bugpoint Enhancement. 2015-04-20 23:42:22 +00:00
dsymutil Revert r247692: Replace Triple with a new TargetTuple in MCTargetDesc/* and related. NFC. 2015-09-15 16:17:27 +00:00
gold Disable the second verification run when performing LTO through 2015-09-16 18:06:45 +00:00
llc Remove access to the DataLayout in the TargetMachine 2015-07-24 16:04:22 +00:00
lli Fix lli with OrcLazyJIT: the default DataLayout was used. 2015-07-30 17:29:33 +00:00
llvm-ar [CMake] Refactor and cleanup generating and installing symlinks to tools. 2015-09-14 23:09:06 +00:00
llvm-as Fix input validation issues in llvm-as/llvm-dis 2015-05-11 21:20:20 +00:00
llvm-as-fuzzer Build a lib/Fuzzer version for llvm-as. 2015-08-31 17:55:32 +00:00
llvm-bcanalyzer Restore "Function bitcode index in Value Symbol Table and lazy reading support" 2015-09-17 20:12:00 +00:00
llvm-c-test Fix build breakage caused by memory leaks in llvm-c-test 2015-01-28 18:32:31 +00:00
llvm-config llvm-config: Add --build-system option 2015-09-09 16:39:30 +00:00
llvm-cov [llvm-cov] Disable name and path truncation 2015-09-14 23:26:36 +00:00
llvm-cxxdump [llvm-cxxdump] Remove duplicate code check. 2015-09-15 23:35:32 +00:00
llvm-diff -Wdeprecated clean by making LogBuilder move constructible so it can be returned by value (in DifferenceEngine::logf) 2015-08-05 21:06:50 +00:00
llvm-dis Use std::unique_ptr to manage the DataStreamer in bitcode parsing. 2015-06-16 23:29:49 +00:00
llvm-dwarfdump [dwarfdump] Add support for dumping mach-o universal objectfiles 2015-08-03 00:10:31 +00:00
llvm-extract uselistorder: Remove the global bits 2015-04-15 03:14:06 +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 New bitcode linker flags: 2015-09-01 17:55:55 +00:00
llvm-lto Reapply "LTO: Disable extra verify runs in release builds" 2015-09-15 23:05:59 +00:00
llvm-mc Revert r247692: Replace Triple with a new TargetTuple in MCTargetDesc/* and related. NFC. 2015-09-15 16:17:27 +00:00
llvm-mc-fuzzer llvm-mc-fuzzer: A fuzzing tool for the MC layer. 2015-09-16 11:49:49 +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 Convert getSymbolSection to return an ErrorOr. 2015-08-07 23:27:14 +00:00
llvm-objdump Revert r247692: Replace Triple with a new TargetTuple in MCTargetDesc/* and related. NFC. 2015-09-15 16:17:27 +00:00
llvm-pdbdump Replace push_back(Constructor(foo)) with emplace_back(foo) for non-trivial types 2015-05-29 19:43:39 +00:00
llvm-profdata Check for errors after reading a sample profile in llvm-profdata. 2015-09-17 00:17:21 +00:00
llvm-readobj [llvm-readobj] MachO -- dump LinkerOptions load command. 2015-09-09 00:21:18 +00:00
llvm-rtdyld Revert r247692: Replace Triple with a new TargetTuple in MCTargetDesc/* and related. NFC. 2015-09-15 16:17:27 +00:00
llvm-shlib [cmake] rework LLVM_LINK_LLVM_DYLIB option handling 2015-09-05 08:27:33 +00:00
llvm-size Fix "the the" in comments. 2015-06-19 01:53:21 +00:00
llvm-split TransformUtils: Introduce module splitter. 2015-08-21 02:48:20 +00:00
llvm-stress [PM/AA] Remove the last relics of the separate IPA library from LLVM, 2015-08-18 17:51:53 +00:00
llvm-symbolizer [llvm-symbolizer] Remove underscores and other C mangling on Windows 2015-08-10 21:47:11 +00:00
lto Reapply "LTO: Disable extra verify runs in release builds" 2015-09-15 23:05:59 +00:00
macho-dump [Object, MachO] Introduce MachOObjectFile::load_commands() range iterator. 2015-06-03 22:19:36 +00:00
msbuild MSBuild integration: fix the loop in install.bat 2014-09-30 22:30:06 +00:00
obj2yaml Pass a symbol table to getRelocationSymbol instead of returning one. 2015-09-02 15:07:39 +00:00
opt [PM/AA] Remove the last relics of the separate IPA library from LLVM, 2015-08-18 17:51:53 +00:00
verify-uselistorder Move the personality function from LandingPadInst to Function 2015-06-17 20:52:32 +00:00
yaml2obj [yaml2obj] Support numeric indexes to create invalid files. Will be used by lld test. 2015-08-27 23:11:20 +00:00
CMakeLists.txt [CMake] Add llvm-ar subdirectory explicitly. 2015-09-14 18:36:40 +00:00
LLVMBuild.txt TransformUtils: Introduce module splitter. 2015-08-21 02:48:20 +00:00
Makefile TransformUtils: Introduce module splitter. 2015-08-21 02:48:20 +00:00