diff options
author | Alan Modra <amodra@bigpond.net.au> | 2006-02-24 06:30:51 +0000 |
---|---|---|
committer | Alan Modra <amodra@gcc.gnu.org> | 2006-02-24 17:00:51 +1030 |
commit | 8097c268b057a760157ee16d3bd6ec436f7e5cfe (patch) | |
tree | c4c9fd1777c2e28b0557d6927e6044181e1d7197 | |
parent | efbbbb61eecb70944b433ccc227dbfddf0c69ba2 (diff) | |
download | gcc-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
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/config/rs6000/rs6000.c | 5 |
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; |