On 2011-10-21 AM 12:34, Kai Tietz wrote:
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. */
I tried this. it seems that problem is fixed. please apply this to
trunk. although this workaround would not be needed anymore if mingw
runtime provide longjmp which doesn't use _NLG_Notify.
--
Regards.