From 0b98e885e707a679fffb096aa802cfe4a80ce334 Mon Sep 17 00:00:00 2001 From: Daniel Scharrer Date: Fri, 11 Nov 2016 21:36:36 +0100 Subject: [PATCH] ac/nir/llvm: Fix setting function attributes for intrinsics This fixes a NULL pointer dereference for intrinsics with more than one function attribute introduced in commit 2fdaf38. The fix is ported from the lp_build_intrinsic changes in commit 8bdd52c. Reviewed-by: Bas Nieuwenhuizen --- src/amd/common/ac_nir_to_llvm.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/amd/common/ac_nir_to_llvm.c b/src/amd/common/ac_nir_to_llvm.c index b7ccea88372..aa2d488780e 100644 --- a/src/amd/common/ac_nir_to_llvm.c +++ b/src/amd/common/ac_nir_to_llvm.c @@ -1675,7 +1675,11 @@ emit_llvm_intrinsic(struct nir_to_llvm_context *ctx, const char *name, LLVMSetFunctionCallConv(function, LLVMCCallConv); LLVMSetLinkage(function, LLVMExternalLinkage); - ac_add_function_attr(function, 0, attrib_mask | AC_FUNC_ATTR_NOUNWIND); + attrib_mask |= AC_FUNC_ATTR_NOUNWIND; + while (attrib_mask) { + enum ac_func_attr attr = 1u << u_bit_scan(&attrib_mask); + ac_add_function_attr(function, -1, attr); + } } return LLVMBuildCall(ctx->builder, function, params, param_count, ""); }