2 * mini-llvm-cpp.h: LLVM backend
5 * Zoltan Varga (vargaz@gmail.com)
7 * (C) 2009 Novell, Inc.
10 #ifndef __MONO_MINI_LLVM_CPP_H__
11 #define __MONO_MINI_LLVM_CPP_H__
15 #include "llvm-c/Core.h"
16 #include "llvm-c/ExecutionEngine.h"
20 typedef unsigned char * (AllocCodeMemoryCb
) (LLVMValueRef function
, int size
);
21 typedef void (FunctionEmittedCb
) (LLVMValueRef function
, void *start
, void *end
);
22 typedef void (ExceptionTableCb
) (void *data
);
24 LLVMExecutionEngineRef
25 mono_llvm_create_ee (LLVMModuleProviderRef MP
, AllocCodeMemoryCb
*alloc_cb
, FunctionEmittedCb
*emitted_cb
, ExceptionTableCb
*exception_cb
);
28 mono_llvm_dispose_ee (LLVMExecutionEngineRef ee
);
31 mono_llvm_optimize_method (LLVMValueRef method
);
34 mono_llvm_dump_value (LLVMValueRef value
);
37 mono_llvm_build_alloca (LLVMBuilderRef builder
, LLVMTypeRef Ty
,
38 LLVMValueRef ArraySize
,
39 int alignment
, const char *Name
);
42 mono_llvm_build_load (LLVMBuilderRef builder
, LLVMValueRef PointerVal
,
43 const char *Name
, gboolean is_volatile
);
46 mono_llvm_build_aligned_load (LLVMBuilderRef builder
, LLVMValueRef PointerVal
,
47 const char *Name
, gboolean is_volatile
, int alignment
);
50 mono_llvm_replace_uses_of (LLVMValueRef var
, LLVMValueRef v
);
54 #endif /* __MONO_MINI_LLVM_CPP_H__ */