Switch this over to bitcode instead of bytecode.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36866 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Chris Lattner
2007-05-06 09:28:33 +00:00
parent 4cbc5485e0
commit c1d5624d71
8 changed files with 80 additions and 120 deletions
+18 -43
View File
@@ -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;