diff options
-rw-r--r-- | src/gallium/state_trackers/clover/llvm/invocation.cpp | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/src/gallium/state_trackers/clover/llvm/invocation.cpp b/src/gallium/state_trackers/clover/llvm/invocation.cpp index 5d2efc4461c..d351bc5c3a2 100644 --- a/src/gallium/state_trackers/clover/llvm/invocation.cpp +++ b/src/gallium/state_trackers/clover/llvm/invocation.cpp @@ -234,7 +234,11 @@ namespace { memcpy(address_spaces, c.getTarget().getAddressSpaceMap(), sizeof(address_spaces)); +#if HAVE_LLVM >= 0x0306 + return act.takeModule().release(); +#else return act.takeModule(); +#endif } void @@ -415,13 +419,21 @@ clover::compile_program_llvm(const compat::string &source, internalize_functions(mod, kernels); + module m; // Build the clover::module switch (ir) { case PIPE_SHADER_IR_TGSI: //XXX: Handle TGSI assert(0); - return module(); + m = module(); + break; default: - return build_module_llvm(mod, kernels, address_spaces); + m = build_module_llvm(mod, kernels, address_spaces); + break; } +#if HAVE_LLVM >= 0x0306 + // LLVM 3.6 and newer, the user takes ownership of the module. + delete mod; +#endif + return m; } |