]> granicus.if.org Git - llvm/commit
IR, Bitcode: Change bitcode reader to no longer own its memory buffer.
authorPeter Collingbourne <peter@pcc.me.uk>
Tue, 8 Nov 2016 06:03:43 +0000 (06:03 +0000)
committerPeter Collingbourne <peter@pcc.me.uk>
Tue, 8 Nov 2016 06:03:43 +0000 (06:03 +0000)
commit5498e18776bcce6a9f016397d42fc27cdfb3ee49
tree9eafe5a7d8a33a017369c3d66b0cf370249270d3
parentadbd909be70e7310a5bb88fb57a6d0babb70409a
IR, Bitcode: Change bitcode reader to no longer own its memory buffer.

Unique ownership is just one possible ownership pattern for the memory buffer
underlying the bitcode reader. In practice, as this patch shows, ownership can
often reside at a higher level. With the upcoming change to allow multiple
modules in a single bitcode file, it will no longer be appropriate for
modules to generally have unique ownership of their memory buffer.

The C API exposes the ownership relation via the LLVMGetBitcodeModuleInContext
and LLVMGetBitcodeModuleInContext2 functions, so we still need some way for
the module to own the memory buffer. This patch does so by adding an owned
memory buffer field to Module, and using it in a few other places where it
is convenient.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286214 91177308-0d34-0410-b5e6-96231b3b80d8
12 files changed:
include/llvm/Bitcode/ReaderWriter.h
include/llvm/IR/Module.h
lib/Bitcode/Reader/BitReader.cpp
lib/Bitcode/Reader/BitcodeReader.cpp
lib/IR/Module.cpp
lib/IRReader/IRReader.cpp
lib/LTO/LTO.cpp
lib/LTO/LTOBackend.cpp
lib/LTO/LTOModule.cpp
lib/Object/IRObjectFile.cpp
tools/llvm-dis/llvm-dis.cpp
unittests/Bitcode/BitReaderTest.cpp