Hi,
I noticed that LLVMBuildIntCast is only defined for signed integers, while the underlying CastInst::CreateIntegerCast accepts an "isSigned" argument. I'm currently working on a language binding for the LLVM C API and would like to provide an unsigned version for completeness. I can think of two ways to add this feature (I hope the definitions don't get mangled by my mail client):
1) Adding an isSigned parameter, breaking API compatibility:
LLVMValueRef LLVMBuildIntCast(LLVMBuilderRef, LLVMValueRef Val, LLVMTypeRef DestTy, LLVMBool isSigned, const char *Name);
2) Adding a new function LLVMBuildUnsignedIntCast:
LLVMValueRef LLVMBuildIntCast(LLVMBuilderRef, LLVMValueRef Val, LLVMTypeRef DestTy, const char *Name);
LLVMValueRef LLVMBuildUnsignedIntCast(LLVMBuilderRef, LLVMValueRef Val, LLVMTypeRef DestTy, const char *Name);
While I like the first version more, I see that it might be desirable to preserve API compatibility.
-Manuel