Dynamically allocate and free variables in stack

Hi, guys.

I have a beginner’s question. The virtual machine I develop have instructions to dynamically allocate variable in stack and to free it (consistency of such instructions is checked before the actual jitting). To allocate memory in stack we have alloca IR instruction, but I didn’t find any instruction to free it (such variables will be freed only when an enclosing function will return). This means that I have to create function for every stack allocation which is not convenient. Can you suggest me easier way to dynamically allocate and free variables in stack? Thanks.

Use alloca to get enough memory for your stack and manage it yourself
with an offset to the next free slot. This works if the amount of
space can be determined statically, and is not expected to be large.


You can use the llvm.stacksave intrinsic to save the current stack pointer, allocate some memory on the stack with variable sized allocas and then restore the stack with the llvm.stackrestore intrinsic which effectively frees all the allocas executed inbetween.