diff options
Diffstat (limited to 'lib/Bytecode/Archive/ArchiveReader.cpp')
-rw-r--r-- | lib/Bytecode/Archive/ArchiveReader.cpp | 61 |
1 files changed, 18 insertions, 43 deletions
diff --git a/lib/Bytecode/Archive/ArchiveReader.cpp b/lib/Bytecode/Archive/ArchiveReader.cpp index 209db77ee0..c38389e2d7 100644 --- a/lib/Bytecode/Archive/ArchiveReader.cpp +++ b/lib/Bytecode/Archive/ArchiveReader.cpp @@ -12,15 +12,12 @@ //===----------------------------------------------------------------------===// #include "ArchiveInternals.h" -#include "llvm/Bytecode/Reader.h" #include "llvm/Bitcode/ReaderWriter.h" -#include "llvm/Support/Compressor.h" #include "llvm/Support/MemoryBuffer.h" +#include "llvm/Module.h" #include <memory> using namespace llvm; -static bool Bitcode = false; - /// Read a variable-bit-rate encoded unsigned integer inline unsigned readInteger(const char*&At, const char*End){ unsigned Shift = 0; @@ -355,21 +352,12 @@ Archive::getAllModules(std::vector<Module*>& Modules, std::string* ErrMessage) { if (I->isBytecode() || I->isCompressedBytecode()) { std::string FullMemberName = archPath.toString() + "(" + I->getPath().toString() + ")"; - Module *M; + MemoryBuffer *Buffer = + MemoryBuffer::getNewMemBuffer(I->getSize(), FullMemberName.c_str()); + memcpy((char*)Buffer->getBufferStart(), I->getData(), I->getSize()); - if (Bitcode) { - MemoryBuffer *Buffer = - MemoryBuffer::getNewMemBuffer(I->getSize(), FullMemberName.c_str()); - memcpy((char*)Buffer->getBufferStart(), I->getData(), I->getSize()); - - M = ParseBitcodeFile(Buffer, ErrMessage); - delete Buffer; - } else { - M = ParseBytecodeBuffer((const unsigned char*)I->getData(), - I->getSize(), FullMemberName, - Compressor::decompressToNewBuffer, - ErrMessage); - } + Module *M = ParseBitcodeFile(Buffer, ErrMessage); + delete Buffer; if (!M) return true; @@ -502,17 +490,11 @@ Archive::findModuleDefiningSymbol(const std::string& symbol, // Now, load the bytecode module to get the ModuleProvider std::string FullMemberName = archPath.toString() + "(" + mbr->getPath().toString() + ")"; - ModuleProvider* mp; - if (Bitcode) { - MemoryBuffer *Buffer =MemoryBuffer::getNewMemBuffer(mbr->getSize(), - FullMemberName.c_str()); - memcpy((char*)Buffer->getBufferStart(), mbr->getData(), mbr->getSize()); - - mp = getBitcodeModuleProvider(Buffer, ErrMsg); - } else - mp = getBytecodeBufferModuleProvider( - (const unsigned char*) mbr->getData(), mbr->getSize(), - FullMemberName, Decompressor, ErrMsg, 0); + MemoryBuffer *Buffer =MemoryBuffer::getNewMemBuffer(mbr->getSize(), + FullMemberName.c_str()); + memcpy((char*)Buffer->getBufferStart(), mbr->getData(), mbr->getSize()); + + ModuleProvider *mp = getBitcodeModuleProvider(Buffer, ErrMsg); if (!mp) return 0; @@ -560,8 +542,7 @@ Archive::findModulesDefiningSymbols(std::set<std::string>& symbols, mbr->getPath().toString() + ")"; ModuleProvider* MP = GetBytecodeSymbols((const unsigned char*)At, mbr->getSize(), - FullMemberName, symbols, - Compressor::decompressToNewBuffer, error); + FullMemberName, symbols, error); if (MP) { // Insert the module's symbols into the symbol table @@ -636,18 +617,12 @@ bool Archive::isBytecodeArchive() { std::string FullMemberName = archPath.toString() + "(" + I->getPath().toString() + ")"; - Module *M; - - if (Bitcode) { - MemoryBuffer *Buffer = - MemoryBuffer::getNewMemBuffer(I->getSize(), FullMemberName.c_str()); - memcpy((char*)Buffer->getBufferStart(), I->getData(), I->getSize()); - M = ParseBitcodeFile(Buffer); - delete Buffer; - } else { - M = ParseBytecodeBuffer((const unsigned char*)I->getData(), - I->getSize(), FullMemberName); - } + + MemoryBuffer *Buffer = + MemoryBuffer::getNewMemBuffer(I->getSize(), FullMemberName.c_str()); + memcpy((char*)Buffer->getBufferStart(), I->getData(), I->getSize()); + Module *M = ParseBitcodeFile(Buffer); + delete Buffer; if (!M) return false; // Couldn't parse bytecode, not a bytecode archive. delete M; |