Commit 7d9f9bd1 by Kaz Kojima

sh.c (sh_can_use_simple_return_p): Return false for SHmedia and SHcompact using call_cookie.

	* sh.c (sh_can_use_simple_return_p): Return false for SHmedia
	and SHcompact using call_cookie.
	* sh.md (epilogue): Emit non-inlined return insns for SHmedia
	and SHcompact using call_cookie.

From-SVN: r192061
parent 3f15f285
2012-10-04 Kaz Kojima <kkojima@gcc.gnu.org>
* config/sh/sh.c (sh_can_use_simple_return_p): Return false for
SHmedia and SHcompact using call cookie.
* config/sh/sh.md (epilogue): Emit non-inlined return insns for
SHmedia and SHcompact using call cookie.
2012-10-03 Oleg Endo <olegendo@gcc.gnu.org> 2012-10-03 Oleg Endo <olegendo@gcc.gnu.org>
PR target/51244 PR target/51244
......
...@@ -13134,6 +13134,12 @@ sh_can_use_simple_return_p (void) ...@@ -13134,6 +13134,12 @@ sh_can_use_simple_return_p (void)
HARD_REG_SET live_regs_mask; HARD_REG_SET live_regs_mask;
int d; int d;
/* Some targets require special return insns. */
if (TARGET_SHMEDIA
|| (TARGET_SHCOMPACT
&& (crtl->args.info.call_cookie & CALL_COOKIE_RET_TRAMP (1))))
return false;
if (! reload_completed || frame_pointer_needed) if (! reload_completed || frame_pointer_needed)
return false; return false;
......
...@@ -10460,6 +10460,13 @@ label: ...@@ -10460,6 +10460,13 @@ label:
"" ""
{ {
sh_expand_epilogue (false); sh_expand_epilogue (false);
if (TARGET_SHMEDIA
|| (TARGET_SHCOMPACT
&& (crtl->args.info.call_cookie & CALL_COOKIE_RET_TRAMP (1))))
{
emit_jump_insn (gen_return ());
DONE;
}
}) })
(define_expand "eh_return" (define_expand "eh_return"
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment