Re: [patch i386]: Fix recent bootstrap failure for x86_64 windows target

2011-08-05 Thread Kai Tietz
2011/8/4 Kai Tietz : > 2011/8/4 Richard Henderson : >> On 08/04/2011 01:53 PM, Kai Tietz wrote: >>>        diff = frame->stack_pointer_offset - >>> frame->hard_frame_pointer_offset; >>> -      if (diff > 240 || (diff & 15) != 0) >>> +      if (diff > 240 || (diff & 15) != 0 || cfun->calls_alloca !

Re: [patch i386]: Fix recent bootstrap failure for x86_64 windows target

2011-08-04 Thread Kai Tietz
2011/8/4 Richard Henderson : > On 08/04/2011 01:53 PM, Kai Tietz wrote: >>        diff = frame->stack_pointer_offset - frame->hard_frame_pointer_offset; >> -      if (diff > 240 || (diff & 15) != 0) >> +      if (diff > 240 || (diff & 15) != 0 || cfun->calls_alloca != 0) > > Hmm.  Why didn't the di

Re: [patch i386]: Fix recent bootstrap failure for x86_64 windows target

2011-08-04 Thread Richard Henderson
On 08/04/2011 01:53 PM, Kai Tietz wrote: >diff = frame->stack_pointer_offset - frame->hard_frame_pointer_offset; > - if (diff > 240 || (diff & 15) != 0) > + if (diff > 240 || (diff & 15) != 0 || cfun->calls_alloca != 0) Hmm. Why didn't the diff > 240 test trigger? r~

[patch i386]: Fix recent bootstrap failure for x86_64 windows target

2011-08-04 Thread Kai Tietz
Hello, recently we got a bootstrap failure in libfortran's transfer.c:sset function. This is caused by optimizing alloca into prologue. This can cause for x64 with SEH to too large prologue-frame-size for SEH information. This patch simply assumes that iff the function is using an alloca call, t