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

Reply via email to