OSDN Git Service

Restore "Function bitcode index in Value Symbol Table and lazy reading support"
authorTeresa Johnson <tejohnson@google.com>
Thu, 17 Sep 2015 20:12:00 +0000 (20:12 +0000)
committerTeresa Johnson <tejohnson@google.com>
Thu, 17 Sep 2015 20:12:00 +0000 (20:12 +0000)
commit3011017eccb93033ce44146c76d98ff3b84642b4
treee4847bbdd3fee21fc9168c40d1d611a8067d2b3e
parent78bdd69df12d4249212c9b3b5512c520fc7a096f
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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@247927 91177308-0d34-0410-b5e6-96231b3b80d8
include/llvm/Bitcode/LLVMBitCodes.h
lib/Bitcode/Reader/BitcodeReader.cpp
lib/Bitcode/Writer/BitcodeWriter.cpp
test/Bitcode/vst-forward-declaration.ll [new file with mode: 0644]
tools/llvm-bcanalyzer/llvm-bcanalyzer.cpp