diff options
-rw-r--r-- | src/gallium/auxiliary/gallivm/lp_bld_intr.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/src/gallium/auxiliary/gallivm/lp_bld_intr.c b/src/gallium/auxiliary/gallivm/lp_bld_intr.c index 19f98bb781f..b92455593f4 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_intr.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_intr.c @@ -168,10 +168,14 @@ lp_add_function_attr(LLVMValueRef function_or_call, #if HAVE_LLVM < 0x0400 LLVMAttribute llvm_attr = lp_attr_to_llvm_attr(attr); - if (attr_idx == -1) { - LLVMAddFunctionAttr(function_or_call, llvm_attr); + if (LLVMIsAFunction(function_or_call)) { + if (attr_idx == -1) { + LLVMAddFunctionAttr(function_or_call, llvm_attr); + } else { + LLVMAddAttribute(LLVMGetParam(function_or_call, attr_idx - 1), llvm_attr); + } } else { - LLVMAddAttribute(LLVMGetParam(function_or_call, attr_idx - 1), llvm_attr); + LLVMAddInstrAttribute(function_or_call, attr_idx, llvm_attr); } #else |