From 6ac9cbc5e873546f17db896f8110367376f69c52 Mon Sep 17 00:00:00 2001 From: Kaz Kojima Date: Wed, 12 Sep 2007 03:46:53 +0000 Subject: [PATCH] sh.c (calc_live_regs): Use current_function_saves_all_registers instead of... * 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. From-SVN: r128408 --- gcc/ChangeLog | 10 ++++++++++ gcc/config/sh/sh.c | 6 +++--- gcc/config/sh/sh.h | 2 +- gcc/config/sh/sh.md | 2 +- 4 files changed, 15 insertions(+), 5 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 125b6dba733..bd983fb65c7 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,13 @@ +2007-09-12 Kaz Kojima + + * 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. + 2007-09-12 Hans-Peter Nilsson * config/cris/t-linux (LIMITS_H_TEST): Only define if not inhibit_libc. diff --git a/gcc/config/sh/sh.c b/gcc/config/sh/sh.c index ad9dd2263cc..36cc9ff036f 100644 --- a/gcc/config/sh/sh.c +++ b/gcc/config/sh/sh.c @@ -5873,7 +5873,7 @@ calc_live_regs (HARD_REG_SET *live_regs_mask) 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 --git a/gcc/config/sh/sh.h b/gcc/config/sh/sh.h index 8f299b75afe..0583a8a447d 100644 --- a/gcc/config/sh/sh.h +++ b/gcc/config/sh/sh.h @@ -1365,7 +1365,7 @@ extern char sh_additional_register_names[ADDREGNAMES_SIZE] \ #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 --git a/gcc/config/sh/sh.md b/gcc/config/sh/sh.md index 426996971ab..591bb709389 100644 --- a/gcc/config/sh/sh.md +++ b/gcc/config/sh/sh.md @@ -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); }")