http://llvm.org/bugs/show_bug.cgi?id=9242
Summary: Length parameters for the C API should be 'size_t',
not 'unsigned'.
Product: libraries
Version: 2.8
Platform: All
OS/Version: All
Status: NEW
Severity: normal
Priority: P
Component: Core LLVM classes
AssignedTo: [email protected]
ReportedBy: [email protected]
CC: [email protected]
A lot of the C wrapper functions take a pointer and a length when expecting a
list of things. For instance, the signature of `LLVMBuildCall`:
... LLVMBuildCall(..., LLVMValueRef* Args, unsigned NumArgs,...)
Usually, `unsigned i` declares i as 32 bit unsigned integer. On 32 bit
architectures, this can adequately index a pointer and all is well. On 64 bit
architectures, however, a 64 bit unsigned integer is required to do this. The
size_t type (in cstdint) does this job. In the above example, `NumArgs` should
be declared as `size_t NumArgs`.
Incidentally, this bugs me as I'm using the C API from D. D arrays have a
pointer and a length -- the length is declared as size_t. when using the above,
I can create a D array of LLVMValueRefs and then pass it like
LLVMBuildCall(..., args.ptr, args.length,...)
Except if I'm building for 64 bit, I have to explicitly cast the length to uint
to call LLVM.
--
Configure bugmail: http://llvm.org/bugs/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.
_______________________________________________
LLVMbugs mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/llvmbugs