#include "CompilerDriver.h"
#include "ConfigLexer.h"
#include "llvm/Module.h"
+#include "llvm/Bitcode/ReaderWriter.h"
#include "llvm/Bytecode/Reader.h"
+#include "llvm/Support/MemoryBuffer.h"
#include "llvm/Support/Timer.h"
#include "llvm/System/Signals.h"
#include "llvm/ADT/SetVector.h"
#include <iostream>
using namespace llvm;
+
+static bool Bitcode = false;
+
namespace {
void WriteAction(CompilerDriver::Action* action ) {
Module::LibraryListType& deplibs,
BCDecompressor_t *BCDC,
std::string* ErrMsg) {
- ModuleProvider* MP = getBytecodeModuleProvider(fname, BCDC, ErrMsg);
+ ModuleProvider *MP = 0;
+ if (Bitcode) {
+ if (MemoryBuffer *Buffer = MemoryBuffer::getFileOrSTDIN(&fname[0],
+ fname.size())) {
+ MP = getBitcodeModuleProvider(Buffer);
+ if (MP == 0) delete Buffer;
+ }
+ } else {
+ MP = getBytecodeModuleProvider(fname, BCDC, ErrMsg);
+ }
if (!MP) {
deplibs.clear();
return true;
}
- Module* M = MP->releaseModule(ErrMsg);
- deplibs = M->getLibraries();
- delete M;
+ deplibs = MP->getModule()->getLibraries();
delete MP;
return false;
}
##===----------------------------------------------------------------------===##
LEVEL = ../..
TOOLNAME = llvmc
-LINK_COMPONENTS = support system core bcreader
+LINK_COMPONENTS = support system core bcreader bitreader
CONFIG_FILES = c cpp ll st
EXTRA_DIST = c cpp ll ConfigLexer.cpp.cvs ConfigLexer.l.cvs
REQUIRES_EH := 1