aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUros Bizjak <uros@gcc.gnu.org>2010-09-07 17:38:59 +0200
committerUros Bizjak <uros@gcc.gnu.org>2010-09-07 17:38:59 +0200
commitd341a5d09057127a50c916b8708d4aa7d1f74ec8 (patch)
tree2fd602d7660581152fb3f08911f588c47051722d
parent9407158dbc9e46bed1308cb26f8abc77c5666055 (diff)
downloadgcc-d341a5d09057127a50c916b8708d4aa7d1f74ec8.zip
gcc-d341a5d09057127a50c916b8708d4aa7d1f74ec8.tar.gz
gcc-d341a5d09057127a50c916b8708d4aa7d1f74ec8.tar.bz2
re PR target/45206 (ICE on __builtin_eh_return at -Os)
PR target/45206 * config/i386/i386.c (ix86_expand_epilogue): Mark SP valid after eh_return fixup sequence. testsuite/ChangeLog: PR target/45206 * gcc.target/i386/pr45206.c: New test. From-SVN: r163955
-rw-r--r--gcc/ChangeLog9
-rw-r--r--gcc/config/i386/i386.c1
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.target/i386/pr45206.c16
4 files changed, 29 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 85ea9d4..97f2415 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2010-09-07 Uros Bizjak <ubizjak@gmail.com>
+
+ PR target/45206
+ * config/i386/i386.c (ix86_expand_epilogue): Mark SP as valid after
+ eh_return fixup sequence.
+
2010-09-07 Jan Hubicka <jh@suse.cz>
* gimple.c (maybe_fold_reference): Verify that operand is
@@ -19,8 +25,7 @@
2010-09-07 Richard Guenther <rguenther@suse.de>
- * tree-pretty-print.c (dump_generic_node): Dump void types
- as void.
+ * tree-pretty-print.c (dump_generic_node): Dump void types as void.
2010-09-07 Bernd Schmidt <bernds@codesourcery.com>
diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
index fac660b..6c131a1 100644
--- a/gcc/config/i386/i386.c
+++ b/gcc/config/i386/i386.c
@@ -10118,6 +10118,7 @@ ix86_expand_epilogue (int style)
}
}
m->fs.sp_offset = UNITS_PER_WORD;
+ m->fs.sp_valid = true;
}
}
else
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index b2f4aba..2a4496d 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2010-09-07 Uros Bizjak <ubizjak@gmail.com>
+
+ PR target/45206
+ * gcc.target/i386/pr45206.c: New test.
+
2010-09-07 Hans-Peter Nilsson <hp@axis.com>
PR fortran/45505
diff --git a/gcc/testsuite/gcc.target/i386/pr45206.c b/gcc/testsuite/gcc.target/i386/pr45206.c
new file mode 100644
index 0000000..7dd4bd2
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr45206.c
@@ -0,0 +1,16 @@
+/* { dg-do compile } */
+/* { dg-options "-Os -fno-omit-frame-pointer" } */
+
+struct _Unwind_Context { void *ra; };
+
+long uw_install_context_1 (struct _Unwind_Context *, struct _Unwind_Context *);
+
+void _Unwind_RaiseException(void)
+{
+ struct _Unwind_Context this_context, cur_context;
+ long offset = uw_install_context_1 (&this_context, &cur_context);
+ void *handler = __builtin_frob_return_addr ((&cur_context)->ra);
+
+ __builtin_eh_return (offset, handler);
+}
+