[patch committed] Use current_function_saves_all_registers in sh.*

Kaz Kojima kkojima@rr.iij4u.or.jp
Wed Sep 12 06:35:00 GMT 2007


I've committed the attached patch which makes SH back end
to use the new current_function_saves_all_registers variable.
Tested on sh-elf, sh64-elf and sh4-unknown-linux-gnu.

Regards,
	kaz
--
2007-09-12  Kaz Kojima  <kkojima@gcc.gnu.org>

	* config/sh/sh.c (calc_live_regs): Use
	current_function_saves_all_registers instead of
	current_function_has_nonlocal_label.
	(sh_allocate_initial_value): Likewise.
	(sh_get_pr_initial_val): Likewise.
	* config/sh/sh.h (SHMEDIA_REGS_STACK_ADJUST): Likewise.
	* config/sh/sh.md (load_ra): Likewise.

diff -uprN ORIG/trunk/gcc/config/sh/sh.c LOCAL/trunk/gcc/config/sh/sh.c
--- ORIG/trunk/gcc/config/sh/sh.c	2007-09-09 13:51:42.000000000 +0900
+++ LOCAL/trunk/gcc/config/sh/sh.c	2007-09-10 16:52:49.000000000 +0900
@@ -5873,7 +5873,7 @@ calc_live_regs (HARD_REG_SET *live_regs_
   if (TARGET_SHCOMPACT
       && ((current_function_args_info.call_cookie
 	   & ~ CALL_COOKIE_RET_TRAMP (1))
-	  || current_function_has_nonlocal_label))
+	  || current_function_saves_all_registers))
     pr_live = 1;
   has_call = TARGET_SHMEDIA ? ! leaf_function_p () : pr_live;
   for (count = 0, reg = FIRST_PSEUDO_REGISTER; reg-- != 0; )
@@ -8944,7 +8944,7 @@ sh_allocate_initial_value (rtx hard_reg)
 	  && ! (TARGET_SHCOMPACT
 		&& ((current_function_args_info.call_cookie
 		     & ~ CALL_COOKIE_RET_TRAMP (1))
-		    || current_function_has_nonlocal_label)))
+		    || current_function_saves_all_registers)))
 	x = hard_reg;
       else
 	x = gen_frame_mem (Pmode, return_address_pointer_rtx);
@@ -10332,7 +10332,7 @@ sh_get_pr_initial_val (void)
   if (TARGET_SHCOMPACT
       && ((current_function_args_info.call_cookie
 	   & ~ CALL_COOKIE_RET_TRAMP (1))
-	  || current_function_has_nonlocal_label))
+	  || current_function_saves_all_registers))
     return gen_frame_mem (SImode, return_address_pointer_rtx);
 
   /* If we haven't finished rtl generation, there might be a nonlocal label
diff -uprN ORIG/trunk/gcc/config/sh/sh.h LOCAL/trunk/gcc/config/sh/sh.h
--- ORIG/trunk/gcc/config/sh/sh.h	2007-08-25 09:34:15.000000000 +0900
+++ LOCAL/trunk/gcc/config/sh/sh.h	2007-09-10 16:50:37.000000000 +0900
@@ -1365,7 +1365,7 @@ extern char sh_additional_register_names
 #define DEFAULT_PCC_STRUCT_RETURN 0
 
 #define SHMEDIA_REGS_STACK_ADJUST() \
-  (TARGET_SHCOMPACT && current_function_has_nonlocal_label \
+  (TARGET_SHCOMPACT && current_function_saves_all_registers \
    ? (8 * (/* r28-r35 */ 8 + /* r44-r59 */ 16 + /* tr5-tr7 */ 3) \
       + (TARGET_FPU_ANY ? 4 * (/* fr36 - fr63 */ 28) : 0)) \
    : 0)
diff -uprN ORIG/trunk/gcc/config/sh/sh.md LOCAL/trunk/gcc/config/sh/sh.md
--- ORIG/trunk/gcc/config/sh/sh.md	2007-08-03 09:38:47.000000000 +0900
+++ LOCAL/trunk/gcc/config/sh/sh.md	2007-09-10 16:54:24.000000000 +0900
@@ -5023,7 +5023,7 @@ label:
   [(set (match_dup 0) (match_dup 1))]
   "
 {
-  if (TARGET_SHCOMPACT && current_function_has_nonlocal_label)
+  if (TARGET_SHCOMPACT && current_function_saves_all_registers)
     operands[1] = gen_frame_mem (SImode, return_address_pointer_rtx);
 }")
 



More information about the Gcc-patches mailing list