aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorAlan Modra <amodra@bigpond.net.au>2006-02-24 06:30:51 +0000
committerAlan Modra <amodra@gcc.gnu.org>2006-02-24 17:00:51 +1030
commit8097c268b057a760157ee16d3bd6ec436f7e5cfe (patch)
treec4c9fd1777c2e28b0557d6927e6044181e1d7197 /gcc
parentefbbbb61eecb70944b433ccc227dbfddf0c69ba2 (diff)
downloadgcc-8097c268b057a760157ee16d3bd6ec436f7e5cfe.zip
gcc-8097c268b057a760157ee16d3bd6ec436f7e5cfe.tar.gz
gcc-8097c268b057a760157ee16d3bd6ec436f7e5cfe.tar.bz2
re PR target/26453 (Segfault with -m64 -mtraceback=full)
PR target/26453 * config/rs6000/rs6000.c (rs6000_output_function_epilogue): Don't output traceback table for thunks. Localise rs6000_stack_info call. From-SVN: r111415
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/config/rs6000/rs6000.c5
2 files changed, 8 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 692b082..919a75e 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2006-02-24 Alan Modra <amodra@bigpond.net.au>
+
+ PR target/26453
+ * config/rs6000/rs6000.c (rs6000_output_function_epilogue): Don't
+ output traceback table for thunks. Localise rs6000_stack_info call.
+
2006-02-23 Roger Sayle <roger@eyesopen.com>
Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c
index 2b69a48..2ca1b30 100644
--- a/gcc/config/rs6000/rs6000.c
+++ b/gcc/config/rs6000/rs6000.c
@@ -15153,8 +15153,6 @@ static void
rs6000_output_function_epilogue (FILE *file,
HOST_WIDE_INT size ATTRIBUTE_UNUSED)
{
- rs6000_stack_t *info = rs6000_stack_info ();
-
if (! HAVE_epilogue)
{
rtx insn = get_last_insn ();
@@ -15225,13 +15223,14 @@ rs6000_output_function_epilogue (FILE *file,
System V.4 Powerpc's (and the embedded ABI derived from it) use a
different traceback table. */
if (DEFAULT_ABI == ABI_AIX && ! flag_inhibit_size_directive
- && rs6000_traceback != traceback_none)
+ && rs6000_traceback != traceback_none && !current_function_is_thunk)
{
const char *fname = NULL;
const char *language_string = lang_hooks.name;
int fixed_parms = 0, float_parms = 0, parm_info = 0;
int i;
int optional_tbtab;
+ rs6000_stack_t *info = rs6000_stack_info ();
if (rs6000_traceback == traceback_full)
optional_tbtab = 1;