[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.
More information about the llvm-dev