A way to pass const char* arg without creating a GlobalVariable

Hi,

Is it possible to make up a ConstantArray containing a "const char*"
string and pass it directly to the function "char*" argument *without*
creating a GlobalVaribable?
I looked around and found the usual implementation is
array->globalVar->gep. If we omit globalVar & gep, then the argument
type would be [ i8 x N ], where N is set to the exact string length,
and the expected type is i8* => assertion.
In other words, in C we can submit constant value directly to
parameter list, e.g. foo("hello"). Is there an equivalent capability
in LLVM IR?
Our primary targets have limited support for global variables, and it
is better to omit them, where possible.

Thanks,
- Dima.

What memory would the pointer argument point to?

\ Gordon

Hi Gordon,

Yes, logically this is impossible. I’d reformulate the question in the following way: how could we change the argument type to be able to pass arrays of the various lengths without global variables? There is a variable length array type - maybe it can help somehow? Or could we create and initialize an AllocInst instead? So, any replacement for global vars would perfectly suite for our case.

  • D.