+ return makeLTOModule(Buffer, options, errMsg, Context);
+}
+
+static ErrorOr<Module *> parseBitcodeFileImpl(MemoryBufferRef Buffer,
+ LLVMContext &Context,
+ bool ShouldBeLazy) {
+ // Find the buffer.
+ ErrorOr<MemoryBufferRef> MBOrErr =
+ IRObjectFile::findBitcodeInMemBuffer(Buffer);
+ if (std::error_code EC = MBOrErr.getError())
+ return EC;
+
+ if (!ShouldBeLazy)
+ // Parse the full file.
+ return parseBitcodeFile(*MBOrErr, Context);
+
+ // Parse lazily.
+ std::unique_ptr<MemoryBuffer> LightweightBuf =
+ MemoryBuffer::getMemBuffer(*MBOrErr, false);
+ return getLazyBitcodeModule(std::move(LightweightBuf), Context);