diff options
| author | Scott Linder <scott@scottlinder.com> | 2019-02-11 22:01:13 +0000 |
|---|---|---|
| committer | Scott Linder <scott@scottlinder.com> | 2019-02-11 22:01:13 +0000 |
| commit | 72a0f4e8db404d1978138279bfcabceea9446d35 (patch) | |
| tree | 87fdeed23cf1ee0714d6d24538d3fcd2d66efe3e | |
| parent | 18ec3826984ccc1ba9b3a13ef7bc7fcac82a9563 (diff) | |
| download | bcm5719-llvm-72a0f4e8db404d1978138279bfcabceea9446d35.tar.gz bcm5719-llvm-72a0f4e8db404d1978138279bfcabceea9446d35.zip | |
[IRReader] Expose getLazyIRModule
Currently there is no way to lazy-load an in-memory IR module without
first writing it to disk. This patch just exposes the existing
implementation of getLazyIRModule.
This is effectively a revert of rL212364
Differential Revision: https://reviews.llvm.org/D56203
llvm-svn: 353755
| -rw-r--r-- | llvm/include/llvm/IRReader/IRReader.h | 11 | ||||
| -rw-r--r-- | llvm/lib/IRReader/IRReader.cpp | 6 |
2 files changed, 14 insertions, 3 deletions
diff --git a/llvm/include/llvm/IRReader/IRReader.h b/llvm/include/llvm/IRReader/IRReader.h index e0213700afe..05171300b60 100644 --- a/llvm/include/llvm/IRReader/IRReader.h +++ b/llvm/include/llvm/IRReader/IRReader.h @@ -20,11 +20,22 @@ namespace llvm { class StringRef; +class MemoryBuffer; class MemoryBufferRef; class Module; class SMDiagnostic; class LLVMContext; +/// If the given MemoryBuffer holds a bitcode image, return a Module +/// for it which does lazy deserialization of function bodies. Otherwise, +/// attempt to parse it as LLVM Assembly and return a fully populated +/// Module. The ShouldLazyLoadMetadata flag is passed down to the bitcode +/// reader to optionally enable lazy metadata loading. This takes ownership +/// of \p Buffer. +std::unique_ptr<Module> getLazyIRModule(std::unique_ptr<MemoryBuffer> Buffer, + SMDiagnostic &Err, LLVMContext &Context, + bool ShouldLazyLoadMetadata = false); + /// If the given file holds a bitcode image, return a Module /// for it which does lazy deserialization of function bodies. Otherwise, /// attempt to parse it as LLVM Assembly and return a fully populated diff --git a/llvm/lib/IRReader/IRReader.cpp b/llvm/lib/IRReader/IRReader.cpp index ec4422b04e6..7ca6c2fca52 100644 --- a/llvm/lib/IRReader/IRReader.cpp +++ b/llvm/lib/IRReader/IRReader.cpp @@ -29,9 +29,9 @@ static const char *const TimeIRParsingGroupDescription = "LLVM IR Parsing"; static const char *const TimeIRParsingName = "parse"; static const char *const TimeIRParsingDescription = "Parse IR"; -static std::unique_ptr<Module> -getLazyIRModule(std::unique_ptr<MemoryBuffer> Buffer, SMDiagnostic &Err, - LLVMContext &Context, bool ShouldLazyLoadMetadata) { +std::unique_ptr<Module> +llvm::getLazyIRModule(std::unique_ptr<MemoryBuffer> Buffer, SMDiagnostic &Err, + LLVMContext &Context, bool ShouldLazyLoadMetadata) { if (isBitcode((const unsigned char *)Buffer->getBufferStart(), (const unsigned char *)Buffer->getBufferEnd())) { Expected<std::unique_ptr<Module>> ModuleOrErr = getOwningLazyBitcodeModule( |

