Patchwork [committed,SH] Fix sh64-elf build failure

login
register
mail settings
Submitter Kaz Kojima
Date Oct. 4, 2012, 3:04 a.m.
Message ID <20121004.120452.131455034.kkojima@rr.iij4u.or.jp>
Download mbox | patch
Permalink /patch/189014/
State New
Headers show

Comments

Kaz Kojima - Oct. 4, 2012, 3:04 a.m.
Hi,

I've committed the patch below to fix sh64-elf build failure.
SHmedia and SHcompact using call cookie require special return insns
and will require an extra work to enable simple_return.  I simply
disable it for these targets ATM.

Regards,
	kaz
--
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.

Patch

Index: gcc/config/sh/sh.md
===================================================================
--- gcc/config/sh/sh.md	(revision 192060)
+++ gcc/config/sh/sh.md	(working copy)
@@ -10460,6 +10460,13 @@ 
   ""
 {
   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"
Index: gcc/config/sh/sh.c
===================================================================
--- gcc/config/sh/sh.c	(revision 192060)
+++ gcc/config/sh/sh.c	(working copy)
@@ -13134,6 +13134,12 @@ 
   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;