[LLVMdev] LLVM{Add,Remove}FunctionAttr totally broken

James Y Knight foom at fuhm.net
Tue Dec 29 15:16:06 PST 2009

The LLVMAddFunctionAttr and LLVMRemoveFunctionAttr are busted: they  
actually set the return value's attributes, not the function's  
attributes. There seems to be no C API for actually setting the  
function attributes.

LLVMGetFunctionAttr, however, does correctly return the function  
attributes, not the return value's attributes. There is no C API for  
getting the return value attributes. (And if the above functions are  
fixed, there would also be no way to set return value attributes).

I'd like to propose that LLVM{Add,Remove}FunctionAttr be fixed to  
actually set the function attributes. And that a new API, LLVM 
{Add,Remove,Get}RetAttr be added, like:

void LLVMAddRetAttr(LLVMValueRef Fn, LLVMAttribute PA);
void LLVMRemoveRetAttr(LLVMValueRef Fn, LLVMAttribute PA);
LLVMAttribute LLVMGetRetAttr(LLVMValueRef Fn);

which will do the associated actions on the return value.

If this is acceptable, I can submit a trivial patch that implements it.


PS: no comments on my last patch, not sure if it was overlooked or  
just everyone's busy over the holidays:

More information about the llvm-dev mailing list