summaryrefslogtreecommitdiffstats
path: root/src/gallium
diff options
context:
space:
mode:
Diffstat (limited to 'src/gallium')
-rw-r--r--src/gallium/auxiliary/gallivm/lp_bld_init.c33
-rw-r--r--src/gallium/auxiliary/gallivm/lp_bld_init.h1
2 files changed, 7 insertions, 27 deletions
diff --git a/src/gallium/auxiliary/gallivm/lp_bld_init.c b/src/gallium/auxiliary/gallivm/lp_bld_init.c
index 85faef508b9..6934a28891b 100644
--- a/src/gallium/auxiliary/gallivm/lp_bld_init.c
+++ b/src/gallium/auxiliary/gallivm/lp_bld_init.c
@@ -122,7 +122,7 @@ create_pass_manager(struct gallivm_state *gallivm)
assert(!gallivm->passmgr);
assert(gallivm->target);
- gallivm->passmgr = LLVMCreateFunctionPassManager(gallivm->provider);
+ gallivm->passmgr = LLVMCreateFunctionPassManagerForModule(gallivm->module);
if (!gallivm->passmgr)
return FALSE;
@@ -177,26 +177,16 @@ create_pass_manager(struct gallivm_state *gallivm)
static void
free_gallivm_state(struct gallivm_state *gallivm)
{
- /* This leads to crashes w/ some versions of LLVM */
- LLVMModuleRef mod;
- char *error;
-
- if (gallivm->engine && gallivm->provider)
- LLVMRemoveModuleProvider(gallivm->engine, gallivm->provider,
- &mod, &error);
-
if (gallivm->passmgr) {
LLVMDisposePassManager(gallivm->passmgr);
}
-#if 0
- /* XXX this seems to crash with all versions of LLVM */
- if (gallivm->provider)
- LLVMDisposeModuleProvider(gallivm->provider);
-#endif
-
- /* This will already destroy any associated module */
- LLVMDisposeExecutionEngine(gallivm->engine);
+ if (gallivm->engine) {
+ /* This will already destroy any associated module */
+ LLVMDisposeExecutionEngine(gallivm->engine);
+ } else if (gallivm->module) {
+ LLVMDisposeModule(gallivm->module);
+ }
#if !USE_MCJIT
/* Don't free the TargetData, it's owned by the exec engine */
@@ -219,7 +209,6 @@ free_gallivm_state(struct gallivm_state *gallivm)
gallivm->engine = NULL;
gallivm->target = NULL;
gallivm->module = NULL;
- gallivm->provider = NULL;
gallivm->passmgr = NULL;
gallivm->context = NULL;
gallivm->builder = NULL;
@@ -253,8 +242,6 @@ init_gallivm_engine(struct gallivm_state *gallivm)
}
}
- LLVMAddModuleProvider(gallivm->engine, gallivm->provider);//new
-
#if !USE_MCJIT
gallivm->target = LLVMGetExecutionEngineTargetData(gallivm->engine);
if (!gallivm->target)
@@ -311,7 +298,6 @@ init_gallivm_state(struct gallivm_state *gallivm)
{
assert(!gallivm->context);
assert(!gallivm->module);
- assert(!gallivm->provider);
lp_build_init();
@@ -327,11 +313,6 @@ init_gallivm_state(struct gallivm_state *gallivm)
if (!gallivm->module)
goto fail;
- gallivm->provider =
- LLVMCreateModuleProviderForExistingModule(gallivm->module);
- if (!gallivm->provider)
- goto fail;
-
gallivm->builder = LLVMCreateBuilderInContext(gallivm->context);
if (!gallivm->builder)
goto fail;
diff --git a/src/gallium/auxiliary/gallivm/lp_bld_init.h b/src/gallium/auxiliary/gallivm/lp_bld_init.h
index 7edea616c4e..68f400661a3 100644
--- a/src/gallium/auxiliary/gallivm/lp_bld_init.h
+++ b/src/gallium/auxiliary/gallivm/lp_bld_init.h
@@ -40,7 +40,6 @@ struct gallivm_state
{
LLVMModuleRef module;
LLVMExecutionEngineRef engine;
- LLVMModuleProviderRef provider;
LLVMTargetDataRef target;
LLVMPassManagerRef passmgr;
LLVMContextRef context;