Merge pull request #2431 from alexanderkyte/tests_with_excludes
[mono.git] / mono / mini / mini-llvm-loaded.c
index c93a83728120c36d2acf7129423f905f4cb52856..baa55cc1ff1d43c8e241f49890ed24d212275db4 100644 (file)
@@ -4,6 +4,7 @@
  */
 
 #include "mini.h"
+#include "mini-llvm.h"
 
 #ifdef MONO_LLVM_LOADED
 
@@ -14,7 +15,7 @@
 typedef void (*MonoLLVMVoidFunc)(void);
 typedef void (*MonoLLVMCFGFunc)(MonoCompile *cfg);
 typedef void (*MonoLLVMEmitCallFunc)(MonoCompile *cfg, MonoCallInst *call);
-typedef void (*MonoLLVMCreateAotFunc)(MonoAssembly *assembly, const char *global_prefix, gboolean emit_dwarf, gboolean static_link);
+typedef void (*MonoLLVMCreateAotFunc)(MonoAssembly *assembly, const char *global_prefix, gboolean emit_dwarf, gboolean static_link, gboolean llvm_only);
 typedef void (*MonoLLVMEmitAotFunc)(const char *filename, const char *cu_name);
 typedef void (*MonoLLVMEmitAotInfoFunc)(MonoAotFileInfo *info, gboolean has_jitted_code);
 typedef void (*MonoLLVMEmitAotDataFunc)(const char *symbol, guint8 *data, int data_len);
@@ -30,6 +31,7 @@ static MonoLLVMCFGFunc mono_llvm_check_method_supported_fptr;
 static MonoLLVMEmitAotInfoFunc mono_llvm_emit_aot_file_info_fptr;
 static MonoLLVMEmitAotDataFunc mono_llvm_emit_aot_data_fptr;
 static MonoLLVMFreeDomainFunc mono_llvm_free_domain_info_fptr;
+static void (*mono_llvm_create_vars_fptr) (MonoCompile *cfg);
 
 void
 mono_llvm_init (void)
@@ -56,10 +58,10 @@ mono_llvm_emit_call (MonoCompile *cfg, MonoCallInst *call)
 }
 
 void
-mono_llvm_create_aot_module (MonoAssembly *assembly, const char *global_prefix, gboolean emit_dwarf, gboolean static_link)
+mono_llvm_create_aot_module (MonoAssembly *assembly, const char *global_prefix, gboolean emit_dwarf, gboolean static_link, gboolean llvm_only)
 {
        g_assert (mono_llvm_create_aot_module_fptr);
-       mono_llvm_create_aot_module_fptr (assembly, global_prefix, emit_dwarf, static_link);
+       mono_llvm_create_aot_module_fptr (assembly, global_prefix, emit_dwarf, static_link, llvm_only);
 }
 
 void
@@ -96,6 +98,13 @@ mono_llvm_emit_aot_data (const char *symbol, guint8 *data, int data_len)
                mono_llvm_emit_aot_data_fptr (symbol, data, data_len);
 }
 
+void
+mono_llvm_create_vars (MonoCompile *cfg)
+{
+       if (mono_llvm_create_vars_fptr)
+               mono_llvm_create_vars_fptr (cfg);
+}
+
 int
 mono_llvm_load (const char* bpath)
 {
@@ -128,6 +137,8 @@ mono_llvm_load (const char* bpath)
        if (err) goto symbol_error;
        err = mono_dl_symbol (llvm_lib, "mono_llvm_emit_aot_data", (void**)&mono_llvm_emit_aot_data_fptr);
        if (err) goto symbol_error;
+       err = mono_dl_symbol (llvm_lib, "mono_llvm_create_vars", (void**)&mono_llvm_create_vars_fptr);
+       if (err) goto symbol_error;
        return TRUE;
 symbol_error:
        g_warning ("llvm symbol load failed: %s\n", err);