add bitcode support, optimize reading to not read all function bodies just
authorChris Lattner <sabre@nondot.org>
Sun, 6 May 2007 05:51:37 +0000 (05:51 +0000)
committerChris Lattner <sabre@nondot.org>
Sun, 6 May 2007 05:51:37 +0000 (05:51 +0000)
to get deplibs

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36851 91177308-0d34-0410-b5e6-96231b3b80d8

tools/llvmc/CompilerDriver.cpp
tools/llvmc/Makefile

index 46015df8cb93db419dff2f512ad23e88522a8c9b..251da3429064d455690ae84f3500362f283a3b02 100644 (file)
@@ -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;
 }
index d762f98441242296a816104122cc7b5dae92b702..4c66afc59fdd99f2101e337e4bc3aeaca763300d 100644 (file)
@@ -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