aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2010-03-24 21:31:09 +0100
committerJakub Jelinek <jakub@gcc.gnu.org>2010-03-24 21:31:09 +0100
commit81ef7e2403b3d6025205e253c87fc3f50828b941 (patch)
tree0c559f49d5fcb3b2859cb09b8aa0a020b0aaa759 /gcc
parentf1c26cad132b285586863242c4bb6b5f551fae41 (diff)
downloadgcc-81ef7e2403b3d6025205e253c87fc3f50828b941.zip
gcc-81ef7e2403b3d6025205e253c87fc3f50828b941.tar.gz
gcc-81ef7e2403b3d6025205e253c87fc3f50828b941.tar.bz2
re PR target/43498 (No unwind info for thunks even with -fasynchronous-unwind-tables)
PR target/43498 * config/i386/i386.c (x86_output_mi_thunk): Call final_start_function at the beginning and final_end_function at the end. * config/s390/s390.c (s390_output_mi_thunk): Likewise. From-SVN: r157706
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/config/i386/i386.c6
-rw-r--r--gcc/config/s390/s390.c6
3 files changed, 17 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index bff16dc..02441b7 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,10 @@
+2010-03-24 Jakub Jelinek <jakub@redhat.com>
+
+ PR target/43498
+ * config/i386/i386.c (x86_output_mi_thunk): Call final_start_function
+ at the beginning and final_end_function at the end.
+ * config/s390/s390.c (s390_output_mi_thunk): Likewise.
+
2010-03-24 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
* configure.ac (i[34567]86-*-*): Handle Solaris 2/x86 TLS support
diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
index a6ffc19..2a6d674 100644
--- a/gcc/config/i386/i386.c
+++ b/gcc/config/i386/i386.c
@@ -26191,7 +26191,7 @@ x86_can_output_mi_thunk (const_tree thunk ATTRIBUTE_UNUSED,
*(*this + vcall_offset) should be added to THIS. */
static void
-x86_output_mi_thunk (FILE *file ATTRIBUTE_UNUSED,
+x86_output_mi_thunk (FILE *file,
tree thunk ATTRIBUTE_UNUSED, HOST_WIDE_INT delta,
HOST_WIDE_INT vcall_offset, tree function)
{
@@ -26199,6 +26199,9 @@ x86_output_mi_thunk (FILE *file ATTRIBUTE_UNUSED,
rtx this_param = x86_this_parameter (function);
rtx this_reg, tmp;
+ /* Make sure unwind info is emitted for the thunk if needed. */
+ final_start_function (emit_barrier (), file, 1);
+
/* If VCALL_OFFSET, we'll need THIS in a register. Might as well
pull it in now and let DELTA benefit. */
if (REG_P (this_param))
@@ -26327,6 +26330,7 @@ x86_output_mi_thunk (FILE *file ATTRIBUTE_UNUSED,
output_asm_insn ("jmp\t{*}%1", xops);
}
}
+ final_end_function ();
}
static void
diff --git a/gcc/config/s390/s390.c b/gcc/config/s390/s390.c
index dc135b2..2f82f66 100644
--- a/gcc/config/s390/s390.c
+++ b/gcc/config/s390/s390.c
@@ -1,6 +1,6 @@
/* Subroutines used for code generation on IBM S/390 and zSeries
Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
- 2007, 2008, 2009 Free Software Foundation, Inc.
+ 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
Contributed by Hartmut Penner (hpenner@de.ibm.com) and
Ulrich Weigand (uweigand@de.ibm.com) and
Andreas Krebbel (Andreas.Krebbel@de.ibm.com).
@@ -9030,6 +9030,9 @@ s390_output_mi_thunk (FILE *file, tree thunk ATTRIBUTE_UNUSED,
rtx op[10];
int nonlocal = 0;
+ /* Make sure unwind info is emitted for the thunk if needed. */
+ final_start_function (emit_barrier (), file, 1);
+
/* Operand 0 is the target function. */
op[0] = XEXP (DECL_RTL (function), 0);
if (flag_pic && !SYMBOL_REF_LOCAL_P (op[0]))
@@ -9279,6 +9282,7 @@ s390_output_mi_thunk (FILE *file, tree thunk ATTRIBUTE_UNUSED,
output_asm_insn (".long\t%3", op);
}
}
+ final_end_function ();
}
static bool