<div dir="ltr">I see. Problem solved! Thank you all for the clarification.<div><br></div><div>Best,</div><div>Paul</div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Tue, Feb 18, 2014 at 4:24 AM, Tim Northover <span dir="ltr"><<a href="mailto:t.p.northover@gmail.com" target="_blank">t.p.northover@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi Paul,<br>
<div class=""><br>
>                     Value *sz = Mod->getOrInsertGlobal("SIZE", Int32Ty);<br>
>                     Type *ArrayTy = ArrayType::get(FloatTy, sz)<br>
>                     AllocaInst *AI = CreateAlloca(ArrayTy, 0, "");<br>
<br>
</div>You can't create dynamically varying types like that in LLVM, but an<br>
AllocaInst can have a parameter saying how many elements to allocate,<br>
so instead of trying to write:<br>
<br>
   %numElts = load i32* @SIZE<br>
   %val = alloca [@var x float] ; %val would have dynamic type<br>
[%numElts x float]*. Not good.<br>
<br>
You'd want:<br>
    %numElts = load i32* @SIZE<br>
    %val = alloca float, i32 %numElts ; %val now has type float*, but<br>
%numElts elements can be accessed.<br>
<br>
Roughly the same would happen if you took Owen up on using malloc<br>
(%val would have to have type "float*" rather than a static array<br>
type).<br>
<br>
Cheers.<br>
<span class="HOEnZb"><font color="#888888"><br>
Tim.<br>
</font></span></blockquote></div><br></div>