12e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksen/*===-- llvm-c/ExecutionEngine.h - ExecutionEngine Lib C Iface --*- C++ -*-===*\
22e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksen|*                                                                            *|
32e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksen|*                     The LLVM Compiler Infrastructure                       *|
42e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksen|*                                                                            *|
57ed47a13356daed2a34cd2209a31f92552e3bdd8Chris Lattner|* This file is distributed under the University of Illinois Open Source      *|
67ed47a13356daed2a34cd2209a31f92552e3bdd8Chris Lattner|* License. See LICENSE.TXT for details.                                      *|
72e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksen|*                                                                            *|
82e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksen|*===----------------------------------------------------------------------===*|
92e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksen|*                                                                            *|
102e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksen|* This header declares the C interface to libLLVMExecutionEngine.o, which    *|
112e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksen|* implements various analyses of the LLVM IR.                                *|
122e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksen|*                                                                            *|
132e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksen|* Many exotic languages can interoperate with C code but have a harder time  *|
142e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksen|* with C++ due to name mangling. So in addition to C, this interface enables *|
152e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksen|* tools written in such languages.                                           *|
162e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksen|*                                                                            *|
172e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksen\*===----------------------------------------------------------------------===*/
182e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksen
192e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksen#ifndef LLVM_C_EXECUTIONENGINE_H
202e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksen#define LLVM_C_EXECUTIONENGINE_H
212e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksen
222e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksen#include "llvm-c/Core.h"
237c1483bc6f009318ce66c4d37d1ba930e01a6d13Erick Tryzelaar#include "llvm-c/Target.h"
240e1327e4aa1426aaa3f99a2cbfcb1f2b575791adFilip Pizlo#include "llvm-c/TargetMachine.h"
252e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksen
262e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksen#ifdef __cplusplus
272e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksenextern "C" {
282e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksen#endif
292e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksen
306244b518880842f2c15200ee041e06799e4cc779Gregory Szorc/**
316244b518880842f2c15200ee041e06799e4cc779Gregory Szorc * @defgroup LLVMCExecutionEngine Execution Engine
326244b518880842f2c15200ee041e06799e4cc779Gregory Szorc * @ingroup LLVMC
336244b518880842f2c15200ee041e06799e4cc779Gregory Szorc *
346244b518880842f2c15200ee041e06799e4cc779Gregory Szorc * @{
356244b518880842f2c15200ee041e06799e4cc779Gregory Szorc */
366244b518880842f2c15200ee041e06799e4cc779Gregory Szorc
37e46161f10c3e0c640b22e446b873df8b01413f52Bob Wilsonvoid LLVMLinkInJIT(void);
38d2755af8bda2e0fd80efb46556485c4cdbe8704aAndrew Kaylorvoid LLVMLinkInMCJIT(void);
39e46161f10c3e0c640b22e446b873df8b01413f52Bob Wilsonvoid LLVMLinkInInterpreter(void);
40e46161f10c3e0c640b22e446b873df8b01413f52Bob Wilson
412e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksentypedef struct LLVMOpaqueGenericValue *LLVMGenericValueRef;
422e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksentypedef struct LLVMOpaqueExecutionEngine *LLVMExecutionEngineRef;
436cfed36338d7728076ddbc1331908b887a4302d3Filip Pizlotypedef struct LLVMOpaqueMCJITMemoryManager *LLVMMCJITMemoryManagerRef;
442e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksen
45d2755af8bda2e0fd80efb46556485c4cdbe8704aAndrew Kaylorstruct LLVMMCJITCompilerOptions {
46d2755af8bda2e0fd80efb46556485c4cdbe8704aAndrew Kaylor  unsigned OptLevel;
470e1327e4aa1426aaa3f99a2cbfcb1f2b575791adFilip Pizlo  LLVMCodeModel CodeModel;
48d2755af8bda2e0fd80efb46556485c4cdbe8704aAndrew Kaylor  LLVMBool NoFramePointerElim;
490e1327e4aa1426aaa3f99a2cbfcb1f2b575791adFilip Pizlo  LLVMBool EnableFastISel;
506cfed36338d7728076ddbc1331908b887a4302d3Filip Pizlo  LLVMMCJITMemoryManagerRef MCJMM;
51d2755af8bda2e0fd80efb46556485c4cdbe8704aAndrew Kaylor};
52d2755af8bda2e0fd80efb46556485c4cdbe8704aAndrew Kaylor
532e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksen/*===-- Operations on generic values --------------------------------------===*/
542e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksen
552e855e68d861224c9b61e2bc9cecad1536b1534bGordon HenriksenLLVMGenericValueRef LLVMCreateGenericValueOfInt(LLVMTypeRef Ty,
562e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksen                                                unsigned long long N,
57d686c8e73f74e37ab5f647b65a12051ee6cbad16Chris Lattner                                                LLVMBool IsSigned);
582e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksen
592e855e68d861224c9b61e2bc9cecad1536b1534bGordon HenriksenLLVMGenericValueRef LLVMCreateGenericValueOfPointer(void *P);
602e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksen
612e855e68d861224c9b61e2bc9cecad1536b1534bGordon HenriksenLLVMGenericValueRef LLVMCreateGenericValueOfFloat(LLVMTypeRef Ty, double N);
622e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksen
632e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksenunsigned LLVMGenericValueIntWidth(LLVMGenericValueRef GenValRef);
642e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksen
652e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksenunsigned long long LLVMGenericValueToInt(LLVMGenericValueRef GenVal,
66d686c8e73f74e37ab5f647b65a12051ee6cbad16Chris Lattner                                         LLVMBool IsSigned);
672e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksen
682e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksenvoid *LLVMGenericValueToPointer(LLVMGenericValueRef GenVal);
692e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksen
702e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksendouble LLVMGenericValueToFloat(LLVMTypeRef TyRef, LLVMGenericValueRef GenVal);
712e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksen
722e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksenvoid LLVMDisposeGenericValue(LLVMGenericValueRef GenVal);
732e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksen
742e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksen/*===-- Operations on execution engines -----------------------------------===*/
752e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksen
76df7df075b723e926e51555bf5aff6e231279a479Erick TryzelaarLLVMBool LLVMCreateExecutionEngineForModule(LLVMExecutionEngineRef *OutEE,
77df7df075b723e926e51555bf5aff6e231279a479Erick Tryzelaar                                            LLVMModuleRef M,
78df7df075b723e926e51555bf5aff6e231279a479Erick Tryzelaar                                            char **OutError);
79df7df075b723e926e51555bf5aff6e231279a479Erick Tryzelaar
80df7df075b723e926e51555bf5aff6e231279a479Erick TryzelaarLLVMBool LLVMCreateInterpreterForModule(LLVMExecutionEngineRef *OutInterp,
81df7df075b723e926e51555bf5aff6e231279a479Erick Tryzelaar                                        LLVMModuleRef M,
82df7df075b723e926e51555bf5aff6e231279a479Erick Tryzelaar                                        char **OutError);
83df7df075b723e926e51555bf5aff6e231279a479Erick Tryzelaar
84df7df075b723e926e51555bf5aff6e231279a479Erick TryzelaarLLVMBool LLVMCreateJITCompilerForModule(LLVMExecutionEngineRef *OutJIT,
85df7df075b723e926e51555bf5aff6e231279a479Erick Tryzelaar                                        LLVMModuleRef M,
86df7df075b723e926e51555bf5aff6e231279a479Erick Tryzelaar                                        unsigned OptLevel,
87df7df075b723e926e51555bf5aff6e231279a479Erick Tryzelaar                                        char **OutError);
88df7df075b723e926e51555bf5aff6e231279a479Erick Tryzelaar
890e1327e4aa1426aaa3f99a2cbfcb1f2b575791adFilip Pizlovoid LLVMInitializeMCJITCompilerOptions(
900e1327e4aa1426aaa3f99a2cbfcb1f2b575791adFilip Pizlo  struct LLVMMCJITCompilerOptions *Options, size_t SizeOfOptions);
910e1327e4aa1426aaa3f99a2cbfcb1f2b575791adFilip Pizlo
92d2755af8bda2e0fd80efb46556485c4cdbe8704aAndrew Kaylor/**
93d2755af8bda2e0fd80efb46556485c4cdbe8704aAndrew Kaylor * Create an MCJIT execution engine for a module, with the given options. It is
94d2755af8bda2e0fd80efb46556485c4cdbe8704aAndrew Kaylor * the responsibility of the caller to ensure that all fields in Options up to
950e1327e4aa1426aaa3f99a2cbfcb1f2b575791adFilip Pizlo * the given SizeOfOptions are initialized. It is correct to pass a smaller
960e1327e4aa1426aaa3f99a2cbfcb1f2b575791adFilip Pizlo * value of SizeOfOptions that omits some fields. The canonical way of using
970e1327e4aa1426aaa3f99a2cbfcb1f2b575791adFilip Pizlo * this is:
98d2755af8bda2e0fd80efb46556485c4cdbe8704aAndrew Kaylor *
99d2755af8bda2e0fd80efb46556485c4cdbe8704aAndrew Kaylor * LLVMMCJITCompilerOptions options;
1000e1327e4aa1426aaa3f99a2cbfcb1f2b575791adFilip Pizlo * LLVMInitializeMCJITCompilerOptions(&options, sizeof(options));
101d2755af8bda2e0fd80efb46556485c4cdbe8704aAndrew Kaylor * ... fill in those options you care about
1020e1327e4aa1426aaa3f99a2cbfcb1f2b575791adFilip Pizlo * LLVMCreateMCJITCompilerForModule(&jit, mod, &options, sizeof(options),
1030e1327e4aa1426aaa3f99a2cbfcb1f2b575791adFilip Pizlo *                                  &error);
104d2755af8bda2e0fd80efb46556485c4cdbe8704aAndrew Kaylor *
105d2755af8bda2e0fd80efb46556485c4cdbe8704aAndrew Kaylor * Note that this is also correct, though possibly suboptimal:
106d2755af8bda2e0fd80efb46556485c4cdbe8704aAndrew Kaylor *
107d2755af8bda2e0fd80efb46556485c4cdbe8704aAndrew Kaylor * LLVMCreateMCJITCompilerForModule(&jit, mod, 0, 0, &error);
108d2755af8bda2e0fd80efb46556485c4cdbe8704aAndrew Kaylor */
1090e1327e4aa1426aaa3f99a2cbfcb1f2b575791adFilip PizloLLVMBool LLVMCreateMCJITCompilerForModule(
1100e1327e4aa1426aaa3f99a2cbfcb1f2b575791adFilip Pizlo  LLVMExecutionEngineRef *OutJIT, LLVMModuleRef M,
1110e1327e4aa1426aaa3f99a2cbfcb1f2b575791adFilip Pizlo  struct LLVMMCJITCompilerOptions *Options, size_t SizeOfOptions,
1120e1327e4aa1426aaa3f99a2cbfcb1f2b575791adFilip Pizlo  char **OutError);
113d2755af8bda2e0fd80efb46556485c4cdbe8704aAndrew Kaylor
114df7df075b723e926e51555bf5aff6e231279a479Erick Tryzelaar/** Deprecated: Use LLVMCreateExecutionEngineForModule instead. */
115d686c8e73f74e37ab5f647b65a12051ee6cbad16Chris LattnerLLVMBool LLVMCreateExecutionEngine(LLVMExecutionEngineRef *OutEE,
116d686c8e73f74e37ab5f647b65a12051ee6cbad16Chris Lattner                                   LLVMModuleProviderRef MP,
117d686c8e73f74e37ab5f647b65a12051ee6cbad16Chris Lattner                                   char **OutError);
1182e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksen
119df7df075b723e926e51555bf5aff6e231279a479Erick Tryzelaar/** Deprecated: Use LLVMCreateInterpreterForModule instead. */
120d686c8e73f74e37ab5f647b65a12051ee6cbad16Chris LattnerLLVMBool LLVMCreateInterpreter(LLVMExecutionEngineRef *OutInterp,
121d686c8e73f74e37ab5f647b65a12051ee6cbad16Chris Lattner                               LLVMModuleProviderRef MP,
122d686c8e73f74e37ab5f647b65a12051ee6cbad16Chris Lattner                               char **OutError);
1232e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksen
124df7df075b723e926e51555bf5aff6e231279a479Erick Tryzelaar/** Deprecated: Use LLVMCreateJITCompilerForModule instead. */
125d686c8e73f74e37ab5f647b65a12051ee6cbad16Chris LattnerLLVMBool LLVMCreateJITCompiler(LLVMExecutionEngineRef *OutJIT,
126d686c8e73f74e37ab5f647b65a12051ee6cbad16Chris Lattner                               LLVMModuleProviderRef MP,
127d686c8e73f74e37ab5f647b65a12051ee6cbad16Chris Lattner                               unsigned OptLevel,
128d686c8e73f74e37ab5f647b65a12051ee6cbad16Chris Lattner                               char **OutError);
1292e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksen
1302e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksenvoid LLVMDisposeExecutionEngine(LLVMExecutionEngineRef EE);
1312e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksen
1322e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksenvoid LLVMRunStaticConstructors(LLVMExecutionEngineRef EE);
1332e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksen
1342e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksenvoid LLVMRunStaticDestructors(LLVMExecutionEngineRef EE);
1352e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksen
1362e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksenint LLVMRunFunctionAsMain(LLVMExecutionEngineRef EE, LLVMValueRef F,
1372e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksen                          unsigned ArgC, const char * const *ArgV,
1382e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksen                          const char * const *EnvP);
1392e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksen
1402e855e68d861224c9b61e2bc9cecad1536b1534bGordon HenriksenLLVMGenericValueRef LLVMRunFunction(LLVMExecutionEngineRef EE, LLVMValueRef F,
1412e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksen                                    unsigned NumArgs,
1422e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksen                                    LLVMGenericValueRef *Args);
1432e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksen
1442e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksenvoid LLVMFreeMachineCodeForFunction(LLVMExecutionEngineRef EE, LLVMValueRef F);
1452e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksen
146df7df075b723e926e51555bf5aff6e231279a479Erick Tryzelaarvoid LLVMAddModule(LLVMExecutionEngineRef EE, LLVMModuleRef M);
147df7df075b723e926e51555bf5aff6e231279a479Erick Tryzelaar
148df7df075b723e926e51555bf5aff6e231279a479Erick Tryzelaar/** Deprecated: Use LLVMAddModule instead. */
1492e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksenvoid LLVMAddModuleProvider(LLVMExecutionEngineRef EE, LLVMModuleProviderRef MP);
1502e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksen
151df7df075b723e926e51555bf5aff6e231279a479Erick TryzelaarLLVMBool LLVMRemoveModule(LLVMExecutionEngineRef EE, LLVMModuleRef M,
152df7df075b723e926e51555bf5aff6e231279a479Erick Tryzelaar                          LLVMModuleRef *OutMod, char **OutError);
153df7df075b723e926e51555bf5aff6e231279a479Erick Tryzelaar
154df7df075b723e926e51555bf5aff6e231279a479Erick Tryzelaar/** Deprecated: Use LLVMRemoveModule instead. */
155d686c8e73f74e37ab5f647b65a12051ee6cbad16Chris LattnerLLVMBool LLVMRemoveModuleProvider(LLVMExecutionEngineRef EE,
156d686c8e73f74e37ab5f647b65a12051ee6cbad16Chris Lattner                                  LLVMModuleProviderRef MP,
157d686c8e73f74e37ab5f647b65a12051ee6cbad16Chris Lattner                                  LLVMModuleRef *OutMod, char **OutError);
1582e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksen
159d686c8e73f74e37ab5f647b65a12051ee6cbad16Chris LattnerLLVMBool LLVMFindFunction(LLVMExecutionEngineRef EE, const char *Name,
160d686c8e73f74e37ab5f647b65a12051ee6cbad16Chris Lattner                          LLVMValueRef *OutFn);
1612e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksen
1620e1327e4aa1426aaa3f99a2cbfcb1f2b575791adFilip Pizlovoid *LLVMRecompileAndRelinkFunction(LLVMExecutionEngineRef EE,
1630e1327e4aa1426aaa3f99a2cbfcb1f2b575791adFilip Pizlo                                     LLVMValueRef Fn);
164d90fee9b4205c92786c8ae6fa574624b8d157f1cDuncan Sands
1657c1483bc6f009318ce66c4d37d1ba930e01a6d13Erick TryzelaarLLVMTargetDataRef LLVMGetExecutionEngineTargetData(LLVMExecutionEngineRef EE);
1667c1483bc6f009318ce66c4d37d1ba930e01a6d13Erick Tryzelaar
16754227f6752befd3196e078b83e4c440ecaff2dd7Gordon Henriksenvoid LLVMAddGlobalMapping(LLVMExecutionEngineRef EE, LLVMValueRef Global,
16854227f6752befd3196e078b83e4c440ecaff2dd7Gordon Henriksen                          void* Addr);
16954227f6752befd3196e078b83e4c440ecaff2dd7Gordon Henriksen
1701e42c5bdf50b54e33afa840b5dbb2d7c7d861a44Chris Lattnervoid *LLVMGetPointerToGlobal(LLVMExecutionEngineRef EE, LLVMValueRef Global);
1711e42c5bdf50b54e33afa840b5dbb2d7c7d861a44Chris Lattner
1726cfed36338d7728076ddbc1331908b887a4302d3Filip Pizlo/*===-- Operations on memory managers -------------------------------------===*/
1736cfed36338d7728076ddbc1331908b887a4302d3Filip Pizlo
1746cfed36338d7728076ddbc1331908b887a4302d3Filip Pizlo/**
1756cfed36338d7728076ddbc1331908b887a4302d3Filip Pizlo * Create a simple custom MCJIT memory manager. This memory manager can
1766cfed36338d7728076ddbc1331908b887a4302d3Filip Pizlo * intercept allocations in a module-oblivious way. This will return NULL
1776cfed36338d7728076ddbc1331908b887a4302d3Filip Pizlo * if any of the passed functions are NULL.
1786cfed36338d7728076ddbc1331908b887a4302d3Filip Pizlo *
1796cfed36338d7728076ddbc1331908b887a4302d3Filip Pizlo * @param Opaque An opaque client object to pass back to the callbacks.
1806cfed36338d7728076ddbc1331908b887a4302d3Filip Pizlo * @param AllocateCodeSection Allocate a block of memory for executable code.
1816cfed36338d7728076ddbc1331908b887a4302d3Filip Pizlo * @param AllocateDataSection Allocate a block of memory for data.
1826cfed36338d7728076ddbc1331908b887a4302d3Filip Pizlo * @param FinalizeMemory Set page permissions and flush cache. Return 0 on
1836cfed36338d7728076ddbc1331908b887a4302d3Filip Pizlo *   success, 1 on error.
1846cfed36338d7728076ddbc1331908b887a4302d3Filip Pizlo */
1856cfed36338d7728076ddbc1331908b887a4302d3Filip PizloLLVMMCJITMemoryManagerRef LLVMCreateSimpleMCJITMemoryManager(
1866cfed36338d7728076ddbc1331908b887a4302d3Filip Pizlo  void *Opaque,
1876cfed36338d7728076ddbc1331908b887a4302d3Filip Pizlo  uint8_t *(*AllocateCodeSection)(void *Opaque,
1886cfed36338d7728076ddbc1331908b887a4302d3Filip Pizlo                                  uintptr_t Size, unsigned Alignment,
1896cfed36338d7728076ddbc1331908b887a4302d3Filip Pizlo                                  unsigned SectionID),
1906cfed36338d7728076ddbc1331908b887a4302d3Filip Pizlo  uint8_t *(*AllocateDataSection)(void *Opaque,
1916cfed36338d7728076ddbc1331908b887a4302d3Filip Pizlo                                  uintptr_t Size, unsigned Alignment,
1926cfed36338d7728076ddbc1331908b887a4302d3Filip Pizlo                                  unsigned SectionID, LLVMBool IsReadOnly),
1936cfed36338d7728076ddbc1331908b887a4302d3Filip Pizlo  LLVMBool (*FinalizeMemory)(void *Opaque, char **ErrMsg),
1946cfed36338d7728076ddbc1331908b887a4302d3Filip Pizlo  void (*Destroy)(void *Opaque));
1956cfed36338d7728076ddbc1331908b887a4302d3Filip Pizlo
1966cfed36338d7728076ddbc1331908b887a4302d3Filip Pizlovoid LLVMDisposeMCJITMemoryManager(LLVMMCJITMemoryManagerRef MM);
1976cfed36338d7728076ddbc1331908b887a4302d3Filip Pizlo
1986244b518880842f2c15200ee041e06799e4cc779Gregory Szorc/**
1996244b518880842f2c15200ee041e06799e4cc779Gregory Szorc * @}
2006244b518880842f2c15200ee041e06799e4cc779Gregory Szorc */
2016244b518880842f2c15200ee041e06799e4cc779Gregory Szorc
2022e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksen#ifdef __cplusplus
2033e39731e88f2d4f597cebc74388fd6650ca4f604Eric Christopher}
2049313da5a90838c7242101dae250e86dcfc708e6aEvan Cheng#endif /* defined(__cplusplus) */
2052e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksen
2062e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksen#endif
207