On Jun 18, 2012, at 4:28 PM, Kai Tietz wrote: > Hello Tristan, > > patch works for me, too. Just one nit about the patch. > > 2012/6/18 Tristan Gingold <ging...@adacore.com>: >> @@ -8558,6 +8558,11 @@ ix86_frame_pointer_required (void) >> if (TARGET_32BIT_MS_ABI && cfun->calls_setjmp) >> return true; >> >> + /* Win64 SEH, very large frames need a frame-pointer as maximum stack >> + allocation is 4GB (add a safety guard for saved registers). */ >> + if (TARGET_64BIT_MS_ABI && get_frame_size () + 4096 > SEH_MAX_FRAME_SIZE) >> + return true; > Where does this magic 4096 comes from? Is it intended to be the > page-size, or is it meant to be the maximum stack-frame consumed by > prologue?
It is an upper bound for the maximum stack-frame consumed by prologue. > I would suggest to use here instead: > + if (TARGET_64BIT_MS_ABI && get_frame_size () > (SEH_MAX_FRAME_SIZE - 4096)) > + return true; > > Additional a testcase for big-stackframe would be interesting. You > won't need to make here a execution test, a assembler-scan would be > enough. I think that a simple build test should make it. Thanks, Tristan.