Add inteface to libbcc for llvm::Module input.
diff --git a/bcc.cpp b/bcc.cpp
index 9d5bc3c..8b41a9e 100644
--- a/bcc.cpp
+++ b/bcc.cpp
@@ -2343,6 +2343,12 @@
     return;
   }
 
+  int loadModule(llvm::Module *module) {
+    GlobalInitialization();
+    mModule = module;
+    return hasError();
+  }
+
   int loadModule(const char *bitcode, size_t bitcodeSize) {
     llvm::MemoryBuffer *SB = NULL;
 
@@ -2758,6 +2764,12 @@
 }
 
 extern "C"
+void bccScriptModule(BCCscript *script,
+                     BCCvoid *module) {
+  script->compiler.loadModule(reinterpret_cast<llvm::Module*>(module));
+}
+
+extern "C"
 void bccScriptBitcode(BCCscript *script,
                       const BCCchar *bitcode,
                       BCCint size) {
diff --git a/include/bcc/bcc.h b/include/bcc/bcc.h
index aa731f6..2798631 100644
--- a/include/bcc/bcc.h
+++ b/include/bcc/bcc.h
@@ -58,8 +58,13 @@
 BCCenum bccGetError( BCCscript *script );
 
 void bccScriptBitcode(BCCscript *script,
-                 const BCCchar *bitcode,
-                 BCCint size);
+                      const BCCchar *bitcode,
+                      BCCint size);
+
+// Interface for llvm::Module input. @module should be a valid llvm::Module
+// instance.
+void bccScriptModule(BCCscript *script,
+                     BCCvoid *module);
 
 void bccCompileScript(BCCscript *script);