[llvm-dev] segv inside loop on x86_64

David Chisnall via llvm-dev llvm-dev at lists.llvm.org
Tue Oct 27 01:41:07 PDT 2015


On 27 Oct 2015, at 05:13, Matt Arsenault via llvm-dev <llvm-dev at lists.llvm.org> wrote:
> 
>> On Oct 27, 2015, at 12:46 AM, Peter McKinna via llvm-dev <llvm-dev at lists.llvm.org> wrote:
>> 
>> label_1:                                          ; preds = %label_2, %entry
>>   %v.87 = load i64, i64* %i, align 8
>>   %abs_icmp = icmp slt i64 %v.87, 0
>>   %itetmp = alloca i64
>>   br i1 %abs_icmp, label %abs_then, label %abs_else
> 
> You are supposed to have all allocas in the entry block, although I’m not sure if this is not expected to work.

This will work, but without a stacksave / stackrestore, each loop iteration will allocate 8 bytes of space on the stack.  The default stack size on x86-64 is likely to be about 8MB, so if your loop runs for a million iterations, it’s pretty much guaranteed to run out of stack space and segfault.  If it runs for less and is not one of the first calls in the stack, the same applies.

David



More information about the llvm-dev mailing list