summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
Diffstat (limited to 'tools')
-rw-r--r--tools/llvmc/CompilerDriver.cpp20
-rw-r--r--tools/llvmc/Makefile2
2 files changed, 17 insertions, 5 deletions
diff --git a/tools/llvmc/CompilerDriver.cpp b/tools/llvmc/CompilerDriver.cpp
index 46015df8cb..251da34290 100644
--- a/tools/llvmc/CompilerDriver.cpp
+++ b/tools/llvmc/CompilerDriver.cpp
@@ -15,7 +15,9 @@
#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"
@@ -24,6 +26,9 @@
#include <iostream>
using namespace llvm;
+
+static bool Bitcode = false;
+
namespace {
void WriteAction(CompilerDriver::Action* action ) {
@@ -66,14 +71,21 @@ static bool GetBytecodeDependentLibraries(const std::string &fname,
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;
}
diff --git a/tools/llvmc/Makefile b/tools/llvmc/Makefile
index d762f98441..4c66afc59f 100644
--- a/tools/llvmc/Makefile
+++ b/tools/llvmc/Makefile
@@ -8,7 +8,7 @@
##===----------------------------------------------------------------------===##
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