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
This commit is contained in:
Kaz Kojima 2012-10-04 03:03:12 +00:00
parent 3f15f285dc
commit 7d9f9bd1e4
3 changed files with 20 additions and 0 deletions

View file

@ -1,3 +1,10 @@
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>
PR target/51244

View file

@ -13134,6 +13134,12 @@ sh_can_use_simple_return_p (void)
HARD_REG_SET live_regs_mask;
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)
return false;

View file

@ -10460,6 +10460,13 @@ label:
""
{
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"