diff options
author | Kaz Kojima <kkojima@gcc.gnu.org> | 2004-05-10 23:25:13 +0000 |
---|---|---|
committer | Kaz Kojima <kkojima@gcc.gnu.org> | 2004-05-10 23:25:13 +0000 |
commit | 726d4cb79ca4a963491a2faeb74641e6ae716b74 (patch) | |
tree | aeb2d5e436b16aa338bd7429b2513cc5e20811c8 /gcc/config/sh/sh-protos.h | |
parent | 0c196bf9d84c1d3b638bb4cd5f9e088b861afa08 (diff) | |
download | gcc-726d4cb79ca4a963491a2faeb74641e6ae716b74.zip gcc-726d4cb79ca4a963491a2faeb74641e6ae716b74.tar.gz gcc-726d4cb79ca4a963491a2faeb74641e6ae716b74.tar.bz2 |
re PR target/15130 ([3.3/3.4][sh4-linux] miscompilation with -O2)
PR target/15130
* config/sh/sh-protos.h (sh_expand_epilogue): Change prototype.
* config/sh/sh.c (output_stack_adjust): Take the sibcall epilogue
into account. Compute the correct number of general registers
for the return value. Generate a special push/pop sequence when
failing to get a temporary register for non SHmedia epilogue.
(sh_expand_epilogue): Add an argument to show whether it's for
sibcall or not. Set the 3rd argument of output_stack_adjust to
-1 if needed.
(sh_need_epilogue): Call sh_expand_epilogue with 0.
* config/sh/sh.md (sibcall_epilogue): Call sh_expand_epilogue
with 1.
(epilogue): Call sh_expand_epilogue with 0.
From-SVN: r81683
Diffstat (limited to 'gcc/config/sh/sh-protos.h')
-rw-r--r-- | gcc/config/sh/sh-protos.h | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/gcc/config/sh/sh-protos.h b/gcc/config/sh/sh-protos.h index 082d794..7abdac4 100644 --- a/gcc/config/sh/sh-protos.h +++ b/gcc/config/sh/sh-protos.h @@ -109,7 +109,7 @@ extern int sh_handle_pragma (int (*)(void), void (*)(int), const char *); extern struct rtx_def *get_fpscr_rtx (void); extern int sh_media_register_for_return (void); extern void sh_expand_prologue (void); -extern void sh_expand_epilogue (void); +extern void sh_expand_epilogue (bool); extern int sh_need_epilogue (void); extern void sh_set_return_address (rtx, rtx); extern int initial_elimination_offset (int, int); |