[LLVMdev] Dynamically allocate and free variables in stack

Richard Osborne richard at xmos.com
Fri Aug 26 07:53:42 PDT 2011


On 26/08/11 15:23, Semion Prihodko wrote:
> 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.
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.

-- 
Richard Osborne | XMOS
http://www.xmos.com

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20110826/bbc2d7e0/attachment.html>


More information about the llvm-dev mailing list