[LLVMdev] Explicitly Freeing Allocas

Nyx mcheva at cs.mcgill.ca
Thu Jun 18 08:08:30 PDT 2009


That sounds rather cumbersome, is there no simpler way to get the actual size
of a struct?


John Criswell wrote:
> 
> Nyx wrote:
>> Hello,
>>
>> I would just like to ask if it's possible to explicitly free allocas.
>> This
>> is because I need to call functions that take structs of different sizes
>> as
>> input, (possibly inside of loops) and I would rather avoid a stack
>> overflow.
>>   
> No, it's not legal to free memory returned by alloca.  Such memory is
> allocated on the stack; the code generator usually converts this to an
> adjustment of the stack pointer on function entry whenever possible.
>> If this is not possible, an alternate solution would be for me to
>> allocate
>> an array of bytes larger than all the struct types I may be using, and
>> cast
>> that pointer to the right type each type. In that case, I would like to
>> know
>> how I can find out what the size of a struct is. I've heard of people
>> talking about using "the right target data", but I have no idea how to
>> actually do that, and I find the doxygen info doesn't make it any
>> clearer.
>>   
> This sounds like your best option.  The TargetData pass is a pass that
> informs other passes of  machine specific information and can, for
> example, give you the number of bytes used to store a type.
> 
> Read the document on Writing an LLVM Pass
> (http://llvm.org/docs/WritingAnLLVMPass.html) to learn how to have your
> pass declare the TargetData pass as a prerequisite and to get a pointer
> to it when your
> runOnFunction/runOnModule/runOnBasicBlock/runOn<whatever> method is
> called.  Then use the doxygen documentation to find the correct method
> of the TargetData pass 
> (http://llvm.org/doxygen/classllvm_1_1TargetData.html) to use to get the
> size of the type that you allocated via alloca.
> 
> -- John T.
>  
>> Thank you for your help,
>>
>> - Max
>>   
> 
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
> 
> 

-- 
View this message in context: http://www.nabble.com/Explicitly-Freeing-Allocas-tp24093351p24094996.html
Sent from the LLVM - Dev mailing list archive at Nabble.com.




More information about the llvm-dev mailing list