Hi, For trunk-version I have a tentative patch for this issue. On 4.6.x and older branches this doesn't work, as here we can't differenciate that easy between ms- and sysv-abi.
But could somebody give this patch a try? Regards, Kai ChangeLog * config/i386/i386.c (ix86_frame_pointer_required): Enforce use of frame-pointer for 32-bit ms-abi, if setjmp is used. Index: i386.c =================================================================== --- i386.c (revision 180099) +++ i386.c (working copy) @@ -8391,6 +8391,10 @@ if (SUBTARGET_FRAME_POINTER_REQUIRED) return true; + /* For older 32-bit runtimes setjmp requires valid frame-pointer. */ + if (TARGET_32BIT_MS_ABI && cfun->calls_setjmp) + return true; + /* In ix86_option_override_internal, TARGET_OMIT_LEAF_FRAME_POINTER turns off the frame pointer by default. Turn it back on now if we've not got a leaf function. */