diff options
author | Jakub Jelinek <jakub@redhat.com> | 2010-03-24 21:31:09 +0100 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2010-03-24 21:31:09 +0100 |
commit | 81ef7e2403b3d6025205e253c87fc3f50828b941 (patch) | |
tree | 0c559f49d5fcb3b2859cb09b8aa0a020b0aaa759 /gcc | |
parent | f1c26cad132b285586863242c4bb6b5f551fae41 (diff) | |
download | gcc-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/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/config/i386/i386.c | 6 | ||||
-rw-r--r-- | gcc/config/s390/s390.c | 6 |
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 |