2011/8/4 Richard Henderson <r...@redhat.com>: > 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?
The point seems to be that the alloca block gets added later to rsp, but prologue is already layout, so it thinks it could use complete frame-size. But due limitation of frame-size in SEH information to 240 bytes, this causes an assert in winnt.c:821 Not sure if this is not more a paper-patch for another underlying issue, but it seems to work so far. Regards, Kai PS: I sent you reduced test (from gfortran's transfer.c (sset) offlist