diff --git a/src/amd/llvm/ac_llvm_build.c b/src/amd/llvm/ac_llvm_build.c index 25013b7667c..5d8da90b6f1 100644 --- a/src/amd/llvm/ac_llvm_build.c +++ b/src/amd/llvm/ac_llvm_build.c @@ -119,6 +119,8 @@ void ac_llvm_context_dispose(struct ac_llvm_context *ctx) free(ctx->flow->stack); free(ctx->flow); ctx->flow = NULL; + + LLVMDisposeBuilder(ctx->builder); } int ac_get_llvm_num_components(LLVMValueRef value) diff --git a/src/amd/llvm/ac_nir_to_llvm.c b/src/amd/llvm/ac_nir_to_llvm.c index 6f7952bbffc..ea2683b11c2 100644 --- a/src/amd/llvm/ac_nir_to_llvm.c +++ b/src/amd/llvm/ac_nir_to_llvm.c @@ -4367,6 +4367,7 @@ bool ac_nir_translate(struct ac_llvm_context *ac, struct ac_shader_abi *abi, { struct ac_nir_context ctx = {0}; struct nir_function *func; + bool ret; ctx.ac = *ac; ctx.abi = abi; @@ -4396,10 +4397,8 @@ bool ac_nir_translate(struct ac_llvm_context *ac, struct ac_shader_abi *abi, if (gl_shader_stage_is_compute(nir->info.stage)) setup_shared(&ctx, nir); - if (!visit_cf_list(&ctx, &func->impl->body)) - return false; - - phi_post_pass(&ctx); + if ((ret = visit_cf_list(&ctx, &func->impl->body))) + phi_post_pass(&ctx); free(ctx.ssa_defs); ralloc_free(ctx.defs); @@ -4407,7 +4406,7 @@ bool ac_nir_translate(struct ac_llvm_context *ac, struct ac_shader_abi *abi, if (ctx.abi->kill_ps_if_inf_interp) ralloc_free(ctx.verified_interp); - return true; + return ret; } /* Fixup the HW not emitting the TCS regs if there are no HS threads. */ diff --git a/src/amd/vulkan/radv_nir_to_llvm.c b/src/amd/vulkan/radv_nir_to_llvm.c index 155fd45a0a7..9422dae3840 100644 --- a/src/amd/vulkan/radv_nir_to_llvm.c +++ b/src/amd/vulkan/radv_nir_to_llvm.c @@ -262,7 +262,6 @@ static void ac_llvm_finalize_module(struct radv_shader_context *ctx, LLVMPassManagerRef passmgr) { LLVMRunPassManager(passmgr, ctx->ac.module); - LLVMDisposeBuilder(ctx->ac.builder); ac_llvm_context_dispose(&ctx->ac); } diff --git a/src/gallium/drivers/radeonsi/si_shader_llvm.c b/src/gallium/drivers/radeonsi/si_shader_llvm.c index 2e2e858494c..bb82217a9d8 100644 --- a/src/gallium/drivers/radeonsi/si_shader_llvm.c +++ b/src/gallium/drivers/radeonsi/si_shader_llvm.c @@ -237,7 +237,6 @@ void si_llvm_optimize_module(struct si_shader_context *ctx) /* Run the pass */ LLVMRunPassManager(ctx->compiler->passmgr, ctx->ac.module); - LLVMDisposeBuilder(ctx->ac.builder); } void si_llvm_dispose(struct si_shader_context *ctx)