summaryrefslogtreecommitdiffstats
path: root/llvm/include/llvm-c
diff options
context:
space:
mode:
authorAndrew Kaylor <andrew.kaylor@intel.com>2013-04-29 17:49:40 +0000
committerAndrew Kaylor <andrew.kaylor@intel.com>2013-04-29 17:49:40 +0000
commit31be5eff33ddf04f0711d572cf7e98f37e7cf0bf (patch)
treea20da33ab03b74c51c88f366297f6cd4c055e441 /llvm/include/llvm-c
parentf97290bb53de7719b6633c13a96b73dc41a60f27 (diff)
downloadbcm5719-llvm-31be5eff33ddf04f0711d572cf7e98f37e7cf0bf.tar.gz
bcm5719-llvm-31be5eff33ddf04f0711d572cf7e98f37e7cf0bf.zip
Exposing MCJIT through C API
Re-submitting with fix for OCaml dependency problems (removing dependency on SectionMemoryManager when it isn't used). Patch by Fili Pizlo llvm-svn: 180720
Diffstat (limited to 'llvm/include/llvm-c')
-rw-r--r--llvm/include/llvm-c/ExecutionEngine.h28
1 files changed, 28 insertions, 0 deletions
diff --git a/llvm/include/llvm-c/ExecutionEngine.h b/llvm/include/llvm-c/ExecutionEngine.h
index be763312d22..8b654d5a5ca 100644
--- a/llvm/include/llvm-c/ExecutionEngine.h
+++ b/llvm/include/llvm-c/ExecutionEngine.h
@@ -34,11 +34,17 @@ extern "C" {
*/
void LLVMLinkInJIT(void);
+void LLVMLinkInMCJIT(void);
void LLVMLinkInInterpreter(void);
typedef struct LLVMOpaqueGenericValue *LLVMGenericValueRef;
typedef struct LLVMOpaqueExecutionEngine *LLVMExecutionEngineRef;
+struct LLVMMCJITCompilerOptions {
+ unsigned OptLevel;
+ LLVMBool NoFramePointerElim;
+};
+
/*===-- Operations on generic values --------------------------------------===*/
LLVMGenericValueRef LLVMCreateGenericValueOfInt(LLVMTypeRef Ty,
@@ -75,6 +81,28 @@ LLVMBool LLVMCreateJITCompilerForModule(LLVMExecutionEngineRef *OutJIT,
unsigned OptLevel,
char **OutError);
+/**
+ * Create an MCJIT execution engine for a module, with the given options. It is
+ * the responsibility of the caller to ensure that all fields in Options up to
+ * the given SizeOfOptions are initialized. It is correct to pass a smaller value
+ * of SizeOfOptions that omits some fields, and it is also correct to set any
+ * field to zero. The canonical way of using this is:
+ *
+ * LLVMMCJITCompilerOptions options;
+ * memset(&options, 0, sizeof(options));
+ * ... fill in those options you care about
+ * LLVMCreateMCJITCompilerForModule(&jit, mod, &options, sizeof(options), &error);
+ *
+ * Note that this is also correct, though possibly suboptimal:
+ *
+ * LLVMCreateMCJITCompilerForModule(&jit, mod, 0, 0, &error);
+ */
+LLVMBool LLVMCreateMCJITCompilerForModule(LLVMExecutionEngineRef *OutJIT,
+ LLVMModuleRef M,
+ struct LLVMMCJITCompilerOptions *Options,
+ size_t SizeOfOptions,
+ char **OutError);
+
/** Deprecated: Use LLVMCreateExecutionEngineForModule instead. */
LLVMBool LLVMCreateExecutionEngine(LLVMExecutionEngineRef *OutEE,
LLVMModuleProviderRef MP,
OpenPOWER on IntegriCloud