aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKai Tietz <ktietz@redhat.com>2011-10-25 09:32:31 +0200
committerKai Tietz <ktietz@gcc.gnu.org>2011-10-25 09:32:31 +0200
commitdb8543789305f6d56005bba91f784831d3745970 (patch)
tree8eece63deed3842ffeb16fbb5f9ce9fdcdedaaca
parentcbe98a41a52c30e91e678023b870b4b568ec3d42 (diff)
downloadgcc-db8543789305f6d56005bba91f784831d3745970.zip
gcc-db8543789305f6d56005bba91f784831d3745970.tar.gz
gcc-db8543789305f6d56005bba91f784831d3745970.tar.bz2
i386.c (ix86_frame_pointer_required): Require frame-pointer, if setjmp is used for 32-bit ms-abi.
* config/i386/i386.c (ix86_frame_pointer_required): Require frame-pointer, if setjmp is used for 32-bit ms-abi. From-SVN: r180423
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/i386/i386.c4
2 files changed, 9 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index a49628d..c5235bf 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2011-10-25 Kai Tietz <ktietz@redhat.com>
+
+ * config/i386/i386.c (ix86_frame_pointer_required): Require
+ frame-pointer, if setjmp is used for 32-bit ms-abi.
+
2011-10-24 Michael Meissner <meissner@linux.vnet.ibm.com>
* builtins.c (set_builtin_user_assembler_name): Remove extra
diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
index ef1bbd3..e336d5a 100644
--- a/gcc/config/i386/i386.c
+++ b/gcc/config/i386/i386.c
@@ -8390,6 +8390,10 @@ ix86_frame_pointer_required (void)
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. */