On Sat, Apr 30, 2011 at 1:55 PM, Eric Botcazou <ebotca...@adacore.com> wrote: > On Saturday 23 April 2011 09:35:38 Uros Bizjak wrote: >> Index: i386.c >> =================================================================== >> --- i386.c (revision 172866) >> +++ i386.c (working copy) >> @@ -10149,7 +10149,7 @@ ix86_adjust_stack_and_probe (const HOST_ >> /* Even if the stack pointer isn't the CFA register, we need to >> correctly describe the adjustments made to it, in particular differentiate >> the frame-related ones from the frame-unrelated ones. */ >> - if (size > 0) >> + if (size != 0) >> { >> rtx expr = gen_rtx_SEQUENCE (VOIDmode, rtvec_alloc (2)); >> XVECEXP (expr, 0, 0) > > Probing for a negative size doesn't make much sense; we shouldn't be there if > the size to allocate is negative. Is that really intended? The code without > stack checking is: > > pushq %rbp > .LCFI0: > movq %rsp, %rbp > .LCFI1: > andq $-32, %rsp > addq $16, %rsp > > which looks weird. If this is nevertheless correct, then the fix for the > problem is attached. Tested on x86_64-suse-linux. >
This code aligns stack to 32byte for AVX. -- H.J.