From 97b3d0f016d4ce4b973cda213b0cd6835eca6b15 Mon Sep 17 00:00:00 2001 From: "J\"orn Rennecke" Date: Thu, 7 Aug 2003 19:35:52 +0000 Subject: [PATCH] sh.h (CALL_USED_REGISTERS): Include PR_REG and PR_MEDIA_REG. * sh.h (CALL_USED_REGISTERS): Include PR_REG and PR_MEDIA_REG. * sh.c (calc_live_regs): Use sh_pr_n_sets to determine if pr needs saving on SHmedia. From-SVN: r70227 --- gcc/ChangeLog | 6 ++++++ gcc/config/sh/sh.c | 4 ++-- gcc/config/sh/sh.h | 4 ++-- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index d299f564f5b..9568cca24d5 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2003-08-07 J"orn Rennecke + + * sh.h (CALL_USED_REGISTERS): Include PR_REG and PR_MEDIA_REG. + * sh.c (calc_live_regs): Use sh_pr_n_sets to determine if pr + needs saving on SHmedia. + 2003-08-07 Ulrich Weigand * config/s390/s390.md: Replace all occurrences of \\t with \t. diff --git a/gcc/config/sh/sh.c b/gcc/config/sh/sh.c index 8128d4731f8..d64d919fbbc 100644 --- a/gcc/config/sh/sh.c +++ b/gcc/config/sh/sh.c @@ -4848,7 +4848,7 @@ calc_live_regs (live_regs_mask) the initial value can become the PR_MEDIA_REG hard register, as seen for execute/20010122-1.c:test9. */ if (TARGET_SHMEDIA) - pr_live = regs_ever_live[PR_MEDIA_REG]; + pr_live = sh_pr_n_sets (); else { rtx pr_initial = has_hard_reg_initial_val (Pmode, PR_REG); @@ -4867,7 +4867,7 @@ calc_live_regs (live_regs_mask) has_call = TARGET_SHMEDIA ? ! leaf_function_p () : pr_live; for (count = 0, reg = FIRST_PSEUDO_REGISTER - 1; reg >= 0; reg--) { - if ((! TARGET_SHMEDIA && reg == PR_REG) + if (reg == (TARGET_SHMEDIA ? PR_MEDIA_REG : PR_REG) ? pr_live : (interrupt_handler && ! pragma_trapa) ? (/* Need to save all the regs ever live. */ diff --git a/gcc/config/sh/sh.h b/gcc/config/sh/sh.h index cc94be2f740..3ab2120e9a5 100644 --- a/gcc/config/sh/sh.h +++ b/gcc/config/sh/sh.h @@ -926,7 +926,7 @@ extern char sh_additional_register_names[ADDREGNAMES_SIZE] \ Only the lower 32bits of R10-R14 are guaranteed to be preserved \ across SH5 function calls. */ \ 0, 0, 0, 0, 0, 0, 0, 1, \ - 1, 1, 0, 1, 1, 1, 1, 1, \ + 1, 1, 1, 1, 1, 1, 1, 1, \ 1, 1, 1, 1, 0, 0, 0, 0, \ 0, 0, 0, 0, 1, 1, 1, 1, \ 1, 1, 1, 1, 0, 0, 0, 0, \ @@ -946,7 +946,7 @@ extern char sh_additional_register_names[ADDREGNAMES_SIZE] \ /* XD registers. */ \ 1, 1, 1, 1, 1, 1, 0, 0, \ /*"gbr", "ap", "pr", "t", "mach", "macl", "fpul", "fpscr", */ \ - 1, 1, 0, 1, 1, 1, 1, 1, \ + 1, 1, 1, 1, 1, 1, 1, 1, \ /*"rap" */ \ 1, \ } -- 2.30.2