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);