I am writing a compiler using llvm-c api and i want to have variable-length arrays as arguments in functions.I have tried using zero-sized type array as the typical parameter in the function definition, but when i call the function with a normal-sized array as argument it throws error due to mismatch in types. I can’t find a workaround for this.
define i32 @ha([0 x i32]*)

%funccall = call i32 @ha([20 x i32]* %only_l)

Thank you for your time,

This doesn't look like an lldb question. Did you mean to send it to
llvm-dev instead?


Why are you passing a zero sized array? Pass a pointer and perhaps a length argument instead. My understanding is that VLAs are not the equivalent of a Java array or a Go slice. There is no way to determine the length at runtime. The type of the array is determined by its size. IIRC, C99 VLAs use alloca and pointers to implement the same functionality.