[LLVMdev] LLI Segfaulting

Fraser Cormack frasercrmck at gmail.com
Mon Mar 12 07:59:25 PDT 2012


Hi Gavin,

Do you mean something along the lines of having my array struct as { i32,
i32* } and then indexing it with a gep and allocating the appropriate memory
when I learn of it?

Thanks,
Fraser


Gavin Harrison-2 wrote:
> 
> Hi Fraser,
> 
> Is there anything preventing you from using a pointer for the second part
> of the structure and allocating memory for it later?
> 
> Thanks,
> Gavin
> 
> On Mar 12, 2012, at 10:35 AM, Fraser Cormack wrote:
> 
>> 
>> Hi Duncan,
>> 
>> 
>> Duncan Sands wrote:
>>> 
>>> Hi Fraser, it looks to me like you are smashing the stack.
>>> 
>>>> define void @main() nounwind {
>>>> allocas:
>>>>   %0 = alloca { i32, [0 x i32] }, align 8
>>> 
>>> ^ this allocates 4 bytes on the stack.
>>> 
>>>>   %2 = getelementptr inbounds { i32, [0 x i32] }* %0, i64 0, i32 1
>>> 
>>> ^ this gets a pointer to the byte after the 4 allocated bytes.
>>> 
>>>>   %3 = bitcast [0 x i32]* %2 to i8*
>>>>   call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* bitcast ([5 x i32]*
>>>> @.gvar_array to i8*), i64 20, i32 4, i1 false)
>>> 
>>> This copies 20 bytes there, kaboom!
>>> 
>> 
>> Such a painfully obvious answer, thank you! I'm assuming this is what
>> happens when I use the unoptimized version of the code and call
>> 
>>>   %0 = alloca %MainClass
>> 
>> then transfer the array into that. If I'm taking a MainClass pointer into
>> my
>> <init> function, can I then just re-allocate it as a { i32, [5 x i32] }
>> when
>> I learn about the length? That doesn't sound like the nicest option. I'm
>> not
>> aware of a way of only allocating a part of a literal struct, is that
>> possible?
>> 
>> Cheers,
>> Fraser
>> -- 
>> View this message in context:
>> http://old.nabble.com/LLI-Segfaulting-tp33486161p33486962.html
>> Sent from the LLVM - Dev mailing list archive at Nabble.com.
>> 
>> _______________________________________________
>> LLVM Developers mailing list
>> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
> 
> 
> _______________________________________________
> 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://old.nabble.com/LLI-Segfaulting-tp33486161p33487147.html
Sent from the LLVM - Dev mailing list archive at Nabble.com.




More information about the llvm-dev mailing list