summaryrefslogtreecommitdiffstats
path: root/src/amd
diff options
context:
space:
mode:
authorDaniel Scharrer <[email protected]>2016-11-11 21:36:36 +0100
committerBas Nieuwenhuizen <[email protected]>2016-11-11 22:40:32 +0100
commit0b98e885e707a679fffb096aa802cfe4a80ce334 (patch)
treebca094c54c3c9d28f3e8c8822187dcec9ef74ac4 /src/amd
parent74d5d393df23b13dd03dcb11b1798910dc339753 (diff)
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 <[email protected]>
Diffstat (limited to 'src/amd')
-rw-r--r--src/amd/common/ac_nir_to_llvm.c6
1 files changed, 5 insertions, 1 deletions
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, "");
}